【问题标题】:How to add license file dynamically to LicenseAgreement dialog in InstallShield如何将许可证文件动态添加到 InstallShield 中的 LicenseAgreement 对话框
【发布时间】:2017-11-15 03:15:16
【问题描述】:

我有一个基本的 MSI 项目安装程序。当用户运行安装程序时,我想从服务器下载 EULA 文件,然后我想在安装时将其显示在许可协议对话框中。在 InstallScript 安装程序中是可能的。但是如何在基本 MSI 安装程序的 LicenseAgreement 对话框中动态显示 EULA 文件?

【问题讨论】:

  • 通过您的设置下载东西是一个非常糟糕的主意。该设置可能在具有用于 Web 访问的代理服务器的系统上运行,并且通常具有多个防火墙(软件、硬件),也许还有安全软件。所有这些因素都会干扰下载。用户可以在离线时简单地安装(无无线连接)这一事实也是如此。您应该使用不同的方法,也许只是链接到在线许可协议以便打开浏览器。它通常会配置正确的代理设置和硬件详细信息。
  • 此外,您的安装程序也可以在静默模式下运行,并且您绝对不应该在静默安装期间尝试访问 Internet 的任何自定义操作。在静默模式下会跳过整个 GUI,但很容易错误配置自定义操作,这可能会在静默模式下触发运行时错误。

标签: windows-installer installshield eula


【解决方案1】:

您需要一个自定义操作来动态下载富文本,然后使用临时视图更新内存中的 msi 数据库。见:

https://resources.flexera.com/web/pdf/archive/msiaccess.pdf

如果您想使用 C#/DTF,则更像这样:

http://blog.deploymentengineering.com/2008/07/dynamic-windows-installer-ui.html

【讨论】:

  • 感谢克里斯托弗。我已经在 InstallScript CA 中尝试过这个解决方案。我能够阅读特定的富文本,但我无法找到 InstallScript API 来临时更新 MSI DB。甚至我的许可协议也很大。那么将数据写入 MSI DB 的 Text 字段是否有效?
  • 我个人试图避免对每次运行时可能具有不同 EULA 的安装程序发表评论。我个人认为没有人在安装程序中读取任何内容,因此我使 UI 尽可能简单。也许将这个功能从安装程序中移出并进入应用程序会更容易/更好,这样您就可以更轻松地编码并在 eula 更改时更频繁地提示用户。
  • 我同意 Chris 的观点,把它放在应用程序中 - 更好的错误处理和调试功能,即使安装程序是静默运行(企业部署),它也能让用户看到许可协议。我经常建议将功能从设置转移到应用程序,例如licensing(有关详细信息,请参阅链接 - 基本原理与您的 EULA 问题类似)。为避免“推卸责任”——或许可以提议自己在应用程序中进行编码?
  • 在线 EULA 的明显风险(无论是通过设置还是应用程序完成)是通常不能保证您的应用程序在公司网络上的 Internet 访问 -应用程序可能只有 Intranet 访问权限,而浏览器(可能还有一些选定的应用程序)对 Internet 的代理访问权限。请在上面的评论中查看“许可”链接内容中的更新简介。也许从应用程序启动浏览器以查看在线 EULA 是最简单的?但是,您如何保证用户确实看到了它呢?我不是律师 :-)。
猜你喜欢
  • 1970-01-01
  • 2013-11-08
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-06
相关资源
最近更新 更多