MSI错误.1001.用法:生产服务器上的InstallUtil ..错误

Gao*_*ter 1 windows-installer

我们使用Visual Studio 2008上的工具创建了一个MSI安装程序.

这有一些在Installer类中实现的自定义操作.

它适用于所有测试服务器,但由于某种原因,它在一个生产服务器中失败.错误消息是:

错误.1001.用法:InstallUtil [/ u |/uninstall] [option [..]] assembly [[option [...]] assembly]

installUtil在每个给定的程序集中执行安装程序.||如果/ u或/ uninstall开关是......

Dan*_*Dan 6

事实上,这已经困扰了我好几天.

在线路上传递给msiexec的参数很好,并在Properties集合中正确显示,如同在日志中显示的那样.

例如 :

msiexec /i setup.msi /L* log.txt TargetDir="D:\Samples\Test\" CustAddOnDir="D:\Samples\Test\AddOns\" 
Run Code Online (Sandbox Code Playgroud)

以您期望的方式在日志中显示:

属性(C):TARGETDIR = D:\ Samples\Test\
Property(C):CUSTADDONDIR = D:\ Samples\Test\AddOns \

但是,当您尝试通过属性页上的CustomactionData将其中任何一个传递给自定义操作时出现此错误:

/ addOnDir = "[CUSTADDONDIR]"

这似乎很愚蠢,但从msiexec命令行中删除尾随的"\"修复了这个问题.

msiexec /i setup.msi /L* log.txt TargetDir="D:\Samples\Test" CustAddOnDir="D:\Samples\Test\AddOns" 
Run Code Online (Sandbox Code Playgroud)

现在的问题是尝试将TargetDir传递给您的自定义操作总是失败.

/destDir="[TARGETDIR]"
Run Code Online (Sandbox Code Playgroud)

这似乎是由于尾随"\"总是被追加,如果它不存在.如果你想让用户选择要安装的新目录,这真的很糟糕.你会如何将其纳入自定义操作?

你需要忽略尾随斜杠:

/destdir="[TARGETDIR]\"
Run Code Online (Sandbox Code Playgroud)