Visual studio 2008 如何调试MSI/Setup项目中自定义操作的失败
对于自定义操作,我将设置为Name为xmlpropreprocess.exe(CodePlex实用程序) 和:/x:“[SETTINGSFILE]”/i:“[TARGETDIR]web.config”/e:[ENVIRONMENTBUTTON][CUSTOMSETTINGS]>[TARGETDIR]XmlPreProcess.log的参数 SETTINGSFILE应该来自我添加的自定义表单页面,ENVIRONMENTBUTTON是我的一个单选按钮的值 有没有办法让重定向生效?它没有创建.log文件。 是否有其他方式查看自定义操作的结果?我怎么能确认它是否运行过?如果我想看看有什么帕尔姆被送到那里呢 更新3:-有关我尝试过的更多场景,请参见此处: 谢谢 尼尔 更新: 我刚刚编写了一个快速VBScript来验证我的参数Visual studio 2008 如何调试MSI/Setup项目中自定义操作的失败,visual-studio-2008,installation,windows-installer,custom-action,Visual Studio 2008,Installation,Windows Installer,Custom Action,对于自定义操作,我将设置为Name为xmlpropreprocess.exe(CodePlex实用程序) 和:/x:“[SETTINGSFILE]”/i:“[TARGETDIR]web.config”/e:[ENVIRONMENTBUTTON][CUSTOMSETTINGS]>[TARGETDIR]XmlPreProcess.log的参数 SETTINGSFILE应该来自我添加的自定义表单页面,ENVIRONMENTBUTTON是我的一个单选按钮的值 有没有办法让重定向生效?它没有创建.log文
dim fso, oFile
set fso = Createobject("Scripting.FileSystemObject")
set oFile = fso.CreateTextFile("VBScriptOut.txt")
if WScript.Arguments.Count < 2 then
oFile.Writeline("Number of arguments was only = " & WScript.Arguments.Count)
else
oFile.WriteLine("SETTINGSFILE=" & WScript.Arguments.Item(0))
oFile.WriteLine("ENVIRONMENTBUTTON=" & WScript.Arguments.Item(1))
end if
oFile.close
dim fso,oFile
设置fso=Createobject(“Scripting.FileSystemObject”)
set of ile=fso.CreateTextFile(“VBScriptOut.txt”)
如果WScript.Arguments.Count<2,则
oFile.Writeline(“参数数量仅为=“&WScript.arguments.Count”)
其他的
oFile.WriteLine(“SETTINGSFILE=“&WScript.Arguments.Item(0))
oFile.WriteLine(“ENVIRONMENTBUTTON=“&WScript.Arguments.Item(1))
如果结束
关闭
没有创建VBScriptout.txt,所以我认为它甚至没有运行(所以我猜XmlPreprocess也没有运行)
我将InstalLVerification.vbs文件作为自定义操作包含在“安装”下。
我在属性窗口中设置了条件=True。
我将CustomActionData设置为:“[SETTINGSFILE]”[ENVIRONMENTBUTTON]
更新2:
我现在意识到情况不应该是“真的”。我要么将其清空,要么将其设置为“未安装”
XmlPreprocess上出现无法解释的错误,无法运行VBScript。我也试着用CScript64.exe运行它 只有命令提示符(以及偶尔使用的其他工具)使用大于符号来指示输出重定向。Windows Installer只调用Win32 CreateProcess API,该API不处理此符号。因此,您尝试记录结果将不起作用。也许您可以将命令重写为cmd.exe/c xmlpropreprocess.exe/x…>[TARGETDIR]xmlpropreprocess.log
(可能需要一些额外的引用)
出于调试目的,您通常可以通过详细记录安装过程来获得更多信息。它将包括属性列表、它启动的自定义操作及其返回代码。我认为它甚至会包括在您的案例中传递给应用程序的完全格式化的命令行
正如您在更新2中所说的,请注意True
的条件实际上意味着查找名称True
的属性是否已定义。如果希望某个值始终为真,请使用值1
只有命令提示符(以及偶尔使用的其他工具)使用大于符号来指示输出重定向。Windows Installer只调用Win32 CreateProcess API,该API不处理此符号。因此,您尝试记录结果将不起作用。也许您可以将命令重写为cmd.exe/c xmlpropreprocess.exe/x…>[TARGETDIR]xmlpropreprocess.log
(可能需要一些额外的引用)
出于调试目的,您通常可以通过详细记录安装过程来获得更多信息。它将包括属性列表、它启动的自定义操作及其返回代码。我认为它甚至会包括在您的案例中传递给应用程序的完全格式化的命令行
正如您在更新2中所说的,请注意
True
的条件实际上意味着查找名称True
的属性是否已定义。如果您想要的东西总是正确的,请使用值1
非常感谢-我不知道您打开了日志。下面是方法:现在看新问题:用cmd.exe重新开始非常感谢-我不知道你打开了日志。下面是方法:现在看新问题:使用cmd.exe重新开始