WiX 在安装过程中将 msiexec 安装日志保存为捆绑包的一部分

Posted

技术标签:

【中文标题】WiX 在安装过程中将 msiexec 安装日志保存为捆绑包的一部分【英文标题】:WiX save msiexec install log during installation as part of a bundle 【发布时间】:2013-09-27 17:32:10 【问题描述】:

我正在运行 Visual Studio 2010 和 WiX 3.7。

我已成功创建了一个 WiX 项目,该项目分发我的 XLL 并具有将 XLL 注册到 Excel 的自定义操作。我们计划通过 .NET 网页为我们的用户分发 XLL,该网页带有用户可以单击的按钮链接。

我一直在寻找如何获取我的 WiX 项目并将安装日志文件(使用 MSIEXEC 参数)保存到公司目录下程序文件的示例。我需要创建一个引导程序项目来执行此操作,以便文件可以作为安装的一部分分发,这是否正确?

如果是这样,我有以下问题:

    如何在引导程序项目中指定输出目录? 由于我的 WiX 项目产生 MSI 输出,是否可以在引导程序项目中使用 ExePackage(而不是 MsiPackage)有一个链?我问这个是因为这似乎是拥有 IntallCommand 的唯一方法(否则我会使用 MsiPackage)。 InstallCommand 的参数是否与从命令行运行 msiexec 的参数相同? 如果软件被卸载,是否会删除日志文件? 我会在引导程序项目中引用 MSI WiX 项目吗?如果是这样,我能否为 MSI 项目使用变量(即,如果 MSI 项目名称是 MSIPROJ,那么参考变量将是 ($var.MSIPROJ)? 我能否像在常规 WiX 设置项目中那样指定输出目录?

如果引导程序项目不是解决方案,我将如何实现目标?

编辑 1:

我能够创建一个创建安装日志的引导程序项目(默认在临时目录中)。这带来了一个全新的对话框。

我的问题如下:

    引导程序项目生成的对话框能否反映 MSI项目中的对话框设置(即)?

    资源(即 EULA.rtf、Icon.ico、Dialog.jpg 和 Banner.jpg) 是否像在 WiX 设置项目中一样指定?

    <?xml version="1.0" encoding="UTF-8"?>
    <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
    <Bundle Name="Name" 
          Version="1.0.0.0" 
          Manufacturer="Company" 
          DisableModify="yes"
          UpgradeCode="71515514-5c35-4a2f-a782-fe91bf2a5943"
          Compressed="yes">
        <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
    
        <Chain>
      <PackageGroupRef Id="InstallerPackage"/>
        </Chain>
    </Bundle>
    <Fragment>
      <PackageGroup Id="InstallerPackage">
        <MsiPackage SourceFile="$(var.ExcelAddInDeploy.TargetPath)" Compressed="yes" EnableFeatureSelection="no" Vital="yes" DisplayInternalUI="yes">
          <MsiProperty Name="MSC" Value="[MSC]" />
        </MsiPackage>
      </PackageGroup>
    </Fragment>
    </Wix>
    

谢谢,

【问题讨论】:

【参考方案1】:

为了回答我的问题,下面给出了抑制 EULA 并显示正确图像的方法。

<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Name="Name" 
      Version="1.0.0.0" 
      Manufacturer="Company" 
      DisableModify="yes"
      UpgradeCode="insert GUID here"
      Compressed="yes">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense" >
  <bal:WixStandardBootstrapperApplication
    SuppressOptionsUI="yes"
    LogoFile="C:\Path\Logo.jpg"
    LicenseUrl=""
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" />
</BootstrapperApplicationRef>

    <Chain>
      <PackageGroupRef Id="InstallerPackage"/>
    </Chain>
</Bundle>
  <Fragment>
    <PackageGroup Id="InstallerPackage">
      <MsiPackage SourceFile="$(var.ExcelAddInDeploy.TargetPath)" Compressed="yes" EnableFeatureSelection="no" Vital="yes" DisplayInternalUI="yes">
        <MsiProperty Name="MSC" Value="[MSC]" />
      </MsiPackage>
    </PackageGroup>
  </Fragment>
</Wix>

【讨论】:

以上是关于WiX 在安装过程中将 msiexec 安装日志保存为捆绑包的一部分的主要内容,如果未能解决你的问题,请参考以下文章

如何在升级过程中运行捆绑包时,如何在WIX(Windows安装程序xml)引导程序项目中将按钮文本更改为“升级”?

如何在 WiX 安装程序中将应用程序添加为防火墙例外

自动化 wix 小更新和小升级

如何使用 WiX 创建事件日志源

Wix-使用属性名称作为值时无法写入 XML 文件

如何在wix中将属性传递给回滚自定义操作?