windows - 如何在不使用命令的情况下安装带参数的 msi
问题描述
我有一个 msi 需要在安装时传递一些参数,我使用命令行传递参数,如下所示:
msiexec /i installer.msi ALLUSERS=1 AUTOUPGRADEENABLED=0
对于用户,从命令行安装太复杂,所以我想构建一个安装程序,它将安装 msi双击安装程序后的参数,任何人都知道怎么做。
解决方案
应用程序启动代码:我总是喜欢在每个用户的应用程序启动期间提出问题并设置选项。我发现这是最灵活、最健壮、最容易测试并且最适合 QA 人员测试新版本的方法。
请注意,这最适合用户特定的设置。对于共享设置,您通常需要写入 HKLM,然后您需要 setup-elevation 或以管理员权限运行应用程序。
默认值:如上所述,您可以在构建 MSI 时将属性值默认为属性表中的正确值。那么你可能不需要通过命令行设置任何东西?
可以使用 Orca(免费 MSI 编辑器)重新保存已完成的 MSI,但您不应更改已完成的 MSI(可能已签名并重新保存会破坏它)。
正式批准的参数编辑机制称为转换 - 安装时应用的主 MSI 数据库更改的小型数据库。请参阅此命令行和下面的单独部分:
msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"
批处理文件:您可以使用批处理文件在“现成”命令行中设置这些选项,并将批处理文件放在您的 MSI 旁边。这很简单,就像您在批处理文件中已有的一样——也许启用了静默运行。
批处理文件也可以应用转换 - 如上面的命令行所示。
转换甚至可以合并到现有的 MSI 中并保存为新的 MSI。不推荐,但可能。
GUI:您可以使用 MSI GUI 来调整这些属性的值。这需要一些不那么复杂但非常繁琐且耗时的工作。
刻录:您可以将所有 MSI 文件包装在 a 中
setup.exe Burn bundle
,并指定默认情况下为 exe 文件运行的命令行,并为正常的 MSI 安装设置 MSI 属性。
转换:您可以让用户创建转换以指定应用于安装的设置 - 但这不是这里的重点,除非您提供自己的默认设置。然后您需要通过命令行应用它或在构建时将其合并到您的主 MSI 中。
更多链接:
推荐阅读
- powershell - 过滤一串随机的逗号和空格
- internationalization - 试图从全局命名空间加载类“IntlTimeZone”
- java - 从活动外部捕获 onRequestPermissionsResult()
- php - Symfony 4 用户通过电子邮件问题进行搜索
- reactjs - glyphicon 在 JSX 中添加边距
- sql-server - 使用家庭护理机构数据进行实时项目的步骤是什么……例如实施数据库和 BI 解决方案,然后进行报告?
- python - 创建具有动态参数的类部分对象
- java - 根据类型参数自动装配 CrudRepository
- jquery - jquery this.each 在使用 .val 时不起作用
- sql - 如何使用连接更新表