2010-01-12 135 views
5

有人告訴我,WIX中的CustomAction有一種方法可以在控制檯日誌中顯示輸出。我包含一個名爲XmlPreprocess.exe的.exe來操縱我的web.config,基於名爲SettingsFileGenerator.xml的文件中的參數,WIX CustomAction - 如何在安裝/日誌中獲取更多信息

我以這樣的方式運行: msiexec/i bin \ Debug \ TFBIC。 RCT.WCFWebServicesWIXSetup.msi/L * V 「C:\日誌\ WixInstall01.log」

這是我的維克斯構建文件:

<CustomAction Id="**SAMPLE_CONFIG**" BinaryKey="XMLPREPROCESS" ExeCommand="/i:&quot;[INSTALLLOCATION]web.config&quot; /x:&quot;[INSTALLLOCATION]SettingsFileGenerator.xml&quot; /e:QA /d:ServiceLocation=[SERVICELOCATION]" Execute="deferred" /> 
    <Binary Id="XMLPREPROCESS" SourceFile="../TFBIC.RCT.WCFWebServices/RequiredBins/XMLPreprocess.exe" /> 
    <InstallExecuteSequence> 
     <Custom Action="SAMPLE_CONFIG" After="StartServices"><![CDATA[NOT Installed]]></Custom> 
    </InstallExecuteSequence> 

安裝日誌顯示此:

Action 15:22:27: StartServices. Starting services 
Action start 15:22:27: StartServices. 
MSI (s) (58:CC) [15:22:27:898]: Note: 1: 2205 2: 3: ServiceControl 
MSI (s) (58:CC) [15:22:27:898]: Note: 1: 2228 2: 3: ServiceControl 4: SELECT `Name`,`Wait`,`Arguments`,`Event`, `Action` FROM `ServiceControl`, `Component` WHERE `Component_` = `Component` AND (`Action` = 0 OR `Action` = 1 OR `Action` = 2) 
Action ended 15:22:27: StartServices. Return value 1. 
MSI (s) (58:CC) [15:22:27:899]: Doing action: SAMPLE_CONFIG 
Action 15:22:27: SAMPLE_CONFIG. 
Action start 15:22:27: **SAMPLE_CONFIG**. 
SAMPLE_CONFIG: 
Action ended 15:22:27: **SAMPLE_CONFIG**. Return value 1. 

這是我第一次嘗試WIX,所以請忍受我的無知。

感謝

UPDATE:

這從另一個論壇報價 - 但他沒有說明它是如何工作的,他似乎並不常回來看看。

維克斯具有捕獲 控制檯輸出,堅持它 直接進入詳細MSI日誌,所以 這是我使用的自定義操作。

參考:http://xmlpreprocess.codeplex.com/Thread/View.aspx?ThreadId=79454

這將是他在談論的工具? http://wix.sourceforge.net/manual-wix2/qtexec.htm 嘗試它時出現此錯誤: 錯誤LGHT0103:系統找不到文件'wixca.dll'。 我已搜索整個磁盤的這個.dll,並找不到它。

回答

8

要在安裝msi時啓用所有可能的日誌記錄,請使用/lvx* logfile.txt選項。但是,即使這樣也不會記錄作爲自定義操作調用的命令行應用程序的STDOUT和STDERR輸出。

如果您自己編寫了自定義操作,則可以向其添加此類日誌記錄。例如,wix附帶的DTF庫有一個方便的方法,您可以調用。有關更多信息,請參閱c:\program files\windows installer xml v3\doc\dtf.chm,「編寫託管自定義操作」主題。

如果您還沒有編寫應用程序,則可以編寫自定義操作來包裝它。這樣的包裝可以使用.NET Process class來調用可執行文件,讀取StandardErrorStandardOutput流,並使用上述的Session.Log方法記錄所有內容。

編輯:我不知道任何將控制檯輸出發送到日誌的standard custom action in wix。試試wix-users mailing list

+0

看到我原來的問題更新,有人告訴我有一個捕獲控制檯輸出的自定義操作。任何想法如何找到它。我會再去google一些。我沒有寫它,它是CodePlex中的XmlPreprocess。 – NealWalters 2010-01-13 15:50:16