Поделиться через


Скрытие кнопки "Отмена" во время установки

Вы можете скрыть кнопку Отмена , которая используется для отмены установки с помощью параметра командной строки, 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