Freigeben über


Ausblenden der Schaltfläche Abbrechen während einer Installation

Sie können die Schaltfläche Abbrechen ausblenden, die zum Abbrechen einer Installation verwendet wird, indem Sie eine Befehlszeilenoption, die Windows Installer-API oder eine benutzerdefinierte Aktion verwenden. Die Schaltfläche Abbrechen kann für einen Teil oder die gesamte Installation ausgeblendet werden, je nachdem, welche Methode Sie verwenden.

Ausblenden der Schaltfläche Abbrechen in der Befehlszeile

Die Schaltfläche Abbrechen kann während der Installation mit der Befehlszeilenoption (!) ausgeblendet werden. Dies kann nur für eine einfache Installation auf Benutzeroberflächenebene (/qb) erfolgen. Die Schaltfläche Abbrechen ist für die gesamte Installation ausgeblendet. Weitere Informationen finden Sie unter Befehlszeilenoptionen und Benutzeroberflächenebenen. Die folgende Befehlszeile blendet die Schaltfläche Abbrechen aus und installiert Example.msi.

msiexec /I example.msi /qb!

Ausblenden der Schaltfläche Abbrechen in einer Anwendung oder einem Skript

Sie können eine Anwendung oder ein Skript schreiben, um die Schaltfläche Abbrechen auszublenden . Dies kann nur für eine einfache Installation auf Benutzeroberflächenebene erfolgen, sodass die Schaltfläche Abbrechen für die gesamte Installation ausgeblendet ist.

Um die Schaltfläche Abbrechen in einer Anwendung auszublenden, legen Sie beim Aufrufen von MsiSetInternalUI INSTALLUILEVEL_HIDECANCEL fest. Die folgende Befehlszeile blendet die Schaltfläche Abbrechen aus und installiert 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;  
}

Um die Schaltfläche Abbrechen im Skript auszublenden, fügen Sie msiUILevelHideCancel der Eigenschaft UILevel des Installer-Objekts hinzu. Das folgende VBScript-Beispiel blendet die Schaltfläche Abbrechen aus und installiert Example.msi.

Dim Installer As Object
Set Installer = CreateObject("WindowsInstaller.Installer")
Installer.UILevel = msiUILevelBasic + msiUILevelHideCancel
Installer.InstallProduct "example.msi"

Ausblenden der Schaltfläche Abbrechen für Teile einer Installation mithilfe einer benutzerdefinierten Aktion

Ihre Installation kann die Schaltfläche Abbrechen während der Teile einer Installation ausblenden und einblenden, indem eine INSTALLMESSAGE_COMMONDATA Nachricht mithilfe einer benutzerdefinierten DLL-Aktion oder eines Skripts gesendet wird. Weitere Informationen finden Sie unter Dynamic-Link-Bibliotheken, Skripts, benutzerdefinierte Aktionen und Senden von Nachrichten an Windows Installer mithilfe von MsiProcessMessage.

Ein Aufruf einer benutzerdefinierten Aktion muss einen Datensatz bereitstellen. Feld 1 dieses Datensatzes muss den Wert 2 (zwei) enthalten, um die Schaltfläche Abbrechen anzugeben. Feld 2 muss entweder den Wert 0 oder 1 enthalten. Der Wert 0 in Feld 2 blendet die Schaltfläche aus, und der Wert 1 in Feld 2 blendet die Schaltfläche aus. Beachten Sie, dass beim Zuordnen eines Datensatzes der Größe 2 mit MsiCreateRecord die Felder 0, 1 und 2 bereitgestellt werden.

Die folgende benutzerdefinierte DLL-Beispielaktion blendet die Schaltfläche Abbrechen aus.

#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;
}

Die folgende benutzerdefinierte VBScript-Aktion blendet die Schaltfläche Abbrechen aus.

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