2010-03-05 82 views
5

如何檢測安裝是否以靜默方式運行?在.NET中檢測無提示安裝自定義操作

我有一個自定義應用程序,我添加了一個.msi安裝程序項目。我使用/ qb開關運行.msi文件,並且在我的自定義安裝程序c#代碼中,我希望能夠檢測到這一點。

編輯:nobugs說要測試UILevel屬性。如何從System.Configuration.Install.Installer類派生的類訪問UILevel屬性?

+0

你在安裝什麼? C#?自定義應用? –

+0

我編輯了這個問題,指出它是一個自定義應用程序,我添加了一個安裝項目來創建.msi安裝程序。 –

回答

10

以從nobugz提示,我做了以下內容:

  1. 在自定義操作視圖的.msi安裝項目,我增加了以下我CustomActionData(通過我的習慣通過UILevel安裝程序):

    /UILevel = 「[UILevel]」

  2. 在用於從基類派生安裝代碼我的C#代碼,我添加代碼來獲得該值:

    string uiLevelString = Context.Parameters [「UILevel」];

  3. 然後很簡單地解析字符串的int值。如果值爲< = 3,則爲無提示安裝。

+1

可否請您詳細介紹第2步 - 您到底在哪裏編寫代碼,派生類的哪個事件?提前謝謝 –

+1

@Andrei Cristof在第2步中,我做了一個「安裝」方法的覆蓋。 –

0

首先我會指出InstallUtil是一個非常糟糕的模式。他們用完流程,用CLR版本對流程進行紋理化,當它們失敗時,即使在靜默安裝期間,它們也會引發1001錯誤模式對話框。

相反,您應該使用WiX的DTF模式。

MsiGetMode(Session.Mode)在推遲執行期間是有限的,所以你將不得不序列化和反序列化UILevel。

http://www.msifaq.com/a/1044.htm

相關問題