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