gpt4 book ai didi

deployment - 将 REINSTALLMODE 传递给 MSI 文件

转载 作者:行者123 更新时间:2023-12-04 10:58:59 27 4
gpt4 key购买 nike

我正在使用 VisualStudio2005 和 vdproj 创建一个简单的 MSI 文件。我需要在启动它时传入 REINSTALLMODE 属性。

我知道这可以通过命令行完成,如下所示:msiexec.exe /i foo.msi REINSTALLMODE=amus
但是,如果用户选择直接单击 msi(启动向导),则不会传递该属性。是否可以通过 VS 和 vdproj 做到这一点?

我调查过的一些选项:

  • 当我通过 VS 构建 MSI 时,它还会生成一个 setup.exe。有没有办法通过这个传递 REINSTALLMODE 属性?
  • 我安装了 Orca,它允许我查看/编辑 MSI 的属性表。我可以通过这种方式添加它,但是每次我进行 MSI 构建时我都必须添加它。

  • 感谢您的任何建议。

    最佳答案

    我找到了一种更自动化的方法来做到这一点。

    创建一个名为 的脚本add_reinstall_prop.vbs (示例)如下:

    set objArgs = WScript.Arguments
    set o_installer = CreateObject("WindowsInstaller.Installer")
    set o_database = o_Installer.OpenDatabase(objArgs(0), 1)
    s_SQL = "INSERT INTO Property (Property, Value) Values( 'REINSTALLMODE', 'amus')"
    set o_MSIView = o_DataBase.OpenView( s_SQL)
    o_MSIView.Execute
    o_DataBase.Commit

    将构建后事件添加到您的设置项目中,使用以下命令调用脚本:
    add_reinstall_prop.vbs $(BuiltOuputPath)

    这将自动将所需的条目添加到构建的 MSI。
    然后,您可以使用 Orca 进行检查,以查看现在构建后自动添加的条目。

    关于deployment - 将 REINSTALLMODE 传递给 MSI 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1947472/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com