我正在使用 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 检查它,以查看该条目现在在构建后自动添加。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)