【发布时间】:2019-06-25 10:25:53
【问题描述】:
我有一个 WiX 安装程序项目。根据要求,我必须在运行时从 Web 服务器下载 EULA 并在安装时显示它。我们怎样才能做到这一点?
我尝试使用自定义操作,但没有运气。
【问题讨论】:
-
您可以更改应用程序以在启动时执行此操作吗?可能带有指向包含最新版本的 URL 的链接? (避免因防火墙问题导致下载失败)
标签: wix windows-installer
我有一个 WiX 安装程序项目。根据要求,我必须在运行时从 Web 服务器下载 EULA 并在安装时显示它。我们怎样才能做到这一点?
我尝试使用自定义操作,但没有运气。
【问题讨论】:
标签: wix windows-installer
我在大约 11 年前写了一篇博客文章,描述了这一点:
http://blog.iswix.com/2008/07/dynamic-windows-installer-ui.html
基本上 MSI 有这里讨论的临时数据的概念。
https://docs.microsoft.com/en-us/windows/desktop/msi/sql-syntax
我没有对此进行测试,但似乎 UPDATE 不支持 TEMPORARY 但 INSERT INTO 支持。
概念是您构建您的 MSI 并将模板 RTF 放置在 ScrollableText 控件中。定义控件条件,以便在设置属性时控件不可见。
然后在 WelcomeDlg 之前安排的自定义操作中,您从 Web 服务下载替换 RTF,并使用替换 RTF 和控制条件在对话框上动态定义控件,以便在设置属性时控件可见。最后设置属性以用另一个控件覆盖一个控件。
但老实说……我不确定我是否会费心去做这件事。首先,有一些方法可以使用超链接从安装程序中移除 EULA 和/或从安装程序中删除 EULA,并让应用程序在第一次运行时显示它,就像 Stain 建议的那样。
最后还有一些考虑因素,例如静默安装和离线安装,这会引起与此设计的其他问题。
也就是说……如果你真的想这样做……那就是这样做的。
【讨论】: