2015-01-09 72 views
0

我有wix bootstapper,其中包含4个组件:树exe程序包和一个msi程序包。我想用下面(仅适用于主代码)引导程序做MSI软件包的主要更新:通过Wix引导程序更新MSI程序包

<Bundle Name="$(var.Name)" Version="$(var.Version)" Manufacturer="$(var.Manufacture)" UpgradeCode="$(var.UpgradCode)" Copyright="$(var.Copyright)"> 
.... 
<Chain> 
     <!-- TODO: Define the list of chained packages. --> 
     <PackageGroupRef Id="NetFx4Full"/> 
     <PackageGroupRef Id="PostgreSQL"/> 
     <PackageGroupRef Id="AdobeReader"/> 
     <PackageGroupRef Id="Application"/> 
</Chain> 
.... 
<PackageGroup Id="Application"> 
    <MsiPackage Id="MyApplication" 
       SourceFile=".\MSI_File\application.msi" 
       DisplayInternalUI="yes" 
       Permanent="no" 
       Vital="yes" 
       Visible="no"/> 
others packages... 
</PackageGroup> 

和MSI代码:

<Product Id="*" 
    Name="$(var.Name)" 
    Language="$(var.InstallerLanguage)" 
    Version="$(var.Version)" 
    UpgradeCode="$(var.UpgradeCode)" 
    Manufacturer="$(var.Manufacture)"> 

<Package Description="$(var.PackageDescritpion)" 
     InstallerVersion="200" 
     Compressed="yes" 
     InstallScope="perMachine" 
     InstallPrivileges="elevated" 
     Platform="x64"/> 

<Media Id="1" Cabinet="contents.cab" EmbedCab="yes" CompressionLevel="high"/> 


<Directory Id="TARGETDIR" Name="SourceDir"> 
</Directory> 

<Feature Id="Complete" 
      Level="1" 
      ConfigurableDirectory="INSTALLDIR"> 
    <ComponentRef Id="Licence"/> 
    <ComponentRef Id="StartMenuFoldersComponent"/> 
    <ComponentRef Id="DatabaseConfigFolder"/> 
    <ComponentGroupRef Id="BinaryFileGroup"/> 
    <ComponentGroupRef Id="DatabaseConfigFileGroup"/> 
    <ComponentRef Id="ApplicationConfigFolder"/> 
    <ComponentRef Id="RemoveFolderOnUninstall"/> 
</Feature> 

<!-- Custom actions--> 
..... 

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallValidate"/> 
    <!--Other custom actions--> 
    ...... 
</InstallExecuteSequence> 

建立我的更新MSI和bootstrapp我设置的情况下(同为msi和bootstrapp)产品版本,例如旧版本为1.0.0.0,较新版本为1.0.1.0。 WIX文档的升级代码保持不变。运行我的更新安装程序后,新版本的msi不是installig,在安装目录中仍旧是旧文件。有谁知道我做错了什么?

@Edit 我也试图通过增加MajorUpgrade元素但引导程序后无法启动MSI:

<Media Id="1" Cabinet="contents.cab" EmbedCab="yes" CompressionLevel="high"/> 
<MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="A later version of  [ProductName] is already installed. Setup will now exit."/> 
<Directory Id="TARGETDIR" Name="SourceDir"/> 

@Edit 引导程序日志:http://wklej.to/Msczq

回答