【问题标题】:How do you override ProgramFilesFolder in an msi?您如何在 msi 中覆盖 ProgramFilesFolder?
【发布时间】:2010-04-14 11:55:13
【问题描述】:

我有一个 msi 文件,我试图将其安装在 C:\Program Files 以外的位置。

目录表显示 ProgramFilesFolder 用作默认安装目录。通过阅读this blog post,我了解到 ProgramFilesFolder 是一个标准目录,因此将 TARGETDIR 作为属性传递给安装程序不会更改安装位置,即使目录表将其作为 ProgramFilesFolder 的父级。

如何覆盖安装位置?我是这个领域的新手。

【问题讨论】:

    标签: windows-installer


    【解决方案1】:

    尝试过在命令行上传递TARGETDIR 吗?

    msiexec /i yourpackage.msi TARGETDIR="C:\Foo"
    

    如果上述失败,不知道在这种情况下是否有帮助,但我之前使用过一个工具来编辑 MSI 文件,它被称为Orca,也许你可以用它来覆盖一些MSI 设置?

    另一种可能性可能是找出 MSI 使用哪个注册表项来找出 ProgramFiles 文件夹解析为什么,并在运行 MSI 之前更改该条目,然后将其更改回来。

    【讨论】:

    • 是的,我尝试通过 TARGETDIR 但没有任何效果。我已经使用 Orca 查看 MSI 中的目录表,尽管它是第 3 方 MSI,但我可能会进行编辑,我担心我的编辑可能会破坏某些内容。我没想过要更改注册表,所以可以看看。
    【解决方案2】:

    首先,尝试将 INSTALLDIR 设置为您想要的任何文件夹。

    如果这似乎没有任何作用,那么是时候查看组件表并查看这些记录的 Directory_ 值是什么了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-05
      • 1970-01-01
      • 1970-01-01
      • 2011-01-30
      相关资源
      最近更新 更多