如何使用自定义信息标记或修改.msi二进制文件?
如何为网站用户提供个人下载,以便他们不必在应用程序中再次登录?
一些网站提供个人/自定义/标记的安装程序下载。
当您运行该文件时,可执行对象已经知道您是谁并自动登录。
例如:
- join.me 传递演示者角色的位置,会触发另一方的下载并自动将他们连接到正确的会议
- Spotify有一个下载,不需要你登录。
您可以参数化 MSI 文件,以便可以根据通过msiexec.exe
命令行传递给它的值使用不同的设置进行安装。您启动的安装可以根据您定义的msiexec.exe
开关以静默方式或交互方式运行。
您可以使用Javascript或其他方式直接从网页自动生成有问题的命令行。您还可以使用更高级的选项自定义 MSI:转换。
我不会重写所有内容,而是链接到以前的答案,该答案描述了如何使用在msiexec.exe
命令行设置的公共属性或在安装过程中转换以修改 MSI 文件中的设置:如何更好地利用 MSI 文件(有点长,但第一部分是与您的情况相关的所有内容)。
- 可以使用公共属性自动生成的示例命令行:
msiexec.exe /i "MySetup.msi" /L*v "%TMP%MyLog.log" SERIALKEY="123-456-789" EMAIL="myemail@somedomain.com" LOGINNAME="MyLogin" LOGINPASSWORD="MyPassword"
显然,通过命令行推送密码时要三思而后行。
- 可以使用转换自动生成的示例命令行:
msiexec.exe /i "MySetup.msi" /L*v "%TMP%MyLog.log" TRANSFORMS="MyTransform.mst"
在MyTransform.mst
中,您可以更改和覆盖整个 MSI 文件中的几乎任何内容 - 包括设置属性表中第一个示例的属性。
您可以使用MSI API 自动生成转换本身。有时间我会挖出一个更好的链接。
更新:有一整套示例 VBScripts 展示了如何以各种方式使用 MSI API。widiffdb.vbs展示了如何生成转换(以及其他内容)。还有一个专门用于创建转换的示例:wigenxfm.vbs。
这些脚本应随 Visual Studio 和 SDK 一起安装。也许通过电子邮件向朋友(一个很有耐心的人!)安装好这个,如果你赶时间,让他们为你压缩,或者自己安装整个shebang。
MSI API可以使用Javascript访问,但是我遇到了一些笨拙的问题,这些问题有点太详细了,无法解释。VBScript 用于测试对象模型,因此似乎工作得更好。
应该可以从URL调用Windows安装程序。所以他们告诉我。祝你好运:-)。大约 17 年前我尝试过并放弃了它。也许现在更好。
还有一些类似的答案(这个问题不断出现):
- 如何使用 SCCM 服务器推送带有参数的 MSI。
- 如何更好地利用MSI文件。
- 转换(mst)相对于MSI文件的优势。