首页 > 解决方案 > 如何在不使用命令的情况下安装带参数的 msi

问题描述

我有一个 msi 需要在安装时传递一些参数,我使用命令行传递参数,如下所示:
msiexec /i installer.msi ALLUSERS=1 AUTOUPGRADEENABLED=0
对于用户,从命令行安装太复杂,所以我想构建一个安装程序,它将安装 msi双击安装程序后的参数,任何人都知道怎么做。

标签: windowsinstallationwixwindows-installerinstallshield

解决方案


应用程序启动代码:我总是喜欢在每个用户的应用程序启动期间提出问题并设置选项。我发现这是最灵活、最健壮、最容易测试并且最适合 QA 人员测试新版本的方法。

请注意,这最适合用户特定的设置。对于共享设置,您通常需要写入 HKLM,然后您需要 setup-elevation 或以管理员权限运行应用程序。


  1. 默认值:如上所述,您可以在构建 MSI 时将属性值默认为属性表中的正确值。那么你可能不需要通过命令行设置任何东西?

    • 可以使用 Orca(免费 MSI 编辑器)重新保存已完成的 MSI,但您不应更改已完成的 MSI(可能已签名并重新保存会破坏它)。

    • 正式批准的参数编辑机制称为转换 - 安装时应用的主 MSI 数据库更改的小型数据库。请参阅此命令行和下面的单独部分:

      msiexec.exe /I "My.msi" /QN /L*V "C:\My.log" TRANSFORMS="C:\1031.mst;C:\My.mst"
      
  2. 批处理文件:您可以使用批处理文件在“现成”命令行中设置这些选项,并将批处理文件放在您的 MSI 旁边。这很简单,就像您在批处理文件中已有的一样——也许启用了静默运行。

    • 批处理文件也可以应用转换 - 如上面的命令行所示。

    • 转换甚至可以合并到现有的 MSI 中并保存为新的 MSI。不推荐,但可能。

  3. GUI:您可以使用 MSI GUI 来调整这些属性的值。这需要一些不那么复杂但非常繁琐且耗时的工作。

  4. 刻录:您可以将所有 MSI 文件包装在 a 中setup.exe Burn bundle,并指定默认情况下为 exe 文件运行的命令行,并为正常的 MSI 安装设置 MSI 属性。


转换:您可以让用户创建转换以指定应用于安装的设置 - 但这不是这里的重点,除非您提供自己的默认设置。然后您需要通过命令行应用它或在构建时将其合并到您的主 MSI 中。


更多链接:


推荐阅读