1

对于自定义操作自定义操作的失败,我设置为姓名到XmlPreprocess.exe(一CodePlex上实用程序)如何调试在MSI /安装项目

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

SETTINGSFILE是应该从自定义形式页I,并将ENVIRONMENTBUTTON未来是我单选按钮之一的值。

有什么办法让重定向工作?它不会创建.log文件。 有没有其他方法可以查看自定义操作的结果?我甚至可以确认它是否运行?如果我想看看发送了什么参数,该怎么办?

更新3: - 对于我曾尝试更多的场景,在这里看到: http://xmlpreprocess.codeplex.com/Thread/View.aspx?ThreadId=79454

感谢,

尼尔

更新: 我只是写了一个匆匆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文件包含为自定义操作。 我在属性窗口中设置了条件= True。 我将CustomActionData设置为:“[SETTINGSFILE]”[环境按钮]

更新2: 我现在意识到条件不应该是“真”。我要么将其清空,要么将其设置为“未安装”。

我在XmlPreprocess上收到了一个无法解释的错误,而且我无法运行VBScript。我试着用CScript64.exe来运行它。

回答

1

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

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

就像你在更新2中说的那样,注意True的条件实际上意味着要查找是否定义了名称为True的属性。如果你想要的东西永远是真的,请使用值1

+1

非常感谢 - 我不知道你打开日志。这是如何:http://www.advancedinstaller.com/user-guide/qa-log.html – NealWalters 2010-01-05 16:11:57

+0

现在看到新的问题:http://stackoverflow.com/questions/2007635/making-sense-out-on-msi- verbose-trace-running-a-customaction – NealWalters 2010-01-05 16:57:44

+0

现在用cmd.exe重新开始http://stackoverflow.com/questions/2050184/using-cmd-exe-in-a-vs-setup-custom-action – NealWalters 2010-01-12 15:47:51