Wix - как запустить exe-файлы после установки из установленного каталога?

Я использую программу, которая устанавливается с помощью wix. (Не знаю, актуально ли это, но это программа на C#)

Я хочу запустить exe-файл, который был установлен msi-файлом, но местоположение установки мне неизвестно, так как пользователь выбирает путь установки.

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

хотя это не часть вопроса, я также был бы рад увидеть некоторый пример запуска exe-файла из абсолютного местоположения, так как я новичок в wix и делаю все это в первый раз.

2 ответов


это может быть достигнуто с помощью расширений WIX. The жирный/курсив текст ниже будет обрабатывать случай нахождения точного местоположения вашего EXE:)

Шаг 1: добавьте библиотеки расширений в свой проект

если вы используете WiX в командной строке, вам нужно добавить в командные строки candle и light следующее:

-ext WixUIExtension -ext WixUtilExtension

если вы используете Visual Studio вы можете добавить расширения с помощью диалогового окна Добавить ссылку:

Right click on your project in Solution Explorer and select Add Reference...
Select the WixUIExtension.dll assembly from the list and click Add
Select the WixUtilExtension.dll assembly from the list and click Add
Close the Add Reference dialog

Шаг 2: Добавьте пользовательский интерфейс в установщик

минимальная последовательность пользовательского интерфейса WiX включает в себя базовый набор диалогов, который включает в себя готовый диалог с дополнительным флажком. Чтобы включить последовательность в свой проект, добавьте следующий фрагмент в любом месте <Product> элемент.

<UI>
    <UIRef Id="WixUI_Minimal" />
</UI>

чтобы отобразить флажок на последнем экране установщика, включите следующий фрагмент в любом месте внутри the <Product> элемент:

<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch My Application Name" />

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

Шаг 3: Включите пользовательское действие

пользовательские действия включены в проект WiX с помощью элемента. Запуск приложения выполняется с помощью пользовательского действия WixShellExecTarget. Сказать установщика Windows о пользовательском действии и для установки его свойств включите следующее в свой проект в любом месте <Product> элемент:

<Property Id="WixShellExecTarget" Value="[#myapplication.exe]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />

элемент свойства задает WixShellExecTarget расположение установленного приложения. Wixshellexectarget-это идентификатор свойства, которое пользовательское действие wixshellexec ожидает установить в местоположение файла для запуска. *

свойство Value использует специальный символ # для скажите Wix, чтобы посмотреть полный установленный путь к файлу с идентификатором myapplication.исполняемый.


элемент CustomAction включает действие в установщике. Ему присваивается уникальный идентификатор, а свойства BinaryKey и DllEntry указывают сборку и точку входа для настраиваемого действия. Свойство Impersonate указывает установщику Windows выполнить пользовательское действие от имени устанавливающего пользователя.

Шаг 4: запустите пользовательский действие

просто включая пользовательское действие, как в шаге 3, недостаточно, чтобы заставить его работать. Установщику Windows также необходимо сообщить, когда должно быть запущено пользовательское действие. Это делается с помощью <Publish> элемент, чтобы добавить его в действия, выполняемые при нажатии пользователем кнопки Готово на последней странице диалогов пользовательского интерфейса. Элемент публикации должен быть включен в элемент с шага 2 и выглядит следующим образом:

<Publish Dialog="ExitDialog"
    Control="Finish" 
    Event="DoAction" 
    Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>

диалоговое окно "Свойства" задает диалоговое окно, к которому будет присоединено Пользовательское действие, в данном случае-ExitDialog. Свойство Control указывает, что кнопка Finish в диалоговом окне запускает пользовательское действие. Свойство Event указывает, что пользовательское действие должно выполняться при нажатии кнопки, а свойство Value указывает пользовательское действие, включенное в Шаг 3. Условие на элементе предотвращает выполнение действия, если флажок из шага 2 не был установлен, и приложение было фактически установлено (в отличие от быть извлеченным или отремонтированным).

, проверьте эту ссылку для деталей. как запустить exe после установки. Я скопировал его здесь в интересах других, ищущих тот же ответ.


ответ Isaiah4110-не лучший способ, Если вам не нужен и пользовательский интерфейс.

самый простой способ выполнить цель exe-файла, которую вы устанавливаете через msi, произведенную Wix, - это пользовательское действие типа 18 (идентифицирующее действие FileKey), вот полный пример:

<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
  <Component Id="TargetProgram" Guid="f757ff43-0266-483a-8749-ec796cba4b25" >
    <File Id="EXE" Source="C:\SetupProject\Includes\TargetProgram.exe" />
  </Component>
</ComponentGroup>

<CustomAction Id="EXECUTE_AFTER_FINALIZE"                  
              Execute="immediate" 
              Impersonate="no"
              Return="asyncNoWait"
              FileKey="EXE"
              ExeCommand="" />

<InstallExecuteSequence>
  <Custom Action="EXECUTE_AFTER_FINALIZE" After="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
</Fragment>