Скрытие кнопки "Отмена" во время установки
Вы можете скрыть кнопку Отмена , которая используется для отмены установки с помощью параметра командной строки, API установщика Windows или настраиваемого действия. Кнопка Отмена может быть скрыта для части или всей установки в зависимости от используемого метода.
Скрытие кнопки "Отмена" из командной строки
Кнопка Отмена может быть скрыта во время установки с помощью параметра командной строки (!). Это можно сделать только для базовой установки на уровне пользовательского интерфейса (/qb). Кнопка Отмена скрыта для всей установки. Дополнительные сведения см. в разделах Параметры командной строки и Уровни пользовательского интерфейса. Следующая командная строка скрывает кнопку Отмена и устанавливает Example.msi.
msiexec /I example.msi /qb!
Скрытие кнопки "Отмена" из приложения или скрипта
Вы можете написать приложение или скрипт, чтобы скрыть кнопку Отмена . Это можно сделать только для базовой установки на уровне пользовательского интерфейса, чтобы кнопка Отмена была скрыта для всей установки.
Чтобы скрыть кнопку Отмена в приложении, задайте INSTALLUILEVEL_HIDECANCEL при вызове MsiSetInternalUI. В следующем примере кнопка Отмена скрыта и устанавливается 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 в свойство UILevelобъекта установщика. Следующий пример VBScript скрывает кнопку Отмена и устанавливает Example.msi.
Dim Installer As Object
Set Installer = CreateObject("WindowsInstaller.Installer")
Installer.UILevel = msiUILevelBasic + msiUILevelHideCancel
Installer.InstallProduct "example.msi"
Скрытие кнопки "Отмена" для частей установки с помощью настраиваемого действия
Во время установки можно скрыть и отобразить кнопку Отмена во время установки, отправив INSTALLMESSAGE_COMMONDATA сообщение с помощью настраиваемого действия или скриптов DLL. Дополнительные сведения см. в разделах Библиотеки динамической компоновки, скрипты, пользовательские действия и Отправка сообщений в установщик Windows с помощью MsiProcessMessage.
Вызов настраиваемого действия должен предоставлять запись. Поле 1 этой записи должно содержать значение 2 (два), чтобы указать кнопку Отмена . Поле 2 должно содержать значение 0 или 1. Значение 0 в поле 2 скрывает кнопку, а значение 1 в поле 2 — отображение кнопки. Обратите внимание, что при выделении записи размера 2 с помощью MsiCreateRecord предоставляются поля 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