如何在MSI /安装项目中调试自定义操作的失败

时间:2010-01-04 19:50:57

标签: visual-studio-2008 installer windows-installer installation custom-action

对于自定义操作,我将Name设置为XmlPreprocess.exe(CodePlex实用程序)

和参数:/ x:“[SETTINGSFILE]”/ i:“[TARGETDIR] web.config”/ e:[ENVIRONMENTBUTTON] [CUSTOMSETTINGS]> [TARGETDIR] XmlPreProcess.log

SETTINGSFILE应该来自我添加的自定义表单页面,而ENVIRONMENTBUTTON是我的一个单选按钮的值。

有没有办法让重定向工作?它不是在创建.log文件。 有没有其他方法可以查看自定义操作的结果?我怎么能确认它是否运行?如果我想看看哪些parms被发送给它怎么办?

更新3: - 有关我尝试过的更多场景,请参阅此处: http://xmlpreprocess.codeplex.com/Thread/View.aspx?ThreadId=79454

谢谢,

Neal

更新: 我刚刚写了一个快速的VBScript来验证我的parms。

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

没有创建VBScriptout.txt,所以我认为它甚至没有运行(所以我的猜测是XmlPreprocess甚至都没有运行)。

我将InstalLVerification.vbs文件作为“安装”下的自定义操作包含在内。 我在属性窗口中设置condition = True。 我将CustomActionData设置为:“[SETTINGSFILE]”[ENVIRONMENTBUTTON]

更新2: 我意识到现在条件不应该是“真实的”。我要么将其删除或将其设置为“未安装”。

我在XmlPreprocess上遇到一个无法解释的错误,我无法运行VBScript。我尝试使用CScript64.exe运行它。

1 个答案:

答案 0 :(得分:1)

只有命令提示符(以及偶尔的其他工具)才使用大于号来指示输出重定向。 Windows Installer只调用不处理此符号的Win32 CreateProcess API。因此,您尝试记录结果将无效。也许您可以将命令重写为cmd.exe /c XmlPreprocess.exe /x ... > [TARGETDIR]XmlPreprocess.log(可能需要一些额外的引用)。

出于调试目的,您通常可以通过获取安装过程的详细日志来获取更多信息。它将包括属性列表,以及它启动的自定义操作及其返回码。我认为它甚至会包含在您的情况下传递给应用程序的完全格式化的命令行。

正如您在更新2中所述,请注意True的条件实际上意味着查找是否定义了名称True的属性。如果您想要始终为真的话,请使用值1