2009-11-05 116 views
1

我们使用Visual Studio 2008上的工具创建了MSI安装程序。MSI错误。 1001.用法:生产服务器上的InstallUtil ..错误

这在安装程序类中实现了一些自定义操作。

它可以在所有测试服务器上正常工作,但由于某种原因,它在其中一台生产服务器上失败。错误消息是:

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

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

回答

1

是您传递给自定义安装程序类目录的参数之一吗?如果是这样,最有可能的是在参数名的末尾添加一个额外的\,这反过来又没有正确地转义,从而导致这个错误。

尝试运行类似于这样一个命令: MSIEXEC/I与.msi/L * V “”

检查日志文件以找到违规参数。

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

6

事实上,这一直困扰着我好几天。

传递给msiexec的参数通过罚款并正确显示在Properties集合中,如通过日志查看的。

例如:

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

在日志的方式展示了你所期望:

Property(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" 

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

/destDir="[TARGETDIR]" 

这似乎是由于尾随“\”,如果不存在,它总是被追加。如果你想让用户选择一个新目录来安装,这真的很糟糕。你会如何将这种情况引入您的自定义行为?

您需要取消转义结尾的斜线:“对象引用未设置为对象错误的实例”

/destdir="[TARGETDIR]\" 
+0

如果我未逸出我得到最后的斜线在这种情况下如何解决问题? – 2016-04-25 05:49:29

相关问题