Такой вопрос: каким образом можно установить dll-библиотеку на устройство так, что бы она работала не находясь в одной паке с программой (как, например, работаю библиотеки Microsoft.NET по типу System.Windows.Forms.dll и т.д.). Цель: создание exe-шника для установки библиотеки.
С помощью
System.IO.Directory.Move
можно перенести данные, в
C:\Windows\Microsoft.NET\assembly\GAC_MSIL
для каждого объекта предусмотренная папка с версией, например
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Windows.Forms\v4.0_4.0.0.0__b77a5c561934e089
и если я хочу создать свою папку
C:\Windows\Microsoft.NET\assembly\GAC_MSIL\Sqrt\'здесь должна быть версия'
то как поступить?
Если есть другие способы работы, только приветствую.
Нашёл следующую информацию:
"Если этот dll файл предназначен для использования многими программами, его следует скопировать в системную папку операционной системы C:\\Windows\\System32.
После копирования dll файла в системную папку, его необходимо зарегистрировать в реестре, чтобы каждая программа знала, что такой файл имеется. Зарегистрировать dll файл можно несколькими способами, но мы рассмотрим только самый простой. За регистрацию dll файлов отвечает сервер регистрации утилита regsvr32.exe. Самый простой способ зарегистрировать dll файл заключается в следующем: необходимо в строке «Поиск» в меню «Пуск» набрать название утилиты и полное название регистрируемой dll через пробел «regsvr32 filename.dll», после чего нажать «Enter» и посмотреть результат регистрации dll в появившемся окошке.
Для Windows 64 регистрация dll файла будет немного отличаться. Все из-за того, что в Win64 имеется еще одна системная папка с файлами dll «C:\\Windows\\SysWOW64». Для регистрации dll файла в 64-х разрядной Windows необходимо вместе с названием утилиты regsvr32.exe указывать и полный путь расположения регистрируемого dll файла «regsvr32.exe C:\\Windows\\SysWOW64\\filename.dll»."
Но выдаёт ошибку (в обоих случаях) с моей библиотекой на PascalABC.Net
Возможно я не правильно написал библиотеку, хотя в коренной папку PABCWork.NET всё отлично работает.
Эта информация по подписи сборки не достоверна.
Сначала я создал пару ключей, но вот уже с -Vr (проверкой регистрации) пошла ошибка:
Далее, перейдя на сайт, я нашёл, что сохранять пару ключей можно в двух файлах: с открытым и закрытым ключёй, а ещё создавать какой-то контейнер для этих же ключей. Но это не помогло разобраться полностью. Так и не заработала.
Спасибо за консультацию! Хоть пока нет ключа компиляции, но я, по крайней мере, не буду пытаться найти способ. Но мне кажется вполне хватит поместить мою dll в рабочую папку PABCWork.NET, и будет работать. Так же возможно будет работать, если на диск C: скинуть (он же считается как папка при поиске dll?). Мне бы хотелось избавиться от привязаности dll к папке с программой, которую она использует. Буду пока довольствоватся тем, что есть.
Здесь описываются классы для регистрации сборок. Возможно поможет для развития темы.
p.s. Это не все классы, если включить аннотации и написать System.Reflection.. то вылезут подсказки, в которых есть другие классы.
p.p.s (system.messaging тут не причём)