将REINSTALLMODE传递给MSI文件

Ken*_*Ken 7 deployment windows-installer vdproj .net-2.0

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

我知道这可以通过命令行完成,如下所示: msiexec.exe /i foo.msi REINSTALLMODE=amus

但是,如果用户选择直接单击msi(启动向导),则不会传递该属性.是否可以通过VS和vdproj执行此操作?

我调查过的一些选项:

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

谢谢你的建议.

小智 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
Run Code Online (Sandbox Code Playgroud)

将一个post-build事件添加到您的安装项目中,并使用以下命令调用该脚本:

add_reinstall_prop.vbs $(BuiltOuputPath)
Run Code Online (Sandbox Code Playgroud)

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


ewa*_*all 4

遗憾的是,我找不到在 VStudio 中设置其他 MSI 属性的方法。

尽管如此,一种可行的方法是:

  1. 使用 Orca 创建仅更改属性 REINSTALLMODE 的转换 (MST)。(简而言之,您编辑属性并保存为新变换,然后使用“生成变换”命令创建 MST。)
  2. 可以使用MSITRAN.EXE命令(在您找到 Orca 的同一 Windows Installer SDK 中提供)将此转换直接应用于您的 MSI 。
  3. 您可以:(a) 找到一种方法,让 Visual Studio 始终在 MSI 构建之后立即运行 MSITRAN 命令,或者 (b) 在构建之后但在测试之前手动运行 MSITRAN(通过批处理文件等)。