从MSBuild bootstrapper启动x86或x64 MSI - newb

时间:2013-10-18 21:15:56

标签: bootstrapper

我没有太多的编程背景,但是我已经使用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

1 个答案:

答案 0 :(得分:0)

第4行的开头BootstrapperApplicationRef元素是一个空元素 - 它不应该以{{1​​}}结尾。

您用什么来编辑文件?将文件粘贴到Notepad ++中并启用XML突出显示可以很快识别出问题。