2015-07-10 2 views
0

У меня есть .exe встроенный в мой установщик MSI, который я хотел бы как-то вызвать непосредственно у установщика, прежде чем произойдет действие «InstallFiles».WIX Installer - Возможно вызвать пользовательское действие .exe Перед `InstallFiles`?

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

<CustomAction Id="LaunchInstallManager_TryUninstall" Return="ignore" Directory="INSTALLFOLDER" Execute="deferred" Impersonate="no" ExeCommand="&quot;[#fil713F8F6A7BC9B98857D779B9B29873E1]&quot; /someargument"></CustomAction> 

<Custom Action="LaunchInstallManager_TryUninstall" Before="InstallFiles">NOT Installed</Custom> 

Но при взгляде на журналы, похоже, что это (пытается быть вызван) от установки пункта назначения.

Возможно ли такое?

ответ

1

Возможно, но по-другому. Тип пользовательского действия «запускать EXE» всегда будет искать исполняемый файл в целевой системе. Таким образом, если ваш исполняемый файл установлен вместе с вашим приложением, это не вариант.

Вот еще один способ:

  • Во-первых, автор ваш EXE как <Binary> вместо этого.

    Это легко, как <Binary Id="MyEXE" SourceFile="PATH\TO\EXE" />.

  • Добавить DLL отложенное пользовательское действие, которое будет извлекать двоичный файл, запускать его с параметрами и очищать после этого.

    This post может дать вам представление о том, как извлечь двоичный код с помощью C# и DTF. Кроме того, если вам нужно передать параметры, убедитесь, что вы сделали это the right way for deferred custom action.

Наконец, следует помнить, что каждый отложенный настраиваемое действие (то есть один, чтобы изменить целевую систему) должны иметь соответствующую rollback action. This article может дать вам несколько советов о том, как проверить поведение и поведение ваших пользовательских действий.