2017-09-14 120 views
0

我寫的WiX安裝一些自定義操作運行CustomAction消息。 我讀here,如果作爲單擊按鈕(DoAction)的結果運行該操作,C#自定義操作中的Session.Log不起作用。 MSDN說you can use the Message Method,所以我試着用Session.Message:WiX的安裝程序:登錄由DoAction

var foo = new Record(1); 
foo.SetString(0, "hello world"); 
session.Message(InstallMessage.ActionData, foo); 

,但我仍然使用VERBOSE = 1時,甚至看不到日誌消息。 安裝程序是使用WiX Burn創建的,因此沒有單獨的msi。

請幫忙嗎?

回答

1

一般來說,這是一個已知的問題與底層的Windows安裝程序:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa368322(v=vs.85).aspx

似乎Server 2003後,消息方法可以工作,但說實話使用腳本自定義操作年前,我停止了,所以它不是我的選擇。我使用使用MsiProcessMessage的C#/ DTF。

對此的常用解決方法是利用屬性更改記錄的事實。只需設置一個未使用的屬性,您就可以在日誌中獲得數據。

+0

這是我引用的鏈接。你能擴展「我使用C#/ DTF使用MsiProcessMessage」。請? – peval27

+0

DTF是WiX的一項功能,可讓您編寫託管自定義操作。請參閱:http://blog.deploymentengineering.com/2008/05/deployment-tools-foundation-dtf-custom.html –

+0

Session類的來源位於:https://github.com/wixtoolset/wix3/blob /develop/src/DTF/Libraries/WindowsInstaller/Session.cs你可以在第210行看到他們使用MsiProcessMessage() –