在 Window 安装程序 XML 中使用 Bootstrapper 制作单个 Bundle 项目

Posted

技术标签:

【中文标题】在 Window 安装程序 XML 中使用 Bootstrapper 制作单个 Bundle 项目【英文标题】:make single Bundle project using Bootstrapper in Window installer XML 【发布时间】:2013-05-24 12:14:39 【问题描述】:

我已经为 Outlook 加载项完成了一个项目。然后我使用 WIX 为这个插件创建了一个安装文件。但是我们也需要解决依赖关系,所以我使用 wix 创建了一个引导程序项目,它首先检查依赖关系,然后使用安装文件安装加载项。它运作良好。 问题 有没有办法将这两个设置项目合并到一个项目中。 ? 这是我的引导程序代码。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
     xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
    <Bundle Name="OutlookReport" Version="1.0.0.0" Manufacturer="Tzunami" UpgradeCode="93597211-ba8c-44f0-9f73-18e7afc47d85">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" >
      <bal:WixStandardBootstrapperApplication LicenseFile="Resource\\EULA.rtf" LogoFile="Resource\\TzunamiLogo.png"
                                              SuppressOptionsUI="yes"/>
    </BootstrapperApplicationRef>
    <util:ComponentSearch Id="SearchOutlook2010" Guid="CFF13DD8-6EF2-49EB-B265-E3BFC6501C1D" Variable="Outlook2010"/>
    <util:ComponentSearch Id="SearchOutlook2010PIA" Guid="1D844339-3DAE-413E-BC13-62D6A52816B2" Variable="Outlook2010PIA"/>
    <util:ComponentSearch Id="SearchOutlook2013" Guid="F9F828D5-9F0B-46F9-9E3E-9C59F3C5E136" Variable="Outlook2013"/>
    <bal:Condition Message="This Setup need Outlook 2010 or 2013 to be installed">
      Outlook2010 OR Outlook2010PIA OR Outlook2013
    </bal:Condition>

    <util:RegistrySearch Id="VSTORuntimeTest" Root="HKLM" Key="SOFTWARE\Microsoft\VSTO Runtime Setup\v4R\" Value="VSTORFeature_CLR40" Variable="VSTORFeature"/>
    <util:RegistrySearch Id="VSTORuntimeVersionV4R" Root="HKLM" Key="SOFTWARE\Microsoft\VSTO Runtime Setup\v4R\" Value="Version" Variable="VSTORVersionV4R"/>
    <util:RegistrySearch Id="VSTORuntimeVersionV4" Root="HKLM" Key="SOFTWARE\Microsoft\VSTO Runtime Setup\v4R\" Value="Version" Variable="VSTORVersionV4"/>

    <Chain>
      <PackageGroupRef Id="NetFx40Web"/>
      <ExePackage Id="Downloading_Microsoft_VSTORuntime" SourceFile="Resource\\vstor_redist.exe" Permanent="yes" Vital="yes" Cache="no" Compressed="no"
                  DownloadUrl="http://go.microsoft.com/fwlink/?LinkId=158917"
                  PerMachine="yes"
                  InstallCommand="/q /norestart"
                  DetectCondition="VSTORFeature"
                  InstallCondition="NOT VSTORFeature OR NOT (VSTORVersionV4R >=v10.0.40303) OR NOT (VSTORVersionV4 >=v10.0.21022)" />
      <MsiPackage SourceFile="$(var.SetupOutlookReports.TargetPath)" Vital="yes" Compressed="yes" Id="OutlookReports" />
    </Chain>
    </Bundle>
</Wix>

【问题讨论】:

这通常不会完成,需要一些工作。为什么? 我的老板要我将这些安装文件合并到一个安装文件中。我也尝试过,但没有这样做,因为无法在 Bootstrapper 的链中添加 vsto(加载项的输出)。如果有任何方法,请建议我必须做什么样的工作才能实现它。感谢您的回复 我想我误解了。我在想您想将两个 .wixproj 文件重写为一个 .wixproj 文件。你的意思是你希望 vstor_redist.exe 像 .msi 一样嵌入到引导程序 .exe 中?请更全面地解释您想要的结果。 你是对的。我想将这两个 .wixproj 合并到单个项目中,而不是像 vstor_redist.exe 这样的设置文件。有什么办法吗? 这是XY-Problem吗?根据设计,WiX 引导程序是一个单独的项目,与某些人可能习惯的 Visual Studio Bootstrapper 不同。您的问题真的与 WiX 引导程序如何安装有关吗?例如。为包创建一个添加/删除程序条目? 【参考方案1】:

您可以将一个引导程序链接到另一个引导程序中。只需在你的 exepackage 中将 Compressed="no" 修改为 Compressed="yes",这将嵌入到当前项目中。

【讨论】:

感谢您的回复,但这不是我想要的。我想将这两个 .wixproj 合并到单个 .wixproj 项目中。

以上是关于在 Window 安装程序 XML 中使用 Bootstrapper 制作单个 Bundle 项目的主要内容,如果未能解决你的问题,请参考以下文章

仿 window对象 confirm方法

spring boo的简单搭建(eclipse+springboot + redis + mysql + thymeleaf)

Android 数据绑定,从函数调用中设置 xml 样式

spring-boo hello world程序

如何更改 XML 属性

window2012上查看vs2015的第一次安装日期