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" über die Befehlszeile

Die Schaltfläche Abbrechen kann während der Installation mithilfe 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äche Ebenen. Die folgende Befehlszeile blendet die Schaltfläche Abbrechen aus und installiert Example.msi.

msiexec /I example.msi /qb!

Ausblenden der Schaltfläche "Abbrechen" aus 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 wird.

Um die Schaltfläche Abbrechen in einer Anwendung auszublenden, legen Sie INSTALLUILEVEL _ HIDECANCEL beim Aufrufen von MsiSetInternalUIfest. Im folgenden Beispiel wird die Schaltfläche Abbrechen ausgeblendet und Example.msi installiert.

#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 zur UILevel-Eigenschaft des Installerobjekts hinzu. Im folgenden VBScript-Beispiel wird die Schaltfläche Abbrechen ausgeblendet und Example.msi installiert.

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 teilen einer Installation ausblenden und aufheben, indem sie eine INSTALLMESSAGE _ COMMONDATA-Nachricht mithilfe einer benutzerdefinierten DLL-Aktion oder skripts sendet. Weitere Informationen finden Sie unter Dynamic Link Libraries, Scripts, Custom Actionsund Sending Messages to Windows Installer Using 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 entpackt die Schaltfläche. Beachten Sie, dass das Zuordnen eines Datensatzes der Größe 2 mit MsiCreateRecord die Felder 0, 1 und 2 bereitstellt.

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