Можно ли выполнить в WiX настраиваемое действие, которое является управляемым файлом .EXE?

Я пытаюсь выполнить настраиваемое действие, написанное на C # (.NET 3.5), которое зависит от одной библиотеки DLL (также C # 3.5). Я включил в установку и .EXE, и .DLL, и убедился, что они копируются в место установки. Однако каждый раз, когда я пытаюсь запустить настраиваемое действие, я получаю следующую ошибку:

Начало действия 7:21:16: InstallFinalize. Ошибка 1721. Проблема с этим пакетом установщика Windows. Программа, необходимая для завершения этой установки, не может быть запущена. Обратитесь в службу поддержки или к поставщику пакета. Действие: UpgradeTo022, расположение: C: \ Program Files \ Test \, команда: Upgrade-0.2.2.EXE MSI (s) (CC: 38) [07: 21: 19: 061]: Продукт: Тест - Ошибка 1721 Возникла проблема с этим пакетом установщика Windows. Программа, необходимая для завершения этой установки, не может быть запущена. Обратитесь в службу поддержки или к поставщику пакета. Действие: UpgradeTo022, расположение: C: \ Program Files \ Test \, команда: Upgrade-0.2.2.EXE

Настраиваемое действие определяется следующим образом:

<CustomAction Id="UpgradeTo022"
Directory="INSTALLLOCATION"
Impersonate="no"
Execute="deferred"
ExeCommand='Upgrade-0.2.2.EXE'>

Примечание. Настраиваемое действие должно запускаться с повышенными привилегиями, т.е. с атрибутами отложенного выполнения и Impersonate = "no".

Он расписан следующим образом:

<InstallExecuteSequence>
     <Custom Action="UpgradeTo022" Before="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>

Файлы устанавливаются следующим образом:

<Component Id="CMP_UpgradeCommon" Guid="8ECF5076-732E-4010-A33B-BE362D818949" Win64="yes">
  <File Id="FILE_UpgradeCommonDLL"
   Source="..\Upgrade\UpgradeCommon\bin\Debug\UpgradeCommon.dll" Vital="yes"/>
</Component>

Я видел некоторые упоминания о том, что запуск управляемых EXE-файлов является проблемой с Custom Actions и MSis, но нет никаких реальных окончательных ответов.

Я также пробовал просто запустить очень простой .EXE без зависимостей в качестве настраиваемого действия, и мне не повезло.

Поскольку я новичок в создании пакетов установщика, очень вероятно, что я либо пытаюсь сделать что-то, что не поддерживается, либо упускаю что-то простое.

Заранее благодарим за любые подсказки в выяснении этого.

JT.


person JTBoulder    schedule 07.06.2012    source источник


Ответы (1)


К сожалению, это могло быть несколько вещей. Во-первых, вы уверены, что .net 3.5 установлен на целевом компьютере? Исходя из этого, можете ли вы запустить exe на целевой машине?

Еще одна вещь, на которую следует обратить внимание, это то, что отложенные действия выполняются в контексте системной учетной записи, поэтому, если исполняемый файл требует доступа к профилю по какой-либо причине, это приведет к сбою. У меня возникла эта проблема при попытке сгенерировать сертификат как часть моей установки. Я целую вечность чесал голову над этим, и в конце концов мне пришлось запустить PowerShell с переключателем -RunAs, который затем запустил скрипт для вызова exe. Возможно, стоит проверить, нормально ли работает приложение под системной учетной записью (http://www.tech-recipes.com/rx/1288/how-to-run-applications-in-the-local-system-account- lsa /)

person caveman_dick    schedule 08.06.2012