在ExitDialog

时间:2016-09-13 12:44:07

标签: wix windows-installer

我从使用WiX开始,我在定制ExitDalog方面遇到了一些麻烦。

起初我想要的是:

  • 我想为我的应用程序创建一个设置

  • 设置完成后,我想提出两个选择:

    • 启动应用程序(新安装的application.exe)

    • 启动可选设置(我的应用程序需要根据用户的相机安装某些驱动器)

  • 可选设置是.exe。它应该放在setup.msi旁边,但不要复制到我的应用程序文件夹中。

我创建了目录:

<Fragment>
  <Directory Id="TARGETDIR" Name="SourceDir">
    <Directory Id="ProgramMenuFolder">
      <Directory Id="ApplicationProgramsFolder" Name="$(var.compagny)"/>
    </Directory>
    <Directory Id="DesktopFolder" SourceName="Desktop"/>
    <Directory Id="ProgramFilesFolder">
      <Directory Id="COMPAGNYFOLDER" Name="$(var.compagny)">
        <Directory Id="INSTALLFOLDER" Name="$(var.product)">            
          <Directory Id="fr" Name="fr"/>   
        </Directory>
      </Directory>
    </Directory>
  </Directory>
</Fragment>

如何添加对.exe的引用?我做了:

<Component Id="ProductComponent" Guid="{2C26B191-6654-4405-8E78-F8B6EFEDC9FC}" Directory="INSTALLFOLDER">
  <File Id="uEye64_47100_WHQLexe" Source="./Resources/uEye64_47100_WHQL.exe" KeyPath="yes" Checksum="yes" Compressed="no" Vital="no"/>
</Component>

但是uEye64_47100_WHQL.exe文件是在INSTALLFOLDER中复制的(我不想要),并且安装程序将路径与[application] / bin / Release(不知道)混合在一起。在日志文件中有:

  

无法打开文件:C:\ dev \ MyApplication \ main \ SetupProject \ bin \ Release \ MyCompagny \ MyProduct \ uEye64_47100_WHQL.exe用于计算其哈希值。错误:3

我像这样调用.exe(此文件需要提升权限)

<!-- Set checkbox for launch install uEye -->
<Property Id="WIXUI_EXITDIALOGUEYECHECKBOXTEXT" Value="Launch install uEye"/>
<CustomAction Id="SetExecUEye" FileKey="uEye64_47100_WHQLexe" ExeCommand="" Return="asyncNoWait" Impersonate="no" Execute="deferred"/>

<UI>
  <UIRef Id="WixUI_Custom"/>      
  <Publish Dialog="MyExitDialog"
           Control="Finish" 
           Event="DoAction"                
           Value="SetExecUEye">WIXUI_EXITDIALOGUEYECHECKBOX = 1 and NOT Installed</Publish>
</UI>

如何定义我在设置后调用uEye64_47100_WHQL.exe但未在INSTALLFOLDER中复制?

1 个答案:

答案 0 :(得分:2)

如果您不想将文件复制到安装位置,只需运行它,您可以将其包含为二进制源而不是组件。这样,它被打包在安装程序中,但未在安装时部署(可能仅限于某些临时文件夹)。

<Binary Id="uEye64_47100_WHQLexe" SourceFile="./Resources/uEye64_47100_WHQL.exe" />
<CustomAction Id="InstalluEye64exe" BinaryKey="uEye64_47100_WHQLexe" ExeCommand=""  Execute="deferred" Return="ignore" Impersonate="no"/>