【问题标题】:Is there a way to edit private properties of an msi install file from command line?有没有办法从命令行编辑 msi 安装文件的私有属性?
【发布时间】:2013-11-19 09:28:09
【问题描述】:

我需要从命令行执行 msi 文件的安装,并且能够从命令行修改此 msi 安装文件中的选项(复选框、单选按钮...等)。

我正在使用 superorca 和 msiexec 来查找我需要修改的属性并对其进行修改。但是由于 msiexec 只能修改公共属性,我被卡住了,因为某些选项(例如单选按钮和复选框)不能仅通过修改公共属性来更改。

有没有办法让我从命令行修改这些公共属性?

【问题讨论】:

  • 您可以通过转换来做到这一点。在 Orca 应用程序中打开您的 MSI,按您需要的方式对其进行修改(例如更改某些属性),保存一份副本并在原始包和修改后的包之间生成转换。 WiX 有工具可以做到这一点。稍后您可以将转换嵌入到您的原始 MSI 包中,并在安装过程中应用您需要的转换。
  • 感谢严的帮助。这对我不起作用的原因是我不能通过命令行以外的任何方式修改安装包,因为这个包稍后会发送给用户。基本上我有未修改的msi包,只能通过命令行修改。
  • 好的,然后不要将转换嵌入回包中。您也可以从命令行应用转换
  • 嘿 Yan 我研究了转换,这正是我需要的,感谢您的帮助。
  • 很高兴知道您解决了您的问题!

标签: command-line wix windows-installer orca


【解决方案1】:

使用 Yan 首先建议的变换是最强大的方法之一。使用参数(这是一种公共属性)“TRANSFORMS”,如:

msiexec /i "c:\myinstall.msi" /qb TRANSFORMS="c:\mytran1.mst" 

您可以随意修改原始 MSI。使用属性受到限制。私有属性(这就是它们被称为“私有”的原因)通常不能从命令行更改(如果在 MSI 中准备了私有操作所依赖的自定义操作,则可以更改它们,但这不是要走的路)。对话框并不总是设计为由命令行中的属性控制。当然你可以编辑一个转换,让你喜欢的对话框设置属于你喜欢的特殊的新定义的公共属性,并且已经在同一个命令行中使用它们!

【讨论】:

  • Hey Philm 抱歉,我花了这么长时间才在这里回答,但我遇到了网络问题,无法访问。非常感谢您的帮助,我会研究一下变形金刚,看看这是否是我需要做的更好的解决方案。
  • 嘿 Philm,就像我告诉 Yan 我研究了变换,这正是我需要的,感谢您的帮助。
【解决方案2】:

我发现执行此操作的一种方法是使用 SQL 和脚本的数据库查询来修改 msi 文件以满足我的需要,然后从命令行执行它。

有关如何执行此操作的信息可以找到here

另外this 是我遇到的问题和解决方案。

【讨论】:

  • 如果您不仅要更改一个 MSI,而且要更改多个不同的 MSI,并且您需要一种真正的编程语言来拥有比使用固定 SQL 命令更多的逻辑,那么脚本更改会更好。
  • 我只是认为您还没有真正了解 MSI 转换是什么。转换也只包含 SQL 语句。一个优点是,您有一个标准的 GUI,可以使用 Orca 和类似工具创建、比较、查看转换。另一个是,转换是一种非常标准的方式。使用 MS 标准 MSI SDK 工具 msitran.exe,您还可以像使用脚本一样在安装之前即时更改 MSI 文件。 安装期间应用更改是仅用于转换的功能!
猜你喜欢
  • 2023-04-01
  • 2012-01-01
  • 2021-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-28
  • 2011-04-15
  • 1970-01-01
相关资源
最近更新 更多