我有我的安装程序.msi的x64和x86版本,而想要发送一个只检查机器架构并运行x86 / x64 MSI的可执行文件。 MSI基本相同,它们安装相同的AnyCPU文件,我将其捆绑在一个共享的.cab文件中,以免使安装程序的大小加倍。
到目前为止,我已经尝试过WiX Burn,它会弹出一个我不想要的GUI(我只想使用MSI GUI),我尝试通过/ silent标志禁用刻录GUI - 这会传播此标志到MSI所以它禁用了MSI的所有GUI(不是我想要的)。
当我说没有默认的No-GUI版本的Burn bootstrapper 时,我认为我是正确的,要创建一个你必须自己编辑源代码?这听起来像是一个巨大的缺失特征?
我也尝试过DotNetInstaller,它有一套令人困惑的用户界面问题。我也尝试过使用外部驾驶室不支持MSI的setupbld。
答案 0 :(得分:9)
对于体系结构检测,您可以使用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 :(得分:1)
正如其他答案所示,您可以使用VERSIONNT64变量来检查您正在安装的平台。
Wix Burn通过传递命令行参数“-q”来支持NO-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 /?要获取有关您机器的详细信息。
答案 2 :(得分:-3)
您可以使用自定义操作和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" />