1

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

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

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

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

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

谢谢,

尼尔

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

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]”[ENVIRONMENTBUTTON]

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

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

4

1 回答 1

1

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

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

就像您在更新 2 中所说的那样,请注意,条件True实际上意味着查找名称的属性是否True已定义。如果您想要始终正确的东西,请使用 value 1

于 2010-01-05T14:49:25.063 回答