我没有太多的编程背景,但是我已经使用Wix构建了几年的基本安装,通常包含带有图标文件的浏览器快捷方式(桌面快捷方式只需打开32位Internet Explorer到特定的URL)。使用我的安装程序的客户通常不知道他们的系统,现在看来我可以创建一个将运行2个.msi文件中的一个的引导程序,一个用于x86&一个用于x64。问题是Wix帮助文档假设有一定程度的关于编程和/或Wix的知识,我需要“for dummies”级别的帮助。使用Rob对这里早期帖子的回答(标题相似)和另一个网站上的帖子的代码片段,我在.wxs中有这个:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<Bundle Name="Intermountain SecureAccess Desktop Icon Installer" Version="1.0.0.0" Manufacturer="Intermountain Healthcare" UpgradeCode="61b75a8f-67f6-43a1-beb9-1a0be426b5a6">
<BootstrapperApplicationRef Id='WixStandardBootstrapperApplication.HyperlinkLicense' />
<Payload SourceFile="86IHCSAHCO.msi"/>
<Payload SourceFile="64IHCSAHCO.msi"/>
<Payload SourceFile="C:\Program Files (x86)\WiX Toolset v3.7\SDK\Microsoft.Deployment.WindowsInstaller.dll"/>
</BootstrapperApplicationRef>
<Chain>
<PackageGroupRef Id='Netfx4Full' />
<MsiPackage SourceFile="IHCSAHCO.msi" Id="InstallationPackageId" Cache="yes" Visible="no"/>
<MsiPackage InstallCondition='NOT VersionNT64' SourceFile='86IHCSAHCO.msi' />
<MsiPackage InstallCondition='VersionNT64' SourceFile='64IHCSAHCO.msi' />
</Chain>
</Bundle>
</Wix>
目标是创建一个名为IHCSAHCO.msi的.msi(或.exe),它包含2个msi包86IHCSAHCO.msi&amp; 64IHCSAHCO.msi然后根据环境简单地运行一个或另一个。当我在其中运行批处理文件(称为Burn.wxs)时......
set WIX_ROOT=%programfiles(x86)%\WiX Toolset v3.7\bin
del /q /f *.wixobj *.msi
call "%WIX_ROOT%\candle.exe" Burn.wxs
call "%WIX_ROOT%\light.exe" Burn.wixobj -sice:ICE38
pause
......这是错误:
Burn.wxs C:\ PATH \ Burn.wxs(8):错误CNDL0104:不是有效的源文件; detail:第3行第4位的'Bundle'开始标记与'BootstrapperApplicationRef'的结束标记不匹配。第8行,第7位。
我觉得我很亲近,希望你们中的一个人可以快速查看代码并提出建议。非常感谢......
谢谢! RHH
答案 0 :(得分:0)
第4行的开头BootstrapperApplicationRef
元素是一个空元素 - 它不应该以{{1}}结尾。
您用什么来编辑文件?将文件粘贴到Notepad ++中并启用XML突出显示可以很快识别出问题。