Windows installer 如何在命令行上将MSM文件转换为MSI文件?使用Windows Installer SDK或COM执行此操作

Windows installer 如何在命令行上将MSM文件转换为MSI文件?使用Windows Installer SDK或COM执行此操作,windows-installer,merge-module,orca,Windows Installer,Merge Module,Orca,我有一个来自第三方工具的MSM文件。 我们用一个小脚本定制MSM,这个工具集成到我们的安装程序中,运行良好。使用COM和“WindowsInstaller.Installer”使用VBscript完成所有修改 但有时我们的支持只需要将此工具作为独立的安装程序包 有没有一种简单的方法可以在命令行上将MSM文件转换为完整的MSI安装程序包 在“WindowsInstaller.Installer”中使用VBscript或COM模块是可以的。知道如何转换它,我也会编写一个小C++程序,执行更改和设置适

我有一个来自第三方工具的MSM文件。 我们用一个小脚本定制MSM,这个工具集成到我们的安装程序中,运行良好。使用COM和“WindowsInstaller.Installer”使用VBscript完成所有修改

但有时我们的支持只需要将此工具作为独立的安装程序包

有没有一种简单的方法可以在命令行上将MSM文件转换为完整的MSI安装程序包

在“WindowsInstaller.Installer”中使用VBscript或COM模块是可以的。知道如何转换它,我也会编写一个小C++程序,执行更改和设置适当的信息和转换。 我需要命令行来将MSM转换集成到我们的构建过程中

我搜索并发现:

我在SDK中看到了一些工具,如ORCA和其他MSI工具,但没有一个是我所需要的。ORCA可以将MSM另存为MSI文件,但在命令行上看不到执行此操作的选项

注意:我发现了一个旧工具MSM2SI,但它不能与我的MSM文件一起工作,并且崩溃,并且没有可用的源代码

编辑关于我们应用的更改:

改变的原因很简单。第三方模块具有“所谓的服务器模式”,通常仅在一台机器上使用,但MSM为每台机器启用。所以wie决定在更改属性时禁用它。还有一些变化

因此,更多的是关于主安装。当更新到来时,此设置永远不会被触动

此外,MSM还安装了自己的UI,这是我们不希望也不需要的。所有的控制都是通过我们的软件完成的。。。因此,我们安装了组件,但删除了“开始”文件夹中的菜单项。

任何人都可以使用MSM文件并从中编译MSI,还可以使用您想要的任何其他构造-可以想象的是您对MSM所做的更改

免费的开源软件当然可以通过命令行从MSI编译MSI,它也是免费的开源软件

但是,对于您打算在MSM中进行的修改,有理由表示担忧。这确实是一个非常坏的消息,因为MSM文件是专门为最终用户设置的,不允许更改。如果您能找到另一种方法来进行所需的更改,例如编译的MSI文件中的自定义操作,那将是非常好的

虽然WiX有时会参与处理,但合并和MSM是再简单不过了:


此处的完整示例:。和文档:

为什么每次都要合并此MSM?它是否不断更新?如果是,供应商是否可以更改它,以便您不需要对其进行后期处理?如果它没有更新,您可以更改MSM本身吗?不太好做-事实上相当糟糕-但它可能比不停地摆弄它的设置更不容易出错。

Transforms&msiexec.exe:根据您更新的信息,我想说,您可以通过使用转换,甚至通过安装命令行设置属性来解决所有这些问题

转换允许您更改MSI/MSM中的“任何内容”(它们是运行时应用于更改MSI/MSM的小数据库片段),设置公共属性(总是大写)允许您影响该属性设计要影响的任何内容。因此,后者是由供应商添加和支持的MSI/MSM的“轻量级”定制,这在可用时非常好,但以我的经验来看,很少是足够的(典型的用法是添加许可证密钥或服务器IP或URL,或者只安装MSI的一部分-一些功能-简单的东西)

有关如何使用
转换
msiexec.exe
命令行自定义MSI安装的说明,请参见:

  • 精心制作
  • 简称“MSI-定制标准包”部分)

GUI:我真的不明白当MSM“安装在自己的GUI中”时您指的是什么?希望这只是从“开始”菜单启动可执行文件的快捷方式?如果是这样,您可以使用变换轻松删除它


创建转换:您可以使用Orca(MS SDK工具)或任何其他工具创建转换,也可以使用()以编程方式创建转换

  • COM自动化:包含名为的VBScript。如果安装了Visual Studio,您将安装它。您也可以在上找到它(但一定要从您自己的磁盘获取)

  • DTF/.NET是WiX的一个组件,允许您通过托管代码访问MSI API。互操作已为您完成

  • C++/Win32:(不接受替代-图层消失:-))



注意:DTF是作为系统的一部分安装的。能够构建MSI文件()的开源工具包。安装后,在WiX安装文件夹中的
%ProgramFiles(x86)%%
下找到dll。子文件夹“bin”。最后,我将从MSI文件中获取一些属性。

我们可以问一下您在MSM中自定义了什么吗?这仅仅是设置一些属性或重定向一些路径的问题,还是您进行了其他更改?我的自定义是设置一些属性、删除一些条目,就这样。谢谢。关于这些变化,请注意:我在问题中补充了一些信息。