2012-06-07 1 views
1

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

Начало действия 7:21:16: InstallFinalize. Ошибка 1721. Существует проблема с этим пакетом установщика Windows. Не удалось запустить программу, необходимую для завершения этой установки. Обратитесь к вашему персоналу службы поддержки или поставщику пакета. Действие: UpgradeTo022, местоположение: C: \ Program Files \ Test \, команда: Upgrade-0.2.2.EXE MSI (ы) (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> 

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

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

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

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

JT.

ответ

0

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

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