是否可以使用 wix bootstrapper 自动下载先决条件

Posted

技术标签:

【中文标题】是否可以使用 wix bootstrapper 自动下载先决条件【英文标题】:is it possible to automatically download Prerequisites using wix bootstrapper 【发布时间】:2014-05-28 11:08:01 【问题描述】:

我已经使用 wix 创建了一个设置,甚至还创建了自定义对话框。现在我需要 mySetup 来自动下载我的应用程序的先决条件。似乎只能通过引导程序完成。我什至也创建了一个引导程序文件,但是我不想在引导程序中附加 Prerequisites setup (ie) .exe 文件来安装 Prerequisites 。相反,我需要 直接从 Web 下载并需要自动安装当我的设置运行时。

wix 可以吗?我是 wix 新手,如果可能的话,请分享一些来源??

提前致谢

【问题讨论】:

【参考方案1】:

只需使用 SourceFile 即可避免任何不便。

<ExePackage 
              Id="InstallJava"
              DetectCondition='NOT Installed AND JAVACURRENTVERSION>="1.6"'
              InstallCondition='NOT VersionNT64'
              SourceFile="..\dep\jre-7u55-windows-i586.exe"  
              InstallCommand='/s'
              Compressed="no"
              Permanent="yes"
              PerMachine="yes"
              Vital="no"
              DownloadUrl="http://javadl.sun.com/webapps/download/AutoDL?BundleId=86895"
              />

下载 prereq.exe 并使用 SourceFile 属性来引用它。 WiX会自动计算Hashcode等

但如果您更倾向于使用 RemotePayLoad,请使用 heat.exe 来收集这些数据。

<wix-folder>/bin/heat payload d:\prereq.exe -out d:\remote.xml

【讨论】:

自动下载的文件会在哪个位置? 你能告诉我锄头用热吗 @user3611781 下载您想要获取的包(如 prereq.exe)。然后使用我在回答中提到的命令。您可以在 WIX 安装文件夹 C:\Program Files (x86)\WiX Toolset v3.7 下找到 heat.exe。在文本编辑器中打开 remote.xml 以获取 RemotePayload 信息。 @user3611781 WIX 将自动下载并安装先决条件。您不必关心下载位置。您可以使用 InstallCommand 来传递其他参数。【参考方案2】:

EXEPACKAGE - 您可以使用 DownloadUrl 属性。

DownloadUrl - 用于下载包的 URL。以下 支持替换:0 被包 ID 替换。 1 是 替换为有效负载 ID。 2 被负载文件名替换。

RemotePayload - 描述有关远程文件有效负载的信息 在构建捆绑包时不可用。父母 使用时必须指定DownloadUrl,不能指定SourceFile 这个元素。

例如:

<PackageGroup 
            Id="Netfx4Full">
            <ExePackage 
                Id="Netfx4Full" 
                Cache="no" 
                Compressed="no" 
                PerMachine="yes" 
                Permanent="yes" 
                Vital="yes"
                DownloadUrl="http://go.microsoft.com/fwlink/?LinkId=164193/dotNetFx40_Full_x86_x64.exe" >

             <RemotePayload
               ProductName="dotNetFx40_Full_x86_x64.exe" 
                Description="Dotnet 4.0"
                Size="3961856" 
                Version="4.0.5022.0" />
             </ExePackage>
        </PackageGroup>

【讨论】:

似乎在这里我们还需要在我们的解决方案中添加源文件(即)所需的 .exe 文件。?? 如果系统中已经安装了所需的设置意味着会发生什么。? @以赛亚4110 在 ExePackage 元素中添加 InstallCondition 属性。 我真的是 wix 新手?你能指导我吗? 所需的设置显然会创建一些注册表项,对吗?在安装条件中检查这些注册表项。如果它存在,则不需要安装,否则您需要。我正在尽我所能地指导你,我认为你有足够的信息来解决这个问题。

以上是关于是否可以使用 wix bootstrapper 自动下载先决条件的主要内容,如果未能解决你的问题,请参考以下文章

Wix Bootstrapper 清单或提升的自定义操作

WiX Burn Bootstrapper 不调用 OnDetectRelatedBundle

在 WIX Bootstrapper 中检查 .NET 4.0 框架时遇到问题

如何通过 Wix Bootstrapper 在修改模式下添加包?

如何确定 WIX Bootstrapper 中是不是安装了 dotnet 和 VSTORuntime

我可以使用 WiX 创建一个 MSI 来升级使用 Burn Bootstrapper 安装的应用程序吗?