【发布时间】:2019-01-21 22:46:26
【问题描述】:
如何将具有特殊唯一生成令牌的配置文件添加到 msi 文件?这个想法是用户注册客户端计算机,安装程序在配置文件中附带唯一值。我已经阅读了有关 msidb.exe 的信息,但我想知道是否有更好、更清洁、更简单的解决方案。有什么想法吗?
【问题讨论】:
如何将具有特殊唯一生成令牌的配置文件添加到 msi 文件?这个想法是用户注册客户端计算机,安装程序在配置文件中附带唯一值。我已经阅读了有关 msidb.exe 的信息,但我想知道是否有更好、更清洁、更简单的解决方案。有什么想法吗?
【问题讨论】:
添加自定义文件:您可以将自定义文件添加到 MSI,有几种方法可以这样做,但它非常复杂且笨重。 Wise 等商业工具(不再可用)提供了添加此类文件的简单方法。您还可以手动编辑 Media 和 Cab 表。我很久以前写了这个答案,并附有一些细节:Adding an external CAB to an MSI with an internal one。
参数化设置:该令牌是某种加密或许可密钥吗?我假设您想为设置提供一些自定义参数?这意味着什么?执照?服务器名称?用户名?网址?或者这是一个为您的用户生成的二进制文件,安装程序无法轻松生成?如果这些只是配置设置,更好的方法可能是使用转换来设置安装参数,或者您可以在通过 msiexec.exe 命令行安装 MSI 时为其提供参数。 使用转换和使用命令行参数 msiexec.exe 都在这里描述:How to make better use of MSI files。 Essentially you set properties that will be inserted into configuration files during installation。本质上,转换是在安装时应用设置的小数据库片段,以使用特定于用户的设置修改原始安装。因此,它本质上就是您所需要的。可能是。原则上,变换也可以自动生成 - 只需付出一些努力和耐心。
MSI 配置:将参数传递到安装过程后,您可以使用内置的轻松将它们写入 INI 文件-在 MSI 构造中。所有主要工具中也有扩展,可让您编写 XML。例如,还有其他几个扩展来设置防火墙选项,天知道是什么。我们在谈论什么样的配置文件?您还可以使用自定义操作在更新系统上的文件和其他内容方面基本上做任何您想做的事情 - 以滚动您自己的解决方案所带来的所有潜在错误为代价。
应用程序:通常最好在安装后使用应用程序本身进行应用程序配置。这可以大大简化调试和支持应用程序的过程,而不是依赖于没有交互式错误消息的“一次性”设置,以便用户向支持人员报告。
总结:所以本质上我的意思是你可以按照你的建议注入文件,你可以通过转换或命令行为设置提供参数在磁盘上写入或生成文件,或者您可以让您的应用程序根据您在应用程序启动期间写入 INI 或 XML 文件的设置生成二进制文件。您还可以通过设置 GUI 而不是通过命令行上的 PUBLIC 属性获取要写入配置文件的自定义值。
一些链接:
【讨论】: