我可以将 ClickOnce 应用程序捆绑到 WiX 引导程序中吗?如何?

Can I bundle a ClickOnce application into a WiX bootstrapper? How?

长话短说,我雇主的一个客户有一个 aaS 平台,该平台依赖于一款名为 ClickOnce 应用程序的软件。这个特定的应用程序由第 3 方软件开发人员开发,并授权给我雇主的客户公司。它还恰好有大量 prerequisite/dependency 应用程序需要安装才能运行,但没有作为 ClickOnce 安装的一部分进行部署。重要的是,因为它是由第三方开发并获得许可的,所以无法对应用程序本身进行任何更改。

到目前为止,实际在端点上安装应用程序是由客户公司通过提供预映像计算机来处理的,或者当他们的客户希望使用他们自己的硬件时,为他们的客户服务代表提供一个大的 zip 文件,其中包含他们必须在要用作其服务端点的任何计算机上手动 运行 一堆 .bat 脚本。批处理脚本基本上完成引导程序的工作并安装先决条件,进行必要的系统配置更改和检查,然后调用 ClickOnce 应用程序安装程序。

正如预期的那样,他们不喜欢这个解决方案,并且想要一个实际的安装程序,所以我已经开始使用 WiX/Burn 创建一个引导程序,但我现在陷入了如何包含我的引导程序项目中的 ClickOnce 应用程序。网上好像找不到这方面的文档,提示问题:

我可以将 ClickOnce 应用程序捆绑到 WiX 引导程序中吗?怎么样?

如果有所不同,ClickOnce 应用程序是从客户公司的服务器之一发布的,因此我可以完全访问 ClickOnce 清单和所有 .deploy 文件。

母猪耳朵做不成丝荷包。我认为您能做的最好的事情就是为特定版本的 ClickOnce 安装程序制作依赖项安装程序。没有人应该期望应用程序的未来版本会有相同的依赖关系。

(不过,到那时,他们可能会通过包含依赖项来修复他们的 ClickOnce 安装程序。或者,放弃他们难以放入 ClickOnce 的依赖项,比如 Windows 的过时版本所需的依赖项。 )

安装依赖项后,您可以让引导程序启动应用程序,这将安装或更新它。 (从逻辑上讲,这遵循链。)

<Variable Name="LaunchTarget" Value="http://example.com/path/product.application"/>

稍微备份一下,您可以可以 创建一个包含所有 ClickOnce 文件的 MsiPackage,并为 LaunchTarget 使用 "file://" URI。这将需要您重建和重新部署每个新版本(破坏 ClickOnce 的性质),但会将您与未经测试的应用程序更新隔离开来。