如何檢測安裝是否以靜默方式運行?在.NET中檢測無提示安裝自定義操作
我有一個自定義應用程序,我添加了一個.msi安裝程序項目。我使用/ qb開關運行.msi文件,並且在我的自定義安裝程序c#代碼中,我希望能夠檢測到這一點。
編輯:nobugs說要測試UILevel屬性。如何從System.Configuration.Install.Installer類派生的類訪問UILevel屬性?
如何檢測安裝是否以靜默方式運行?在.NET中檢測無提示安裝自定義操作
我有一個自定義應用程序,我添加了一個.msi安裝程序項目。我使用/ qb開關運行.msi文件,並且在我的自定義安裝程序c#代碼中,我希望能夠檢測到這一點。
編輯:nobugs說要測試UILevel屬性。如何從System.Configuration.Install.Installer類派生的類訪問UILevel屬性?
以從nobugz提示,我做了以下內容:
在自定義操作視圖的.msi安裝項目,我增加了以下我CustomActionData(通過我的習慣通過UILevel安裝程序):
/UILevel = 「[UILevel]」
在用於從基類派生安裝代碼我的C#代碼,我添加代碼來獲得該值:
string uiLevelString = Context.Parameters [「UILevel」];
然後很簡單地解析字符串的int值。如果值爲< = 3,則爲無提示安裝。
可否請您詳細介紹第2步 - 您到底在哪裏編寫代碼,派生類的哪個事件?提前謝謝 –
@Andrei Cristof在第2步中,我做了一個「安裝」方法的覆蓋。 –
首先我會指出InstallUtil是一個非常糟糕的模式。他們用完流程,用CLR版本對流程進行紋理化,當它們失敗時,即使在靜默安裝期間,它們也會引發1001錯誤模式對話框。
相反,您應該使用WiX的DTF模式。
MsiGetMode(Session.Mode)在推遲執行期間是有限的,所以你將不得不序列化和反序列化UILevel。
你在安裝什麼? C#?自定義應用? –
我編輯了這個問題,指出它是一個自定義應用程序,我添加了一個安裝項目來創建.msi安裝程序。 –