【发布时间】:2010-12-21 15:14:34
【问题描述】:
大家好,我正在尝试在命令提示符下通过 msiexec 传递参数。问题是即使参数正确传递,值也不会反映在 OnBeforeInstallEvent 中。因此没有安装 msi。
OnBeforeInstall 是用 C#.net framework 2.09 (VS 2005) 编写的,下面给出了事件调用,
字符串 serverName=Context.Parameters["SERVERNAME"]。
例如,在自定义操作中,将参数正确声明为 /SERVERNAME=[SERVERNAME] 以便访问服务器名称。
当我通过参数 thro Msiexec 安装 thro 正常 UI 模式时没有问题,该值不会在 OnBeforeInstall 事件中反映出来。我什至尝试通过 MSIEXEC /Log 记录安装流程,日志中的值已更改(如下所示)
属性更改:添加 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"端口="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 模式下完美运行。我什至尝试通过 ORCA 修改 Server.msi 的属性表(如下所示)。
表:属性 行:SecureCustomProperties 属性 -> SecureCustomProperties 将值从 NEWERPRODUCTFOUND 更改为 NEWERPRODUCTFOUND;SERVERNAME
还是不行
请帮忙。
非常感谢,
四分之二
【问题讨论】:
标签: c#-2.0 setup-project