Невозможно подписать импортированную сборку msi.dll с помощью tlbimp - PullRequest
0 голосов
/ 21 апреля 2010

Это кажется таким тривиальным, но я не могу заставить его работать ..

У меня есть оболочка msi.dll (с именем Interop.WindowsInstaller.dll), которую мне нужно подписать. Способ сделать это - подписать его при импорте (этот конкретный случай даже задокументирован в MSDN: http://msdn.microsoft.com/en-us/library/zec56a0w.aspx).

НО - независимо от того, как я это делаю (без ключевого файла, без добавления "/ задержки"), размер сгенерированной сборки всегда составляет 36 864 байта и при просмотре В свойствах DLL нет вкладки «Цифровые подписи» (само собой разумеется, что DLL НЕ подписана).

Что мне здесь не хватает ?? (... ПОМОГИТЕ! ...)

1 Ответ

0 голосов
/ 22 апреля 2010

[ Примечание : В конце концов я получил подсказку от Карла Цикмунда в этой теме , которая помогла мне разгадать тайну. Я вставлю свой ответ сюда - для большего блага].

Итак, я использовал следующую строку для подписи при импорте сборки:

tlbimp C: \ WINDOWS \ system32 \ msi.dll /out:Interop.WindowsInstaller.dll /keyfile:MyKey.snk

Затем я скопировал файл в соответствующее место и собрал проект, но каждый раз при сбое сборки возникала следующая ошибка: Не удалось создать сборку - у ссылочной сборки Interop.WindowsInstaller нет строгого имени .

Я думал, что проблема была в строке tlbimp, но после прочтения ответа Карела Зикмунда и проверки того, что DLL имеет строгое имя (используя sn -vf Interop.WindowsInstaller ), я обнаружил проблему.

Добавление ссылки на COM-объект «Библиотека объектов установщика Microsoft Windows» фактически вставило блок кода в файл .csproj. Я не осознавал этого, но этот блок вызывал регенерирование DLL-файла с нуля при каждой сборке проекта . Разумеется, сгенерированный файл больше не назывался со строгим именем.

Способ, который я решил, заключался в том, чтобы удалить ссылку на «Библиотеку объектов установщика Microsoft Windows» из проекта и добавить прямой файл ссылку на импортированное (и уже подписанное) Interop. WindowsInstaller.dll file.

...