我正在使用VisualStudio2005和vdproj来创建一个简单的MSI文件。我需要在启动它时传入REINSTALLMODE属性。
我知道这可以通过命令行完成,如下所示:
msiexec.exe /i foo.msi REINSTALLMODE=amus
但是,如果用户选择直接单击msi(启动向导),则不会传递该属性。是否可以通过VS和vdproj执行此操作?
我调查过的一些选项:
感谢您的任何建议。
答案 0 :(得分:7)
我找到了一种更自动化的方法。
创建一个名为 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进行检查,以查看现在在构建后自动添加条目。
答案 1 :(得分:4)
可悲的是,我找不到在VStudio中设置其他MSI属性的方法。
尽管如此,一种应该起作用的方法是: