WiX使用Burn将x86和x64的MSI打包成一个无界面的引导程序。

10
我有一个 x64 和 x86 版本的安装程序 .msi,并且希望能够提供一个单一可执行文件,该文件会检查机器的架构并运行相应的 x86/x64 MSI。这些 MSI 基本上是相同的,都会安装相同的 AnyCPU 文件,我将它们捆绑在一个共享的 .cab 文件中,以避免安装程序大小加倍。

到目前为止,我尝试了 WiX Burn,但它会弹出一个 GUI,而我不想要这个(我只想使用 MSI 的 GUI),我尝试使用 /silent 标志禁用 burn GUI,但这会将标志传播到 MSIs,从而禁用所有 MSIs 的 GUI(这不是我想要的)。
我认为我的理解正确,即 Burn 引导程序不存在默认的无 GUI 版本,要创建它,必须自行编辑源代码?这听起来像是一个重大缺陷?
我还尝试了 DotNetInstaller,但其界面令人困惑,还有一些问题。我也尝试了 setupbld,但它不支持具有外部 cab 的 MSIs。
3个回答

10

对于架构检测,您可以在MsiPackage元素中使用InstallCondition属性。

简单来说,尝试:

<MsiPackage SourceFile="..\Example\bin\Release\x86\example.msi" Compressed="no" InstallCondition="NOT VersionNT64" />
<MsiPackage SourceFile="..\Example\bin\Release\x64\example.msi" Compressed="no" InstallCondition="VersionNT64" />

来源: http://wix.sourceforge.net/manual-wix3/wix_xsd_msipackage.htm


1
如其他答案所建议,您可以使用VERSIONNT64变量来检查正在安装的平台。
Wix Burn通过传递命令行参数“-q”来支持无GUI或静默模式。
除此之外,它还支持以下其他参数:
wixstdba仅支持“标准包开关”。
-q, -quiet, -s, -silent = silent install 
-passive = progress bar only install 
-norestart = suppress any restarts 
-forcerestart = restart no matter what (I don't know why this is still around) 
-promptrestart = prompt if a restart is required (default) 
-layout = create a local image of the bootstrapper (i.e. download files so they can be burned to DVD) 
-l, -log = log to a specific file (default is controled by bundle developer) 
-uninstall = uninstall 
-repair = repair (or install if not installed) 
-package,-update = install (default if no -uninstall or -repair) 

在您的计算机上输入wixburnexename /?以获取详细信息。


-4

您可以使用自定义操作和Burn Built-in Variables来检查您是否在X86或x64上运行。基于此,您可以执行/安排操作列表。

<InstallExecuteSequence>
   <Custom Action="Windows32bitInstall" After="InstallFiles">NOT VersionNT64</Custom>
   <Custom Action ="Windows64bitInstall" After="InstallFiles" >VersionNT64</Custom>
   <Custom Action="InstallHelp" After="Windows64bitInstall">NOT Installed</Custom>
</InstallExecuteSequence>

这将以相同的权限执行。

<CustomAction Id="InstallHelp" Directory="ProgramFilesFolder"
          Execute="deferred" Impersonate="no" Return="ignore"
          ExeCommand="[HELPDIR]\help.exe /log" />

1
WIX捆绑程序/引导程序中没有自定义操作。它不是MSI,也没有MSI属性/功能,它是一个可执行文件/应用程序,可以帮助进行链接! - Isaiah4110

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接