我从使用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
中复制?
答案 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"/>