다음을 통해 공유


설치 중 취소 단추 숨기기

명령줄 옵션, Windows Installer 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 Installer에 메시지 보내기를 참조하세요.

사용자 지정 작업 호출은 레코드를 제공해야 합니다. 취소 단추를 지정하려면 이 레코드의 필드 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