簡體   English   中英

MSI:在安裝的UI階段顯示消息框

[英]MSI: Show message box in UI phase of installation

我正在更新基於InstallShield的安裝程序。 我添加了一個新的托管自定義操作,該操作用C#編寫,並使用Wix DTF打包。 操作將被正確調用,並執行必要的操作。

我遇到的問題是向用戶顯示錯誤消息。

方法1: MsiProcessMessage

從我讀過的文章中,我了解到MsiProcessMessage是執行此操作的正確方法,但是此方法不適用於UI序列(在安裝程序實際開始復制文件和修改系統之前)。 在安裝順序中,此方法有效。 我使用的代碼如下:

Record record = new Record() { FormatString = "Password is not valid for this user." };
session.Message(
    InstallMessage.Error | (InstallMessage)(MessageBoxIcon.Error) | (InstallMessage)MessageBoxButtons.OK,
    record
);

使用MsiProcessMessage以UI順序(立即執行)顯示錯誤消息實際上是不可能的嗎?

方法2: MessageBox.Show

使用Windows.Forms可顯示消息框。 但是,消息顯示在安裝向導的背景中,並在Windows任務欄中顯示一個單獨的圖標。

有沒有一種方法可以獲取安裝向導的窗口句柄,並且可以解決此問題?

您並未完全提及,但是我猜您正在從DoAction ControlEvent調用自定義動作,該動作是通過單擊按鈕等內容發布的。 在幕后,這與在InstallUISequence中對其進行調度非常不同。 MsiProcessMessage在DoAction中不起作用

為了與Windows Installer UI體驗正確集成,應避免使用MessageBox.Show(方法2)。 更好的集成選項包括:

所有這三個都涉及編輯項目的UI,但方式有所不同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM