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

时间:2009-11-05 18:19:12

标签: windows-installer

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

这在Installer类中实现了一些自定义操作。

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

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

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

2 个答案:

答案 0 :(得分:6)

确实这已经困扰了我好几天。

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

例如:

msiexec /i setup.msi /L* log.txt TargetDir="D:\Samples\Test\" CustAddOnDir="D:\Samples\Test\AddOns\" 

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

  

属性(C):TARGETDIR = D:\ Samples \ Test \
  属性(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" 

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

/destDir="[TARGETDIR]"

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

你需要消除尾随斜杠:

/destdir="[TARGETDIR]\"

答案 1 :(得分:1)

您将自定义安装程序类传递给目录的其中一个参数是什么?如果是这样,很可能它会在参数名称的末尾附加一个额外的\,而这反过来又没有被正确转义,从而导致出现此错误。

尝试运行与此类似的命令: msiexec / i .msi / L * V“”

检查日志文件以找到有问题的参数。

不幸的是我还没有找到解决方法,除了以其他方式将参数传递给自定义程序集(硬编码 - yikes!),或者在C#代码中从注册表重新读取我的路径值