Я пытаюсь запустить консольное приложение, написанное на C # .NET 2.0, с помощью специального действия в моем проекте установки WiX MSI, например:
<CustomAction Id="INSTALL_TEXT" Impersonate="yes" Return="check" Execute="immediate" BinaryKey="TextCreator.exe" ExeCommand="C:\test.txt -i"/>
<CustomAction Id="UNINSTALL_TEXT" Impersonate="yes" Return="check" Execute="immediate" BinaryKey="TextCreator.exe" ExeCommand="C:\test.txt -u"/>
<Binary Id="TextCreator.exe" SourceFile="C:\MyInstaller\Test\Tools\TextCreator.exe"/>
<InstallExecuteSequence>
<Custom Action="INSTALL_TEXT" After="InstallFiles">NOT Installed AND NOT PATCH</Custom>
<Custom Action="UNINSTALL_TEXT" After="RemoveFiles">Installed AND REMOVE="ALL"</Custom>
</InstallExecuteSequence>
Но я всегда получаю сообщение об ошибке в журнале:
MSI (7C: C0) [14: 03: 01: 026]: Примечание: 1: 1721 2: INSTALL_TEXT 3: C: \ Windows \ Installer \ MSI9938.tmp 4: C: \ test.txt -i
Ошибка 1721. Проблема с этим пакетом установщика Windows. Не удалось запустить программу, необходимую для завершения этой установки. Обратитесь в службу поддержки или к поставщику пакета. Действие: INSTALL_TEXT, расположение: C: \ Windows \ Installer \ MSI9938.tmp, команда: C: \ test.txt -i
MSI (7C: C0) [14: 03: 07: 374]: Продукт: консольное приложение Text Creator - Ошибка 1721. Проблема с этим пакетом установщика Windows. Не удалось запустить программу, необходимую для завершения этой установки. Обратитесь в службу поддержки или к поставщику пакета. Действие: INSTALL_TEXT, расположение: C: \ Windows \ Installer \ MSI9938.tmp, команда: C: \ test.txt -i
Действие завершено 14:03:07: INSTALL_TEXT. Возвращаемое значение 3.
Я включил в приложение MANIFEST для запуска с правами администратора:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
Когда я запускаю установщик из командной строки, где консольное приглашение уже запущено с правами администратора, как установка, так и удаление работают нормально! Но когда я запускаю MSI с помощью двойного щелчка, меня просят запустить установку (до продолжения индикатора выполнения), если я хочу запустить с правами администратора. Затем моя установка прерывается с сообщением об ошибке, как указано в журнале выше.
Что приводит к этой проблеме? Я использую WiX 3.5.2519.0 с MSI 2.0 в моем проекте. Моя установка работает на Windows 7 Professional (x64). У меня установлены все фреймворки от 2.0, до 3.0, 3.5 до 4.0!
РЕДАКТИРОВАТЬ: В Windows XP с установленным .NET Framework 2.0 все работает просто отлично!
РЕШЕНИЕ:
<CustomAction Id="QtExecInstallText" Impersonate="no" Return="check" Execute="deferred" BinaryKey="TextCreator.exe" ExeCommand="C:\test.txt -i"/>
<CustomAction Id="QtExecUninstallText" Impersonate="no" Return="check" Execute="deferred" BinaryKey="TextCreator.exe" ExeCommand="C:\test.txt -u"/>
<Binary Id="TextCreator.exe" SourceFile="C:\MyInstaller\Test\Tools\TextCreator.exe"/>
<InstallExecuteSequence>
<Custom Action="QtExecInstallText" After="InstallFiles">NOT Installed AND NOT PATCH</Custom>
<Custom Action="QtExecUninstallText" After="RemoveFiles">Installed AND REMOVE="ALL"</Custom>
</InstallExecuteSequence>
=> При связывании пароля -ext "% WIX% \ bin \ WixUtilExtension.dll" с light.exe!