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