[英]Using DTF to install msi package
我們正在嘗試使用Microsoft.Deployment.WindowsInstaller dll(C#)並安裝MSI軟件包。 我找不到很多與此相關的示例。 安裝成功。 如果發生錯誤,我想使用lcid以特定語言顯示錯誤消息。 所以我使用下面的方法傳遞錯誤代碼。 使用的MSI具有英語語言。
// Sample code for installing
try
{
Installer.InstallProduct(@"Sample.msi", "ALLUSERS=1 ADDLOCAL=ALL");
}
catch (InstallCanceledException ex)
{
errorList.Add(ex.ErrorCode + " " + ex.Message);
}
catch (InstallerException ex)
{
errorList.Add("Exit Code: " + ex.ErrorCode + ", " + ex.Message);
// Translate error message to different language
// ex.GetErrorRecord is always null,so the below method doesn't work.
string langError = Installer.GetErrorMessage(ex.GetErrorRecord(),System.Globalization.CultureInfo.GetCultureInfo(1031));
}
我使用的方法正確嗎? 請提供/指出我可以使用特定語言獲得正確錯誤消息的示例。
非常感謝。
您應該顯示更多的代碼,以便我們可以看到從哪里得到該錯誤,所以其中某些可能是您已經在做的事情。
如果您使用Installer.InstallProduct,則如果InstallerException失敗,則會得到InstallerException,該異常已經包含Message和ErrorCode。 基本上,您需要從MsiInstallProduct調用(在所有內容下面)得到的結果,這是包括您的1603的列表:
https://msdn.microsoft.com/zh-CN/library/aa368542(v=vs.85).aspx
但是您正在使用錯誤消息功能,該功能會在實際安裝過程中返回錯誤,其中包括“正在使用的文件” 1603:
https://msdn.microsoft.com/zh-CN/library/aa372835(v=vs.85).aspx
您可能已經完成了所有這些操作,如果是這樣,那么您的問題可能是關於如何以適當的語言從InstallerException中獲取錯誤消息。 因此,也許您需要調用GetErrorMessage重載,該重載使用InstallerException中的GetErrorRecord和區域性信息作為參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.