WiX безусловное выполнение приложения

ало Все.

У меня двойная проблема. У меня есть проект WiX, над которым я работал, и мне было поручено заставить его выполнять выполнение программы независимо от того, нажимает ли пользователь отмену, прерывается установка (через уже существующую версию) или пользователь успешно завершает установку.

В настоящее время я использую встроенную систему диагностики:

    <UIRef Id="WixUI_InstallDir" />

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

<InstallExecuteSequence>
  <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
  <RemoveExistingProducts After="InstallInitialize" />
  <Custom Action="PropertyAssign"  Before="InstallFinalize">NOT Installed</Custom>
  <Custom Action="LaunchFile" After="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>


    <CustomAction Id='PropertyAssign' Property='PathProperty' Value='[SourceDir][DRIVEREXEC]' />
    <CustomAction Id="LaunchFile" Property="PathProperty" ExeCommand='/S' Return="asyncNoWait" />

Два настраиваемых действия используются для запуска приложения после завершения установки. Из-за этого я не могу назначить два настраиваемых действия, когда программа существует. OnExit = "error" вызывает исключение, если два настраиваемых действия имеют одинаковые настройки.

Как безоговорочно выполнить приложение, местоположение которого неизвестно, но предполагается, что оно находится в том же каталоге, что и установщик?

Я благодарю вас за ваше время и добрые ответы


person Hewlett123    schedule 13.08.2010    source источник


Ответы (1)


Вы можете проверить документацию WiX о том, как запустить приложение после установки: http://wix.sourceforge.net/manual-wix3/run_program_after_install.htm. Это даст вам указатели на набор диалоговых окон WiX UI, которые вы можете настроить при необходимости.

Кроме того, SourceDir очень сложно использовать: http://robmensching.com/blog/posts/2010/1/26/StackOverflow-what-does-NameSourceDir-refer-to. В идеале вам следует запускать установленное приложение, а не с носителя.

person Rob Mensching    schedule 13.08.2010
comment
Роб, спасибо за ответ. Я нахожусь в неудачном положении, потому что мне нужно работать с одним или несколькими исполняемыми файлами, которые «могут» поставляться в комплекте с носителем. Если они есть, я должен их запустить. Чтобы бороться с этим, я использовал SourceDir по завершении вместе с параметром, чтобы указать, где я нахожусь. Мой финал был в случае отмены, прерывания и т. Д. - исполняемые файлы все еще срабатывают. В вашем совете упоминается, как установить флажок в любой ситуации (прерывание и т. Д.), Но он не говорит мне, как сообщить установщику, где он находится. Извините, я новичок в этом, и, возможно, я это пропустил. - person Hewlett123; 19.08.2010
comment
Я не слежу за этой частью вашего вопроса, но он не говорит мне, как сообщить установщику, где он находится. Можете уточнить. - person Rob Mensching; 20.08.2010
comment
Извините за задержку, я ценю вашу помощь и время, которое вы проводите со мной. В некоторой степени мне нужно, чтобы установщик знал о своем местонахождении. Установщик должен знать, где он находится на диске. Вот почему я использую SourceDir. (Установщик говорит) Я знаю, что нахожусь в c: \ temp \ install, теперь запустите installer2 из c: \ temp \ install. С другой стороны, если кто-то переместит установщик, скажем, в c: \ place, я бы хотел, чтобы установщик затем повернулся и попытался запустить installer2 из c: \ place. - person Hewlett123; 26.08.2010