WiX Bootstrapper - 安装 MS KB 包

WiX Bootstrapper - Install MS KB package

我正在为我的应用程序创建一个 WiX 引导程序(运行 在 Window 2012 服务器上)。我的应用程序需要 Visual C++ 2015、KB2919355 和 KB2919442。

所以我为两个包创建了部件:

<!-- Update for windows server 2012 : KB2919442 -->
<PackageGroup Id="KB2919442">
  <MsuPackage Cache="no"
              Compressed="no"
              PerMachine="yes"
              Permanent="yes"
              Vital="yes"
              Name="Redist\KB2919442-x64.msu"
              SourceFile=".\Resources\Windows8.1-KB2919442-x64.msu"
              DownloadUrl="https://download.microsoft.com/download/C/F/8/CF821C31-38C7-4C5C-89BB-B283059269AF/Windows8.1-KB2919442-x64.msu"
              InstallCommand="/install">
  </MsuPackage>
</PackageGroup>

<!-- Update for windows server 2012 : KB2919355 -->
<PackageGroup Id="KB2919355">
  <MsuPackage Cache="no"
              Compressed="no"
              PerMachine="yes"
              Permanent="yes"
              Vital="yes"
              Name="Redist\KB2919355-x64.msu"
              SourceFile=".\Resources\Windows8.1-KB2919355-x64.msu"
              DownloadUrl="https://download.microsoft.com/download/2/5/6/256CCCFB-5341-4A8D-A277-8A81B21A1E35/Windows8.1-KB2919355-x64.msu"
              InstallCommand="/install">
  </MsuPackage>
</PackageGroup>

效果很好(700Mo KB2919355 的安装时间很长)但是当我进行软件更新时,我的引导程序会尝试重新安装软件包。

如何检测是否需要软件包?

I haven't used this feature, but did you investigate the DetectCondition attribute of the MsuPackage Element? There is also the InstallCondition attribute which you should investigate.

DetectCondition: "确定包是否存在于目标系统上的条件。这个条件可以使用内置变量和搜索返回的变量。这个条件是必要的,因为 Windows 没有提供检测 MsuPackage 是否存在的方法。Burn 使用这个条件来确定在捆绑操作期间如何处理这个包; 例如,如果此条件为假或省略并且正在安装包,Burn 将安装此包。"

InstallCondition: "安装包之前要评估的条件。只有满足以下条件才会安装包条件计算结果为真。如果条件计算结果为假,并且正在安装、修复或修改包,则包将被卸载。"


Server Deployment: 备案(不多说教),但是server deployment是很危险的,你本质上是在交易具有单点故障(或可恢复的服务器虚拟机——您无疑将其用于测试)。

对于服务器安装,我可能会选择检查是否存在此类更新,如果缺少更新,则中止告诉用户通过 Windows 更新或其他部署机制安装更新(it looks like there is something special about these updates).总体思路是不交付过时的运行时。如果你有可靠的下载 links 你可以提供它们。

或者,我交付设置 "in pieces",所有运行时和先决条件与主应用程序安装程序分开。信不信由你,但我更喜欢 ZIP 文件。然后我提供 单页 PDF 描述如何获取东西 运行,或者我提供 a link 到网页 (您自己的网页),其中包含应用程序的部署信息。这样我就可以以 "hotfixable" 格式维护安装信息,并在任何新的未决部署疯狂时更新用户 :-)。当然,您可以 link 为 PDF。 And crucially you can maintain appropriate download links for the prerequisites - if this is something you have the resources to do.


刻录捆绑包提取物

这是一个技术花絮。您现在可以按如下方式从 WiX 包中提取内容(您需要安装 WiX 工具包 - 不幸的是 - 为了使 dark.exe 可用 - 供阅读此文的其他用户使用:download WiX toolkit here):

dark.exe -x outputfolder setup.exe

我会将其添加到您的文档中 - 这样您的用户就可以反汇编您的 setup.exe 并获得其 "pieces",如上所述。只需打开命令提示符,CD 到 setup.exe 所在的文件夹。然后指定上面的命令。输出文件夹将包含几个子文件夹,其中包含提取的 MSI、MSU 和 EXE 文件以及 Burn GUI 的清单和资源文件。