如何在我的wix項目中啓用日誌並設置MsiLogFileLocation? 現在我正在我的install.msi命令行參數:在wix安裝程序中啓用日誌記錄
msiexec /i install.msi /l*v InstallLog.log
我想記錄我的工作永遠只是運行install.msi不帶任何參數。有沒有辦法做到這一點?
如何在我的wix項目中啓用日誌並設置MsiLogFileLocation? 現在我正在我的install.msi命令行參數:在wix安裝程序中啓用日誌記錄
msiexec /i install.msi /l*v InstallLog.log
我想記錄我的工作永遠只是運行install.msi不帶任何參數。有沒有辦法做到這一點?
你可以告訴WiX的使用詳細日誌記錄是這樣的:
<Property Id="MsiLogging" Value="v" />
,但你不能指定寫入文件 - MSIEXEC已經確定的時候維克斯到達設置的屬性。它將默認爲%TEMP%\MSI{random chars}.LOG
。您可以爲用戶提供一個複選框,以確定他們是否要打開該日誌,就像這樣(假設您使用內置的InstallDir UI模板 - 其他人也可以使用它),但這是一個非常簡單的例子) :
<Property Id="MsiLogging" Value="v" />
<UI>
<UIRef Id="WixUI_InstallDir" />
<Publish Dialog="ExitDialog"
Control="Finish"
Event="DoAction"
Value="LaunchApplication">WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed</Publish>
</UI>
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="View Installation Log" />
<WixVariable Id="WixUILicenseRtf" Value="license.rtf"/>
<Property Id="WixShellExecTarget" Value="[MsiLogFileLocation]" />
<CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" />
這將日誌文件複製到一個約儘可能晚地在遊戲目錄下,但將缺席至少一些日誌的尾端:
<Property Id="MsiLogging" Value="v!" />
<CustomAction Id="CopyLog" Execute="immediate"
ExeCommand="cmd /c copy [MsiLogFileLocation] C:\temp\log.txt"
Directory="TARGETDIR"
Impersonate="no"
Return="asyncNoWait" />
<InstallExecuteSequence>
<Custom Action="CopyLog" OnExit="success" />
</InstallExecuteSequence>
注意,這將不適用於C:
驅動器根目錄,因爲這需要管理權限。如果您確定缺少更多日誌,可以將OnExit='success'
更改爲After='InstallFinalize'
,並將CustomAction
上的Execute
屬性更改爲commit
。這應該允許它以管理員身份運行。
我如何從%TEMP%複製日誌到磁盤C:和修改C盤上他們的名字,我有兩個日誌(第二個是* _action.log) – Anton23
那麼,在'WixShellExecTarget'中,您可以將該值設置爲'複製[MsiLogFileLocation] c:\ installer.log'或類似的東西。但是這幾乎肯定會需要管理權限(即您的安裝程序以管理員身份運行)。 –
當我設置屬性: 我收到錯誤:'WixShellExecTarget'屬性的值包含'[MsiLogFileLocation]'非法提及另一物業。如果此值是一個字符串文字,而不是屬性引用,請忽略此警告。要使用另一個屬性的值設置屬性,請使用具有屬性和值屬性的CustomAction –
Anton23