[キャンセル] ボタンをインストール中に非表示にする
コマンド ライン オプション、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