0

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

我尝试使用 wix 来创建一个设置,但有时同一项目给出了错误:“错误 1 ​​Unresolved reference to symbol 'ChainPackageGroup:wwwwww' in section 'Bundle:wixB2'”。由 wix 创建的设置能够安装设置但无法卸载它们,可能是卸载需要管理员权限但我无法提供。

我也尝试了 dotnetinstaller,但我找不到如何为我的 6 个安装程序添加启动条件。(dotnetinstaller 中的 Inatllcheck 仅检查产品是否存在安装而不是启动条件)如果有人可以告诉我如何添加启动条件,例如如果存在 office 2007 则安装其他不安装,如果有人帮助我,我将能够完成我的项目添加启动条件。

那么你能告诉我我应该怎么做才能创建一个安装程序吗?

4

1 回答 1

0

我也是 Wix 的新手。如果您发布代码将有助于解决您的问题。您可以通过以下方法可能对您有所帮助。
考虑到用户在他的系统上安装了 office 2007,您的安装程序应该只安装 2007 的加载项。因为您有加载项的可执行文件,所以 Bootstrapper 是最好的方法。
对于条件安装,您首先需要找到已安装的 office 版本。
您可以使用注册表搜索来执行此操作

<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
如何检测已安装的 MS-Office 版本?
http://www.c-sharpcorner.com/UploadFile/cb88b2/installing-prerequisites-using-wix-bootstrapper-project-and/
检测 Office 2010 应用程序的启动条件

于 2013-08-27T05:05:50.993 回答