Пользовательские действия установщика WIX (CA), для которых требуется внешняя библиотека, не могут ее найти - PullRequest
1 голос
/ 29 декабря 2010

У меня есть установщик WIX, который вызывает два пользовательских действия C #.

Первый запускает подпрограмму для загрузки сеанса WIX со значениями по умолчанию в приглашениях GUI для настроек приложения.Затем GUI запрашивает у пользователя во время установки новые значения, которые сохраняют предоставленные настройки для сеанса.Это работает очень хорошо, и затем пользователю показываются подсказки во время запуска установщика.

Однако после InstallFinalize должно быть выполнено другое настраиваемое действие, чтобы принять эти сохраненные настройки и записать их в базу данных и реестр.У меня есть внешняя библиотека, которую я написал, которая обрабатывает соединение с базой данных, и это настраиваемое действие пытается загрузить ее и использовать, отказав со следующей ошибкой:

Exception thrown by custom action:
System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation. ---> System.IO.FileNotFoundException: Could not load file or assembly 'myCompany.PortalLib, Version=2.9.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified.
File name: 'myCompany.PortalLib, Version=2.9.0.0, Culture=neutral, PublicKeyToken=null'
   at WIXCustomActions.CustomActions.SetBCAConfigOptions(Session session)

Подробности:

  • Проект VS, содержащий функции настраиваемого действия, ссылается на myCompany.PortalLib.
  • код настраиваемого действия csharp имеет директиву «using myCompany.PortalLib».
  • Установщик WIX, который блокирует эту проблему, ссылается на myCompany.PortalLib.
  • Я даже пытался добавить копию скомпилированного файла myCompany.PortalLib.dll в установщик WIX, но безрезультатно.
  • команда makefxca ссылается (/ r) на myCompany.PortalLibФайл .dll вместе с выходом microsoft.deployment.windowsinstaller.dll при сборке проектом Custom Action и при запуске показывает, что он включен в выходной пакет.

Необходимо получитьнастраиваемые действия для использования myCompany.POrtalLib для возможности записи в базу данных сервера ...

  • UPDATE: Я попытался включить файл .dll в WIX вместе с упакованным .dll для пользовательских действий и сослаться на него внутри XML как таковой (добавив «[» для угловых скобок HTML):

    [Binary Id = "myCompany.PortalLib.dll" SourceFile = "myCompany.PortalLib.dll" /]

... и я ВСЕ ЕЩЕ получаю ошибку "Не удалось загрузить файл или сборку"выше: (.

1 Ответ

3 голосов
/ 29 декабря 2010

Ну, я тоже это исправил!

Я заметил, что когда я запустил команду упаковки с помощью makefxca, я упаковывал dll для пользовательских действий, dll для установщика windows и customaction.config.Когда я добавил путь к действительной dll для myCompany.PortalLib.dll вместе с этими тремя, когда пришло время выполнять функцию, она работала как чемпион ... Так что добавьте все зависимые внешние dll в вашу упакованную DLL-библиотеку пользовательских действийс makefxca для включения внешних DLL для использования с вашими пользовательскими действиями.

...