Ukrywanie przycisku Anuluj podczas instalacji
Możesz ukryć przycisk Anuluj używany do anulowania instalacji przy użyciu opcji wiersza polecenia, interfejsu API Instalatora Windows lub akcji niestandardowej. Przycisk Anuluj może być ukryty dla części lub całej instalacji w zależności od używanej metody.
Ukrywanie przycisku Anuluj z wiersza polecenia
Przycisk Anuluj można ukryć podczas instalacji przy użyciu opcji wiersza polecenia (!). Można to zrobić tylko w przypadku podstawowej instalacji na poziomie interfejsu użytkownika (/qb). Przycisk Anuluj jest ukryty dla całej instalacji. Aby uzyskać więcej informacji, zobacz Command-Line Opcje i poziomy interfejsu użytkownika . Poniższy wiersz polecenia ukrywa przycisk Anuluj i instaluje Example.msi.
msiexec /I example.msi /qb!
Ukrywanie przycisku Anuluj z aplikacji lub skryptu
Możesz napisać aplikację lub skrypt, aby ukryć przycisk Anuluj. Można to zrobić tylko w przypadku podstawowej instalacji na poziomie interfejsu użytkownika, tak aby przycisk Anuluj był ukryty dla całej instalacji.
Aby ukryć w aplikacji przycisk Anuluj, ustaw INSTALLUILEVEL_HIDECANCEL podczas wywoływania MsiSetInternalUI. Poniższy przykład ukrywa przycisk Anuluj i instaluje 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;
}
Aby ukryć przycisk Anuluj ze skryptu, dodaj element msiUILevelHideCancel do właściwości UILevel obiektu Instalatora . Poniższy przykład w języku VBScript ukrywa przycisk Anuluj i instaluje Example.msi.
Dim Installer As Object
Set Installer = CreateObject("WindowsInstaller.Installer")
Installer.UILevel = msiUILevelBasic + msiUILevelHideCancel
Installer.InstallProduct "example.msi"
Ukrywanie przycisku Anuluj dla części instalacji przy użyciu akcji niestandardowej
Instalacja może ukryć i odkryć przycisk Anuluj w trakcie instalacji, wysyłając komunikat INSTALLMESSAGE_COMMONDATA przy użyciu niestandardowej akcji DLL lub skryptów. Aby uzyskać więcej informacji, zobacz Dynamic-Link biblioteki, skrypty, akcje niestandardowei wysyłanie komunikatów do Instalatora Windows przy użyciu MsiProcessMessage.
Wywołanie akcji niestandardowej musi zawierać rekord. Pole 1 tego rekordu musi zawierać wartość 2 (dwa), aby określić przycisk Anuluj. Pole 2 musi zawierać wartość 0 lub 1. Wartość 0 w polu 2 ukrywa przycisk i wartość 1 w polu 2 odkryje przycisk. Należy pamiętać, że przydzielenie rekordu o wielkości 2 za pomocą MsiCreateRecord zawiera pola 0, 1 i 2.
Następująca przykładowa akcja niestandardowa DLL ukrywa przycisk Anuluj.
#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;
}
Poniższa akcja niestandardowa VBScript ukrywa przycisk Anuluj.
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