无法通过命令提示符将参数传递给MSI thro Msiexec

时间:2010-12-20 13:42:21

标签: c#-2.0 setup-project

Hii ppl我试图在命令提示符下传递参数thro msiexec。问题是尽管参数正确传递,但值不会反映在OnBeforeInstallEvent中。因此msi没有安装。

OnBeforeInstall编写为C#.net framework 2.09(VS 2005),事件调用如下:

string serverName = Context.Parameters [“SERVERNAME”]。

例如,在自定义操作中,参数已正确声明为/ SERVERNAME = [SERVERNAME],以便访问服务器名称。

当我通过参数thro Msiexec安装thro普通UI模式时没有问题,这个值没有反映在OnBeforeInstall事件中。我甚至尝试记录MSIEXEC / Log的安装流程,在日志中更改了值(如下所示)

PROPERTY CHANGE:添加SERVERNAME属性。它的值是'machine1'。

我在下面给出了用于传递值的msiexec命令,

msiexec.exe / i“C:\ Server.msi”/ l * v“C:\ Server.txt”ALLUSERS = 1 REBOOT = ReallySupress TARGETDIR =“C:\ Program Files \ Server”SERVERNAME =“machine1” PORT = “9090”

但是在到达ONBeforeInstall时,该值为空(如下所示)。

错误1001. Server.ServicesInstaller的OnBeforeInstall事件处理程序中发生异常。 - >由于未给出某些安装参数,因此无法继续安装。 更多信息 - 服务器名称不能为空。 调试:错误2769:自定义操作_542E7AC5_7403_434A_874B_DE2872A4848D.install未关闭1个MSIHANDLE。 安装程序在安装此程序包时遇到意外错误。这可能表明此包装存在问题。错误代码是2769。

此外,操作系统是Win 2003。我甚至在Win XP中尝试过Msiexec但仍然没有去。 SERVERNAME是安装工具箱的TextBox2对话框中的一个文本框的属性名称。在观察安装日志时,属性更改事件正在识别SERVERNAME的值更改,但在到达OnBeforeInstall事件时它变为null。

如前所述,它在普通UI模式下运行良好。我甚至尝试修改Server.msi thro ORCA的属性表(如下所示)。

表:财产 行:SecureCustomProperties属性 - > SecureCustomProperties将值从NEWERPRODUCTFOUND更改为NEWERPRODUCTFOUND; SERVERNAME

仍然没有去

请帮助。

非常感谢,

byfour

1 个答案:

答案 0 :(得分:0)

Hii PPl,         我自己解决了这个问题,我从习惯表中删除了CustomTextA_SetProperty_EDIT1这样的行,并使用ORCA删除了其他表中的行,并解决了这个问题。

非常感谢,

byfour