次の方法で共有


[キャンセル] ボタンをインストール中に非表示にする

コマンド ライン オプション、Windows インストーラー 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;  
}

スクリプトから [キャンセル] ボタンを非表示にするには、Installer オブジェクトUILevel プロパティに msiUILevelHideCancel を追加します。 次の 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 インストーラーへのメッセージの送信」を参照してください。

カスタム アクションの呼び出しでは、レコードを提供する必要があります。 [キャンセル] ボタンを指定するには、このレコードのフィールド 1 に値 2 を含める必要があります。 フィールド 2 には、値 0 または 1 のいずれかが含まれている必要があります。 フィールド 2 の値 0 はボタンを非表示にし、フィールド 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