如何将6 msi捆绑到一个msi安装程序中

时间:2013-08-22 06:39:22

标签: wix windows-installer bootstrapper dotnetinstaller

我有6个msi,我想捆绑到单个msi包中。这6个是办公室插件,其中3个用于办公室2003,3个用于办公室2007.所以我的单个msi应该只安装3个插件基于办公室的版本。我想在这些msi之前安装一些先决条件。

我尝试使用wix一次创建了一个设置,但是在某个时候同一个项目给出了错误:“错误1未解决的符号'ChainPackageGroup:wwwwww'参考'Bundle:wixB2'一节”。 由wix创建的安装程序能够安装设置但无法卸载它们,可能是卸载需要管理员权限但我无法提供。

我也试过dotnetinstaller,但我找不到如何为我的6位安装程序添加启动条件。 (在dotnetinstaller中的Inatllcheck只检查产品的存在而不是启动条件)如果有人可以告诉我如何添加启动条件,如果Office 2007存在然后安装其他没有,我将能够完成我的项目,如果有人帮助我添加启动条件。​​

那么请告诉我如何创建单个安装程序?

1 个答案:

答案 0 :(得分:0)

我也是Wix的新手。如果您发布代码将有助于解决您的问题。你可以通过以下方法来帮助你。
考虑到用户在他的系统上安装了Office 2007,安装程序应该只安装2007的Add-Ins。并且因为你有可插入的可执行文件Bootstrapper是最好的方法。
对于条件安装,首先需要找到已安装的办公室版本 您可以使用注册表搜索

<util:RegistrySearch Id ="Office2007" Root="HKLM" Key="SOFTWARE\Microsoft\Office\12.0\Word\InstallRoot::Path"/>

这将搜索特定路径。 现在进行安装

<ExePackage Id="2007Addin" SourceFile="your addin path"
        InstallCondition="(Office2007)"/>

还有许多其他有用的论据。通过他们。

示例程序

<?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="WordAddin" Version="1.0.0.0" Manufacturer="NSS" UpgradeCode="51d04319-a135-487c-a4bb-aed77417bda7">
            <BootstrapperApplicationRefId="WixStandardBootstrapperApplication.RtfLicense" />

<util:RegistrySearchRef Id ='Office2007'/>

<--Here Install condition parameter checks if specific key is found if found installs packege -->
<--You can use NOT Office2007found this will install only if registry key not found-->
<Chain>
  <MsiPackage Id ="officeAddin" Compressed='yes' Cache='yes' Name='office addin' SourceFile='officeadd.msi' InstallCondition='Office2007found' DisplayInternalUI='yes'/>
</Chain>
</Bundle>

<!--Registry Search to find Which Office Version Is installed (incase registry search failed change keys according)-->
<Fragment>
<util:RegistrySearch Id="office2007" Root="HKLM" Key="SOFTWARE\Microsoft\Office\12.0" Value="Version" Variable="Office2007found"/>
<--Below condition is only to check whether registry search is successful or not. remove it if not required-->
<bal:Condition Message="Failed to search regKey">Office2007found</bal:Condition>
</Fragment>
</Wix>
  • 供您参考

wix installer 3.7 bootstrapper Registry search
How to detect installed version of MS-Office?
http://www.c-sharpcorner.com/UploadFile/cb88b2/installing-prerequisites-using-wix-bootstrapper-project-and/
Launch Condition to Detect Office 2010 Applications