Windows installer MSI错误。1001用法:InstallUtil。。生产服务器上出现错误

Windows installer MSI错误。1001用法:InstallUtil。。生产服务器上出现错误,windows-installer,Windows Installer,我们已经使用VisualStudio2008上的工具创建了一个MSI安装程序 这在安装程序类中实现了一些自定义操作 它在所有测试服务器上都可以正常工作,但由于某种原因,它在一个生产服务器上失败。错误消息是: 错误。1001用法:InstallUtil[/u |/uninstall][option[…]]assembly[[option[…]]assembly] installUtil在每个给定程序集中执行安装程序。| |如果/u或/uninstall开关为…是传递给自定义安装程序a类目录的参数之

我们已经使用VisualStudio2008上的工具创建了一个MSI安装程序

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

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

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


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

是传递给自定义安装程序a类目录的参数之一?如果是这样的话,很可能是在参数名的末尾附加了一个额外的\号,而这个\号又没有正确转义,从而导致了这个错误

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

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


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

是传递给自定义安装程序a类目录的参数之一吗?如果是这样的话,很可能是在参数名的末尾附加了一个额外的\号,而这个\号又没有正确转义,从而导致了这个错误

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

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


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

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

在行中传递给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]"
这似乎是由于尾随“\”在不存在时总是被追加。如果你想让用户选择一个新的安装目录,这真的很糟糕。你将如何将其纳入你的定制行动

您需要取消尾随斜杠的scape:

/destdir="[TARGETDIR]\"

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

在行中传递给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]"
这似乎是由于尾随“\”在不存在时总是被追加。如果你想让用户选择一个新的安装目录,这真的很糟糕。你将如何将其纳入你的定制行动

您需要取消尾随斜杠的scape:

/destdir="[TARGETDIR]\"

如果我取消尾随斜杠,我得到的是“对象引用未设置为对象错误实例”。在这种情况下,如何解决问题?如果我取消尾随斜杠,我得到的是“对象引用未设置为对象错误实例”。在这种情况下,如何解决问题?