共用方式為


在安裝期間隱藏取消按鈕

您可以使用命令列選項、Windows Installer API 或自訂動作來隱藏用來取消安裝的 [ 取消 ] 按鈕。 視您使用的方法而定,部分或所有安裝都可以隱藏 [取消 ] 按鈕。

從命令列隱藏取消按鈕

使用 [ (!) 命令列] 選項,即可在安裝期間隱藏 [ 取消 ] 按鈕。 這僅適用于基本使用者介面層級安裝 (/qb) 。 [ 取消] 按鈕會隱藏整個安裝。 如需詳細資訊,請參閱 命令列選項使用者介面層級。 下列命令列會隱藏 [ 取消] 按鈕並安裝Example.msi。

msiexec /I example.msi /qb!

從應用程式或腳本隱藏取消按鈕

您可以撰寫應用程式或腳本來隱藏 [取消] 按鈕。 這只能用於基本 UI 層級安裝,讓整個安裝隱藏 [ 取消] 按鈕。

若要隱藏應用程式的 [取消] 按鈕,請在呼叫 MsiSetInternalUI時設定INSTALLUILEVEL_HIDECANCEL。 下列範例會隱藏 [ 取消] 按鈕並安裝Example.msi。

#include <windows.h>
#include <stdio.h>
#include <Shellapi.h>
#include <msi.h>
#include <Msiquery.h>
#include <tchar.h>
#pragma comment(lib, "msi.lib")

int main()  
{

INSTALLUILEVEL uiPrevLevel = MsiSetInternalUI( INSTALLUILEVEL(INSTALLUILEVEL_BASIC | INSTALLUILEVEL_HIDECANCEL), 0); 
UINT uiStat = MsiInstallProduct(_T("example.msi"), NULL);

return 0;  
}

若要隱藏腳本中的[取消]按鈕,請將 msiUILevelHideCancel 新增至Installer 物件的UILevel屬性。 下列 VBScript 範例會隱藏 [ 取消] 按鈕並安裝Example.msi。

Dim Installer As Object
Set Installer = CreateObject("WindowsInstaller.Installer")
Installer.UILevel = msiUILevelBasic + msiUILevelHideCancel
Installer.InstallProduct "example.msi"

使用自訂動作隱藏安裝部分的取消按鈕

您的安裝可以使用 DLL 自訂動作或腳本傳送INSTALLMESSAGE_COMMONDATA訊息,以隱藏和取消隱藏安裝部分期間的 [ 取消 ] 按鈕。 如需詳細資訊,請參閱 動態連結程式庫腳本自訂動作,以及 使用 MsiProcessMessage 將訊息傳送至 Windows Installer

對自訂動作的呼叫必須提供記錄。 此記錄的欄位 1 必須包含值 2 (兩個) ,才能指定 [取消] 按鈕。 欄位 2 必須包含值 0 或 1。 Field 2 中的值為 0 會隱藏按鈕,而 Field 2 中的值 1 會取消隱藏按鈕。 請注意,使用 MsiCreateRecord 配置大小 2 的記錄會提供欄位 0、1 和 2。

下列範例 DLL 自訂動作會隱藏 [取消] 按鈕。

#include <windows.h>
#include <stdio.h>
#include <Shellapi.h>
#include <msi.h>
#include <Msiquery.h>

UINT __stdcall HideCancelButton(MSIHANDLE hInstall)
{
    PMSIHANDLE hRecord = MsiCreateRecord(2);
    if ( !hRecord)
        return ERROR_INSTALL_FAILURE;

    if (ERROR_SUCCESS != MsiRecordSetInteger(hRecord, 1, 2)
     || ERROR_SUCCESS != MsiRecordSetInteger(hRecord, 2, 0))
        return ERROR_INSTALL_FAILURE;

    MsiProcessMessage(hInstall, INSTALLMESSAGE_COMMONDATA, hRecord);

    return ERROR_SUCCESS;
}

下列 VBScript 自訂動作會隱藏 [取消] 按鈕。

Function HideCancelButton()

    Dim Record
    Set Record = Installer.CreateRecord(2)

    Record.IntegerData(1) = 2
    Record.IntegerData(2) = 0

    Session.Message msiMessageTypeCommonData, Record
 
    ' return success
    HideCancelButton = 1
    Exit Function

End Function