WIX 运行第二个应用程序然后第一个完成 [英] WIX run second application then first is done

查看:32
本文介绍了WIX 运行第二个应用程序然后第一个完成的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了 wix 安装程序的问题.我的想法是创建 .msi 安装程序,然后用户安装 .msi ,setup.exe 运行,然后用户关闭此 setup.exe(安装程序将安装 microsoft add-in)第二个(图片)将依次打开.现在,下面的代码在复选框同时勾选两个应用程序后运行.是否只有在关闭第一个时才能运行图片?请建议!这是我的代码:

I stuck on problem with wix installer. My idea is create .msi installer, and then user install .msi , the setup.exe runs , and then user close this setup.exe(setup will install microsoft add-in) the second one(picture) will be opened sequently. Now this code below runs after checkbox is ticked two aplications both at once. Is the way to run picture only when closed first one ? Please suggest! Here is my code:

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product Id="*" UpgradeCode="b288bcab-ad20-47d5-8d2c-1111111111" Version="$(var.ProductVersion)" Language="1033" Name="Program" Manufacturer="Program LTD">
    <Package InstallerVersion="300" Compressed="yes"/>
    <Media Id="1" Cabinet="myapplication.cab" EmbedCab="yes" />

    <Property Id="ALLUSERS" Value="2" /> 
    <Property Id="MSIINSTALLPERUSER" Value="1" />

    <!-- Step 1: Define the directory structure -->
    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="ProgramFilesFolder">
        <Directory Id="InstallFiles" Name="Launch Program">
        </Directory>
      </Directory>
    </Directory>

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

  <!-- set property and launch the first exe -->
  <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="PrepareLaunchApplication1">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
  <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication1">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>

  <!-- set property and launch the second exe -->
  <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="PrepareLaunchApplication2">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
  <Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="LaunchApplication2">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
</UI>
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Program" />

<CustomAction Id="PrepareLaunchApplication1" Property="WixShellExecTarget" Value="[#Setup.exe]" />
<CustomAction Id="LaunchApplication1"
    BinaryKey="WixCA"
    DllEntry="WixShellExec"
    Impersonate="yes" 
    Return="check"
    Execute="immediate"/>

<CustomAction Id="PrepareLaunchApplication2" Property="WixShellExecTarget" Value="[#picture.png]" />  
<CustomAction Id="LaunchApplication2" 
    BinaryKey="WixCA" 
    DllEntry="WixShellExec"
    Impersonate="no"
   />

    <!-- Step 2: Add files to your installer package -->
    <DirectoryRef Id="InstallFiles">
      <Component Id="Setup.exe">
        <File Id="Setup.exe" KeyPath="yes"
              Name="Setup.exe" Source="$(var.AddinFiles)"></File>
      </Component>
 <Component Id="picture.png">
        <File Id="picture.png" KeyPath="yes"
              Name="picture.png" Source="$(var.AddinFiles)"></File>
      </Component>  
    </DirectoryRef>


    <!-- Step 3: Tell WiX to install the files -->
    <Feature Id="MainApplication" Title="Main Application" Level="1">

      <ComponentRef Id="Setup.exe" />
      <ComponentRef Id="picture.png" />
    </Feature>
  </Product>
</Wix>

推荐答案

使用自定义操作启动安装是一种非常不明智的尝试.它很可能只会给你带来问题,而且这不是好的设计.

Kicking off installs using custom actions is a very ill-advised endeavor. It is likely to cause you only problems, and it is just not good design.

按顺序运行安装程序是 WiX 的引导程序功能 刻录 用于 - 它允许您以指定的顺序运行 MSI 文件和 EXE 文件.

Running installers in sequence is what the WiX's bootstrapper feature Burn is for - it allows you to run MSI files and EXE files in a specified sequence.

我相信您可以在这里找到有关 Burn 如何工作的工作示例:https://github.com/frederiksen/Classic-WiX-Burn-Theme.本质上,它是一种不同类型的 WiX 源文件,具有专为引导程序创建而设计的自己的架构.

I believe you can find a working sample of how Burn works here: https://github.com/frederiksen/Classic-WiX-Burn-Theme. Essentially it is a different type of WiX source file with its own schema designed for bootstrapper creation.

这篇关于WIX 运行第二个应用程序然后第一个完成的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆