我正在为我的应用程序创建WiX Bootstrapper(在Window 2012 Server上运行)。我的应用程序需要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的安装非常长),但是当我进行软件更新时,我的引导程序会尝试重新安装软件包。
如何检测是否需要软件包?
答案 0 :(得分:2)
我没有使用此功能,但是您是否调查了
MsuPackage Element
的DetectCondition
属性? 还有一个InstallCondition
属性,您应该 调查。
DetectCondition :“ 一个条件,用于确定目标系统上是否存在该程序包。此条件可以使用内置变量和搜索返回的变量此条件是必需的,因为Windows没有提供检测MsuPackage存在的方法,Burn使用此条件来确定在捆绑操作期间如何处理此软件包;例如,如果此条件为false或被省略并且捆绑正在安装中,Burn将安装此软件包。“
InstallCondition :“ 要在安装软件包之前评估的条件。仅当条件评估为true时,才会安装软件包。如果条件评估为如果为false,并且正在安装,修复或修改捆绑软件,则该软件包将被卸载。“
服务器部署 :为了记录(不要鼓吹太多),但是服务器部署非常危险,您实际上是在处理单点故障(或可恢复)服务器虚拟机-您无疑会使用它进行测试)。
对于服务器安装,我可能会选择检查是否存在此类更新,如果缺少该更新,则中止告诉用户通过Windows Update或其他部署机制(it looks like there is something special about these updates)安装该更新。总体思路是不交付过时的运行时。如果您拥有可靠的下载链接,则可以提供它们。
或者,我以“零散”的形式交付安装程序,其中所有运行时和先决条件都与主应用程序安装程序分开。信不信由你,但我更喜欢一个ZIP文件。然后,我提供一个单页PDF 来描述如何使事情运行,或者我提供到网页的链接(您自己的网页)以及应用程序的部署信息。 。这样,我可以以“可修复”的格式维护安装信息,并在任何新的未决部署策略(-)上更新用户。您当然可以链接到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
,并如上所述获得其“片段”。只需打开一个命令提示符,CD到 setup.exe
所在的文件夹即可。然后指定上面的命令。输出文件夹将包含几个子文件夹,其中包含提取的MSI,MSU和EXE文件以及刻录GUI的清单和资源文件。