Windows installer 在linux中打开MSI文件的方法有哪些?

Windows installer 在linux中打开MSI文件的方法有哪些?,windows-installer,Windows Installer,实际上,我曾尝试使用其他工具,如nsis、7Zip,但我无法使用nsis打开msi文件。 那么,是否有任何方法可以在Linux中打开msi文件并对该文件进行一些更改。请指导我这方面的工作。很抱歉问一下,但您确定您知道什么是msi吗?它不是像7zip那样的包格式。MSI主要由要编辑的表组成,这些表需要非常多的Windows Installer技术知识 您可能正在寻找的是编辑MSI设置的文件内容。这些文件要么未压缩(这里显然不是这种情况),要么位于.msi之外的.cab文件中,要么打包在.cab文件

实际上,我曾尝试使用其他工具,如nsis、7Zip,但我无法使用nsis打开msi文件。
那么,是否有任何方法可以在Linux中打开msi文件并对该文件进行一些更改。请指导我这方面的工作。

很抱歉问一下,但您确定您知道什么是msi吗?它不是像7zip那样的包格式。MSI主要由要编辑的表组成,这些表需要非常多的Windows Installer技术知识

您可能正在寻找的是编辑MSI设置的文件内容。这些文件要么未压缩(这里显然不是这种情况),要么位于.msi之外的.cab文件中,要么打包在.cab文件中,而这些文件本身又打包在.msi文件中

我假设后一种情况是您的,因此您有两个包级别

因此,如果在Windows PC上工作,最好的答案可能是:

  • 不要简单地进行编辑,因为这是不恰当的,而且你似乎不是这个领域的专家

  • 如果你想这么做,就像:

    • 下载Insted之类的工具
    • 从MSI中解压缩.cab文件(查找流)
    • 在.cab中标识要更改的文件(名称不相同)
    • 使用上述工具更改MSI文件本身中的新文件大小
    • 或者在MSI文件中再次保存.cab文件(这不是一个简单的工具!!),或者编辑.MSI文件,以便MSI现在可以处理未压缩在MSI中但位于MSI之外的.cab文件
  • 我对这件事很在行,我几乎永远不会做。所以我不认为你这么做是有道理的。 再说一次:上面的所有注释都假设您正在使用Windows操作系统

    当然,您可以在Linux中做到这一点:使用Windows虚拟机!! 它可能也适用于葡萄酒

    一个专业的方法是使用专业的MSI工具,创建一个包含所需更改的更新或补丁。在某些情况下,这也可以通过转换来完成,但如果您想主要更改文件,则会有陷阱,因此更新更适合于此。 不管你选择什么,你都会花很多时间,也许还会花一些钱去买带有UI的工具。选择WiX与开发人员工具一起编辑XML文件,这意味着没有专门的UI,或者换句话说,当您想花更多的时间但没有钱时


    和NSIS在一起,如果你可以——它不如MSI那么复杂,如果它满足你的需要,就可以了。

    < P>如果你想编写与Linux、Windows等相关的设置,只要考虑安装在任何地方——它是为这样的东西制作的,但当然不是免费的。

    看起来应该能够帮助你。


    我已经能够用
    msiextract
    从该软件包中提取一些MSI文件。

    谢谢philim的建议。问题是我有一个.MSI文件,我想打开这个文件并添加一些数据。我如何在linux而不是windows中做到这一点。是的,正如我所说:“当然,你可以在Linux中做到这一点:使用Windows虚拟机!!它可能也适用于WINE(Windows子系统)。“真的:。msi可能是有史以来最多的Windows专用格式之一。即使在Windows中,也需要专门的工具。我不知道有哪种工具可以在Linux中做到这一点,我也不知道有谁会认真考虑编写一个,因为它毫无意义。我真的很想帮忙。我写下了这些提示,因为老实说,“想要添加一些数据”这句话暗示了这样一种假设,即即使在“本机”操作系统下使用正确的工具,也有人不知道这样做的困难。所以我写下了这些困难。通常,没有专业的安装开发人员向给定的MSI“添加”一些数据。最好进行新的重建,或者在修改其他来源的设置时,使用所谓的转换或补丁。还有一件事:每个人都可以在Linux下免费安装Windows操作系统作为虚拟机进行30天的测试。如果你希望有一个linux工具来编辑windows的东西只是“政治性的”,而工作本身并不是那么重要,那么要做到这一点,有什么必要……好吧……还有一件事要证明,我真的试图深入探讨一些不寻常的问题:存在xml转换器(msi2xml),反之亦然,可以下载。您可以将msi转换为xml(在Windows中),然后在linux中编辑msi,只要您愿意。当然,必须再次在Windows中转换回msi。