Пользовательское действие установщика Wix - PullRequest
0 голосов
/ 18 сентября 2018

Я делаю установщик, который включает в себя несколько проектов. Моя установка устанавливает несколько компонентов и DLL.

Мое требование для настраиваемого действия должно быть выполнено только одно после успешного завершения установки Проблема в том, что мой исполняемый файл зависит от библиотеки DLL, входящей в пакет MSI.

Пользовательское действие выглядит следующим образом: -

<InstallExecuteSequence>
  <Custom Action='LaunchFile' After='InstallFinalize'>NOT Installed</Custom>
</InstallExecuteSequence>
<CustomAction Id='LaunchFile' FileKey='Migration_and_SQL_Utility.exe' ExeCommand="configurationmanager" Return="asyncNoWait" Impersonate="no" />

Я также пытался настроить это, а также прочитал много документации и решений, но все еще не могу понять, почему мое приложение не запускается.

При запуске в любое время Before = InstallFinalize или After = InstallFiles , это всегда будет показывать мне ошибку компилятора JIT для зависимости DLL. И когда After = InstallFinalize , тогда он просто не запускает мой exe-файл. Я также пытался вставить другие переменные с другой конфигурацией, такие как Execute = deferred и Return = check , но они дают мне другие ошибки, такие как следующие из Event Viewer: -

Продукт: EasyReports - Ошибка 1721. Существует проблема с этим пакетом установщика Windows. Программа, необходимая для эта установка для завершения не может быть запущена. Обратитесь в службу поддержки Поставщик персонала или упаковки. Действие: LaunchFile, расположение: C: \ Program Файлы (x86) \ EasyReports \ EasyReports \ Migration and SQL Utility.exe, команда: configurationmanager

Есть ли что-то, чего я не понимаю в Wix Installer или что я упускаю. Я довольно новичок в WiX, но я успешно выполнил настройку для другого проекта и с тем же Custom Action, чтобы выполнить исполняемый файл после того, как установка была завершена, и она работала просто отлично.

1 Ответ

0 голосов
/ 18 сентября 2018

Мое решение будет:

Добавьте Migration and SQL Utility.exe к своим компонентам:

<Component Id="Migration and SQL Utility.exe" Guid="SOME GUID">
    <File Id="Migration and SQL Utility.exe" Source="YOUR SOURCE" KeyPath="yes" Checksum="yes"/>
</Component>

Далее определите ваше пользовательское действие:

<CustomAction Id="LaunchFile"                  
          Execute="immediate" 
          Impersonate="no"
          Return="asyncNoWait"
          FileKey="Migration and SQL Utility.exe"
          ExeCommand="" />

Вызовите действие:

<InstallExecuteSequence>
   <Custom Action='LaunchFile' After='InstallFinalize'>NOT Installed</Custom>
</InstallExecuteSequence>
...