翻譯|使用教程|編輯:況魚杰|2019-11-29 14:22:24.113|閱讀 644 次
概述:本文將會討論各種技術,這些技術用于隱藏Windows Installer(Basic MSI)安裝所顯示的各種進度對話框上的取消按鈕。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
InstallShield是構建Windows安裝程序和MSIX包并直接在Microsoft Visual Studio中創建安裝的最快速最簡單的方法。借助InstallShield,您可以快速適應行業的變化,更快地進入市場并提供引人入勝的客戶體驗。
本文將會討論各種技術,這些技術用于隱藏Windows Installer(Basic MSI)安裝所顯示的各種進度對話框上的取消按鈕。
默認進度對話框
Windows Installer安裝對目標系統進行更改時,默認情況下,它將在進度對話框上向用戶顯示反饋。對于完整用戶界面的安裝或卸載,將顯示SetupProgress對話框。
對于基本UI安裝(通過運行命令msiexec / i product.msi / qb或通過從添加或刪除程序工具上的刪除按鈕啟動卸載來執行),將顯示一個類似于以下內容的較小的進度對話框:
在這兩種情況下,進度對話框都會顯示取消按鈕,用戶可以使用該按鈕退出安裝。 如果安裝以延遲模式運行,那么將執行執行腳本中包含的所有回滾操作。
禁用取消按鈕
在某些情況下,希望禁用取消按鈕。對于基本UI安裝,可以通過將感嘆號添加到/ qb開關來禁用取消按鈕,如在msiexec / i product.msi / qb!中一樣。在這種情況下,進度對話框如下所示。
禁用取消按鈕進行全UI安裝需要自定義操作。MsiProcessMessage函數和Session.Message方法支持常量,這些常量可以在進行數據傳輸時抑制取消按鈕。在VBScript自定義操作中,代碼可能如下所示:
Function HideCancel( ) Const msiMessageTypeCommonData = &H0B000000 Set rec = Installer.CreateRecord(2) rec.IntegerData(1) = 2 rec.IntegerData(2) = 0 Message msiMessageTypeCommonData, rec HideCancel = 1 ' return success to MSI End Function
如果您在InstallInitialize之后按Execute順序安排的立即模式自定義操作中調用此代碼,則SetupProgress對話框如下所示。
對于簡化UI或基本UI安裝,取消按鈕類似地被隱藏。執行相同任務的MSI DLL自定義操作的代碼可能如下所示。
#pragma comment(lib, "msi.lib") #include#include#includeUINT __stdcall HideCancelButton(MSIHANDLE hInstall) { PMSIHANDLE hRecord = MsiCreateRecord(2); if (!hRecord) return ERROR_INSTALL_FAILURE; MsiRecordSetInteger(hRecord, 1, 2); MsiRecordSetInteger(hRecord, 2, 0); MsiProcessMessage(hInstall, INSTALLMESSAGE_COMMONDATA, hRecord); return ERROR_SUCCESS; }
默認情況下,由于首次安裝和維護操作(包括卸載)將調用自定義操作,因此在維護模式和卸載期間,取消按鈕也將被隱藏。如果要控制隱藏取消按鈕的情況,則可以將條件附加到自定義操作。例如,要僅在卸載期間隱藏取消按鈕,可以在執行序列中(在InstallValidate操作之后的某個位置)使用條件REMOVE =“ ALL”。 有關此類條件的更多信息,請參見安裝和卸載條件>>。
若要重新顯示取消按鈕,可以使用類似的自定義操作,其中傳遞給Message或MsiProcessMessage的記錄的第二個字段設置為1而不是0。
推薦文章:
如果您想要購買正版授權InstallShield,可以聯系咨詢相關問題。
關注慧聚IT微信公眾號???,了解產品的最新動態及最新資訊。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: