Gebruikersgestuurde installatie - Ontwikkelaarshandleiding
Door de gebruiker gestuurde installatie (UDI) vereenvoudigt de implementatie van Windows-clientbesturingssystemen®, zoals Windows 8.1, op computers met behulp van de besturingssysteemimplementatiefunctie (OSD) in Microsoft® System Center 2012 R2 Configuration Manager. UDI maakt deel uit van de Microsoft Deployment Toolkit (MDT).
Inleiding
Wanneer u besturingssystemen implementeert met behulp van de FUNCTIE OSD, moet u doorgaans alle benodigde informatie opgeven voor het implementeren van het besturingssysteem. De informatie wordt geconfigureerd in configuratiebestanden of in databases (zoals het CustomSettings.ini-bestand of de MDT-database [MDT DB]). U moet alle configuratie-instellingen opgeven voordat u de implementatie kunt initiëren.
UDI biedt een wizardgestuurde interface waarmee u configuratie-informatie kunt opgeven direct voordat de implementatie wordt uitgevoerd. Met dit gedrag kunt u algemene OSD-takenreeksen maken en vervolgens computerspecifieke informatie opgeven op het moment van implementatie, wat meer flexibiliteit biedt in het implementatieproces.
Doelgroep
Deze handleiding is geschreven voor de ontwikkelaars die aangepaste wizardpagina's maken voor de UDI-wizard en aangepaste wizardpagina-editors voor de UDI-wizard Designer. In deze handleiding wordt ervan uitgegaan dat u bekend bent met de ontwikkeling van Windows-toepassingen met behulp van:
C++, dat wordt gebruikt om aangepaste wizardpagina's te maken
Microsoft .NET Framework, dat wordt gebruikt voor het maken van aangepaste wizardpagina-editors
Windows Presentation Foundation (WPF), dat wordt gebruikt om aangepaste wizardpagina-editors te maken
Talen die WPF ondersteunt, zoals C#, C++ of Microsoft Visual Basic® .NET, die worden gebruikt om aangepaste wizardpagina-editors te maken
Over deze handleiding
Deze handleiding bevat de benodigde naslaginformatie om u te helpen de UTI voor uw organisatie aan te passen. In deze handleiding worden geen administratieve of operationele onderwerpen besproken, zoals het installeren van MDT (inclusief UDI), het configureren van UDI voor het implementeren van besturingssystemen en toepassingen of het uitvoeren van implementaties met behulp van de UDI-wizard. Zie de UDI-onderwerpen in De Microsoft Deployment Toolkit gebruiken, die deel uitmaakt van MDT voor meer informatie over deze onderwerpen.
Overzicht van UDI-ontwikkeling
Met UDI-ontwikkeling kunt u de functies die UDI biedt uitbreiden. Doorgaans is UDI-ontwikkeling vereist wanneer u aanvullende informatie wilt verzamelen die het UDI-implementatieproces verbruikt. Deze aanvullende informatie wordt meestal opgeslagen als takenreeksvariabelen die takenreeksstappen in een UDI-takenreeks in Configuration Manager lezen.
UDI-architectuur
Het hoofddoel van UDI-ontwikkeling is het maken van aangepaste wizardpagina's die kunnen worden weergegeven in de UDI-wizard. Door aangepaste wizardpagina's te maken, kunt u de bestaande functies van UDI uitbreiden om te voldoen aan de zakelijke en technische vereisten van uw organisatie. Een aangepaste wizardpagina verzamelt informatie naast of in plaats van de wizardpagina's die UDI biedt.
Afbeelding 1 illustreert de relatie tussen de wizard UDI Designer en de wizard UDI.
afbeelding 1. Relatie tussen de UDI-wizard en de UDI-wizard Designer
Afbeelding 1. Relatie tussen de UDI-wizard en de UDI-wizard Designer
Op conceptueel niveau omvat UDI-ontwikkeling het maken van:
Aangepaste wizardpagina's. Wizardpagina's worden weergegeven in de wizard UDI en verzamelen de informatie die nodig is om het implementatieproces te voltooien. U maakt wizardpagina's met C++ in Microsoft Visual Studio®. De aangepaste wizardpagina's worden geïmplementeerd als DLL's die door de UDI-wizard worden gelezen. De UDI Software Development Kit (SDK) bevat een voorbeeld van het maken van aangepaste wizardpagina's.
Editors voor aangepaste wizardpagina's. U gebruikt wizardpagina-editors om het gedrag van uw aangepaste wizardpagina te configureren. De pagina-editors van de aangepaste wizard worden geïmplementeerd als DLL's die door de wizard UDI Designer worden gelezen. U maakt wizardpagina-editors met behulp van:
WPF versie 4.0
Microsoft Prism versie 4.0
Microsoft Unity Application Block (Unity) versie 2.1
MDT bevat alle assembly's die nodig zijn om een aangepaste wizardpagina-editor te maken voor gebruik in de UDI-wizard Designer. De UDI SDK bevat een voorbeeld van het maken van aangepaste wizardpagina-editors.
Bovendien gebruikt de UDI-wizard Designer de configuratiebestanden van de wizardpagina-editor. U maakt de configuratiebestanden van de wizardpagina-editor als onderdeel van het proces voor het maken van uw aangepaste wizardpagina's en aangepaste wizardpagina-editors. De UDI-wizard Designer maakt de benodigde XML-informatie in het configuratiebestand van de UDI-wizard en het bijbehorende .app-bestand.
De UDI-ontwikkelomgeving voorbereiden
Voordat u begint met het maken van uw eigen aangepaste wizardpagina's en editors voor wizardpagina's, moet u de volgende stappen uitvoeren om de UDI-ontwikkelomgeving voor te bereiden:
Bereid de vereisten voor de UDI-ontwikkelomgeving voor, zoals beschreven in Vereisten voor de UDI-ontwikkelomgeving voorbereiden.
Configureer de UDI-ontwikkelomgeving zoals beschreven in De UDI-ontwikkelomgeving configureren.
Controleer of de UDI-ontwikkelomgeving correct is geconfigureerd, zoals beschreven in De UDI-ontwikkelomgeving verifiëren.
Vereisten voor de UDI-ontwikkelomgeving voorbereiden
Voer de volgende stappen uit om de vereisten voor de UDI-ontwikkelomgeving voor te bereiden:
Bereid de hardware perquisites van de UDI-ontwikkelomgeving voor, zoals beschreven in Hardwarevereisten voor de UDI-ontwikkelomgeving voorbereiden.
Bereid de software-perquisites voor de UDI-ontwikkelomgeving voor, zoals beschreven in Softwarevereisten voor de UDI-ontwikkelomgeving voorbereiden.
Hardwarevereisten voor de UDI-ontwikkelomgeving voorbereiden
De hardwarevereisten voor de UDI-ontwikkelomgeving zijn dezelfde hardwarevereisten voor de versie van Microsoft Visual Studio die u gebruikt. Zie de systeemvereisten voor elke editie in de Visual Studio-documentatie voor meer informatie over deze vereisten.
De softwarevereisten voor de UDI-ontwikkelomgeving voorbereiden
De UDI-ontwikkelomgeving heeft de volgende softwarevereisten:
Elk Windows-besturingssysteem dat Visual Studio 2010 ondersteunt (Windows 7 of Windows Server® 2008 R2 wordt aanbevolen.)
U hebt een Windows-besturingssysteem nodig dat ondersteuning biedt voor de processorarchitectuur waarvoor u wilt ontwikkelen. U kunt 32-bits en 64-bits UDI-ontwikkeling uitvoeren met behulp van een 64-bits besturingssysteem. U doet alleen 32-bits UDI-ontwikkeling op 32-bits besturingssystemen. Daarom moet u een 64-bits besturingssysteem gebruiken.
Opmerking
IntelItanium-versies (IA-64) van het Windows-besturingssysteem worden niet ondersteund voor UDI-ontwikkelomgevingen.
Zie de systeemvereisten voor elke editie in de Documentatie van Visual Studio voor meer informatie over de besturingssystemen die Visual Studio 2010 ondersteunt.
Microsoft .NET Framework versie 4.0 (vereist door Visual Studio 2010)
C++-taal (de taal die wordt gebruikt voor het uitbreiden van UDI-wizardpagina's)
Andere talen die WPF ondersteunt, zoals C#, Visual Basic .NET of C++/Common Language Infrastructure, die worden gebruikt om de UDI-wizard uit te breiden Designer wizardpagina-editors
Opmerking
De voorbeeldbroncode voor de UDI-wizard Designer wizardpagina-editors is geschreven in C#. Installeer de C#-taal als u de voorbeeldbroncode wilt gebruiken.
De UDI-ontwikkelomgeving configureren
Nadat aan de vereisten voor de UDI-ontwikkelomgeving is voldaan, voert u de volgende stappen uit om de UDI-ontwikkelomgeving te configureren:
Installeer Visual Studio 2010.
Zorg ervoor dat u de C++-taal en eventuele andere talen installeert die WPF ondersteunt.
Opmerking
De voorbeeldbroncode voor de wizard UDI Designer editorpagina's is geschreven in C#. Installeer de C#-taal als u de voorbeeldbroncode wilt gebruiken.
Zie Visual Studio installeren voor meer informatie over het installeren van Visual Studio 2010.
Installeer MDT.
Zie de sectie 'Installeren of upgraden naar MDT' in het MDT-document De Microsoft Deployment Toolkit gebruiken voor meer informatie over het installeren van MDT.
Maak in Windows Verkenner local_folder (waarbij local_folder een map is die zich op een lokaal station op de ontwikkelcomputer bevindt).
Kopieer de map installation_folder\SDK naar local_folder (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd en local_folder een map is die zich op een lokaal station op de ontwikkelcomputer bevindt).
U kopieert de SDK-map naar een andere locatie omdat MDT is geïnstalleerd in de map Program Files, waarnaar niet kan worden geschreven zonder verhoogde machtigingen. Als u de SDK-map naar een andere locatie kopieert, kunt u de bestanden in de SDK-map wijzigen zonder dat hiervoor verhoogde machtigingen nodig zijn.
Kopieer de map installation_folder\Templates\Distribution\Tools naar local_folder (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd en local_folder de map is die u eerder in het proces hebt gemaakt).
Wijzig de naam van de map local_folder\Tools in local_folder\OSDSetupWizard (waarbij local_folder de map is die u eerder in het proces hebt gemaakt).
Wanneer dit is voltooid, moet de mapstructuur onder local_folder eruitzien als de mappenstructuur die wordt geïllustreerd in afbeelding 2 (waarbij local_folder de map is die u eerder in het proces hebt gemaakt en in de afbeelding wordt weergegeven als UDIDevelopment ).
Afbeelding 2. Mapstructuur voor UDI-ontwikkeling
Afbeelding 2. Mapstructuur voor UDI-ontwikkeling
De UDI-ontwikkelomgeving controleren
Wanneer de UDI-ontwikkelomgeving is geconfigureerd, controleert u of de UDI-ontwikkelomgeving correct is geconfigureerd door ervoor te zorgen dat de voorbeeldprojecten correct worden gebouwd in Visual Studio 2010.
Controleer of de UDI-ontwikkelomgeving correct is geconfigureerd door te bepalen of:
Het SamplePage-project wordt correct gebouwd zoals beschreven in Controleren of het SamplePage-project correct wordt gebouwd
Het SampleEditor-project wordt correct gebouwd zoals beschreven in Controleren of het SampleEditor-project correct wordt gebouwd
Controleer of het SamplePage-project correct wordt gebouwd
Het project SamplePage bevat een voorbeeld van het maken van een aangepaste wizardpagina voor de UDI-wizard. Zie De Visual Studio-oplossing van SamplePage bekijken voor meer informatie over het SamplePage-project.
Controleren of het SamplePage-project correct wordt gebouwd
Start Visual Studio 2010.
Open het project SamplePage.
Het project SamplePage bevindt zich in de map local_folder\SDK\UDI\SamplePage (waarbij local_folder de map is die u eerder in het proces hebt gemaakt).
Klik in Visual Studio 2010 in Solution Explorer met de rechtermuisknop op het project SamplePage en selecteer vervolgens Eigenschappen.
Het dialoogvenster VoorbeeldPagina-eigenschappenpagina's wordt weergegeven.
Ga in het dialoogvenster Voorbeeldpagina-eigenschappenpagina's naar Configuratie-eigenschappen/foutopsporing.
Selecteer in de eigenschappen van foutopsporing onder Configuratiede optie Alle configuraties.
Typ in de eigenschappen voor foutopsporing onder Opdracht$(TargetDir)\OSDSetupWizard.exe.
Typ $(TargetDir) in de eigenschappen van Foutopsporing onder Werkmap.
Ga in het dialoogvenster Voorbeeldpagina-eigenschappenpagina's naar Configuratie-eigenschappen/buildgebeurtenissen/post-buildgebeurtenis.
Typ in de eigenschappen van de post-buildgebeurtenis onder Opdrachtregel het volgende:
copy /y "$(ProjectDir)..\..\..\..\OSDSetupWizard\x86\*.*" "$(TargetDir)" xcopy /y /i "$(ProjectDir)..\..\..\..\OSDSetupWizard\x86\en-us" "$(TargetDir)en-us" copy /y "$(ProjectDir)..\..\..\..\OSDSetupWizard\OSDResults\Images\UDI_Wizard_Banner.bmp" "$(ProjectDir)header.bmp" copy /y "$(ProjectDir)Config.xml" "$(TargetDir)" copy /y "$(ProjectDir)header.bmp" "$(TargetDir)header.bmp"
Selecteer OK in het dialoogvenster Voorbeeldpagina-eigenschappenpagina's.
Sla het project op.
Selecteer in het menu Foutopsporingde optie Foutopsporing starten.
Het dialoogvenster Microsoft Visual Studiowordt weergegeven waarin wordt aangegeven dat de bron verouderd is en wordt gevraagd of u het project wilt bouwen.
Selecteer Ja in het dialoogvenster Microsoft Visual Studio.
Het dialoogvenster Geen foutopsporingsgegevens wordt weergegeven met de melding dat er geen informatie over foutopsporing beschikbaar is voor OSDSetupWizard.exe.
Selecteer ja in het dialoogvenster Geen foutopsporingsgegevens.
De wizard UDI wordt geopend met de pagina van de aangepaste wizard weergegeven.
Controleer of u een waarde kunt selecteren in Kies uw locatie.
Selecteer annuleren in het formulier Wizard met voorbeeldpagina.
Het dialoogvenster Wizard Annuleren wordt weergegeven.
Selecteer Ja in het dialoogvenster Wizard Annuleren.
Sluit Visual Studio 2010.
Controleer of het SampleEditor-project correct wordt gebouwd
Het project SampleEditor bevat een voorbeeld van het maken van een aangepaste wizardpagina-editor voor de UDI-wizard Designer. Zie SamplePage Visual Studio Solution bekijken voor meer informatie over het SampleEditor-project.
Controleren of het SampleEditor-project correct wordt gebouwd
Start Visual Studio 2010.
Open het project SampleEditor.
Het project SampleEditor bevindt zich in de map local_folder\SDK\UDI\SampleEditor (waarbij local_folder de map is die u eerder in het proces hebt gemaakt).
Selecteer in Visual Studio 2010 in Solution Explorer het project SampleEditor.
Selecteer In het menu Project de optie Verwijzing toevoegen.
Het dialoogvenster Verwijzing toevoegen wordt geopend.
Selecteer in het dialoogvenster Verwijzing toevoegen het tabblad Bladeren .
Ga op het tabblad Bladeren naar installation_folder\Bin (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd). Selecteer de volgende bestanden en selecteer vervolgens OK:
Microsoft.Enterprise.UDIDesigner.Common.dll
Microsoft.Enterprise.UDIDesigner.DataService.dll
Microsoft.Enterprise.UDIDesigner.Infrastructure.dll
Microsoft.Practices.Prism.dll
Microsoft.Practices.ServiceLocation.dll
Microsoft.Practices.Unity.dll
RibbonControlsLibrary.dll
Opmerking
U kunt meerdere bestanden selecteren op het tabblad Bladeren door de Ctrl-toets ingedrukt te houden terwijl u de bestanden selecteert.
Ga in Solution Explorer naar SampleEditor/References.
Controleer of geen van de verwijzingen waarschuwingen of fouten bevat.
Klik in Solution Explorer met de rechtermuisknop op het project SampleEditor en selecteer vervolgens Eigenschappen.
Het dialoogvenster SampleEditor-eigenschappenpagina's wordt weergegeven.
Selecteer in het dialoogvenster SampleEditor-eigenschappenpagina's het tabblad Foutopsporing .
Selecteer op het tabblad Foutopsporingde optie Extern programma starten.
Typ in Extern programma starteninstallation_folder\Bin\UDIDesigner.exe(waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd) en selecteer vervolgens OK.
Tip
U kunt het beletselteken (...) selecteren om naar de map te bladeren en UDIDesigner.exe te selecteren.
Selecteer in het menu Bestandde optie Alles opslaan.
Kopieer het local_folder\SDK\SamplePage\SamplePage.dll.config-bestand naar de map installation_folder\Bin\Config ( waarbij local_folder de map is die u eerder in het configuratieproces op de ontwikkelcomputer hebt gemaakt eninstallation_folder de map is waarin u MDT hebt geïnstalleerd).
Selecteer in Visual Studio 2010 in het menu Foutopsporingde optie Foutopsporing starten.
De wizard UDI Designer wordt gestart.
Selecteer in de Designer van de wizard UDI de optie Openen op het lint.
Het dialoogvenster Openen wordt weergegeven.
Open in het dialoogvenster Openen het bestand local_folder\SDK\SamplePage\SamplePage\Config.xml (waarbij local_folder de map is die u eerder in het configuratieproces op de ontwikkelcomputer hebt gemaakt).
Het Config.xml-bestand wordt geopend en de Custom StageGroup wordt weergegeven in het detailvenster.
Selecteer in het detailvenster het tabblad Configureren .
Controleer de configuratie-informatie voor het vak Locatie , waaronder het volgende:
De knop Ontgrendeld , waarmee u het vak Locatie in- of uitschakelt
Standaardwaardevak, waarin u een standaardwaarde invoert die moet worden weergegeven in het vak Locatie
Beschrijvende weergavenaam die zichtbaar is op de overzichtspagina, waarin u de onderschrift invoert voor de informatie die wordt weergegeven op de pagina Samenvatting
Keuzelijst Locatie , met een lijst met mogelijke locaties
Sluit de wizard UDI Designer.
Sluit Visual Studio 2010.
De UDI SDK-voorbeelden bekijken
Voordat u begint met ontwikkelen, bekijkt u de voorbeelden in de UDI SDK. Gebruik de informatie in deze handleiding en de broncode in de voorbeelden om uw eigen aangepaste UDI-wizardpagina's en editors voor wizardpagina's te maken.
Bekijk de UDI SDK-voorbeelden door het volgende te bekijken:
Inhoud van de SDK-map die u eerder in het installatieproces hebt gekopieerd, zoals beschreven in De inhoud van de SDK-map controleren
Voorbeeld van pagina van de aangepaste UDI-wizard, zoals beschreven in De Voorbeeldpagina van Visual Studio-oplossing controleren
Voorbeeld van de pagina-editor van de aangepaste UDI-wizard, zoals beschreven in De SampleEditor Visual Studio-oplossing controleren
De inhoud van de SDK-map controleren
Tijdens de configuratie van de UDI-ontwikkelomgeving hebt u de SDK-map gekopieerd van de map waarin u MDT hebt geïnstalleerd naar een andere map die u hebt gemaakt. Tabel 1 bevat de mappen direct onder de SDK-map en een korte beschrijving van elke map.
Tabel 1. Mappen in de UDI SDK
Map | Deze map bevat |
---|---|
Bevat | De C++-headerbestanden die nodig zijn voor het maken van aangepaste wizardpagina's voor de UDI-wizard |
Libs | De C++-bibliotheekbestanden die worden gekoppeld aan uw aangepaste pagina; er zijn 32-bits en 64-bits versies van de statische koppelingsbibliotheken. Notitie: Itanium-versies van de bibliotheken (IA-64) zijn niet beschikbaar. |
SampleEditor | Een Visual Studio-project voor het bouwen van een aangepaste editor die wordt gebruikt voor het bewerken van de pagina SamplePage in de UDI-wizard Designer, die is geschreven in C# |
SamplePage | Een Visual Studio-project voor het bouwen van een aangepaste UDI-wizardpagina, die is geschreven in Visual C++ |
Bekijk de Visual Studio-oplossing SamplePage
Voordat u begint met het maken van uw aangepaste wizardpagina's en editors voor wizardpagina's, voert u de volgende taken uit om de UDI-ontwikkelomgeving voor te bereiden:
Bekijk de fasen in de levenscyclus van een UDI-wizardpagina, zoals beschreven in Levenscyclus van de wizardpagina controleren.
Controleer de Visual Studio-oplossing voor het SamplePage-voorbeeld in de UDI SDK, zoals beschreven in Voorbeeldvoorbeeld bekijken.
Levenscyclus van de wizardpagina bekijken
Een UDI-wizardpagina bevat methoden die overeenkomen met elke fase (of fase) van de levenscyclus van de pagina. Als onderdeel van het maken van uw aangepaste wizardpagina moet u deze methoden overschrijven met uw code. Tabel 2 bevat de methoden die u moet overschrijven en bevat een korte beschrijving van elke methode, inclusief wanneer de methode in de levenscyclus van de wizardpagina moet worden gebruikt.
Tabel 2. Methoden in de levenscyclus van een wizardpagina
Methode | Beschrijving |
---|---|
OnWindowCreated | Deze methode wordt eenmaal aangeroepen nadat het venster van de pagina is gemaakt. Voor deze methode schrijft u code die de pagina voor het eerst initialiseert en slechts eenmaal hoeft te worden uitgevoerd. Gebruik deze methode bijvoorbeeld om velden te initialiseren of om configuratiegegevens te lezen uit de Setter-elementen in het configuratiebestand van de UDI-wizard. |
OnWindowShown | Deze methode wordt aangeroepen telkens wanneer de pagina wordt weergegeven (weergegeven) in de UDI-wizard. Deze wordt aangeroepen wanneer de pagina voor het eerst wordt weergegeven en telkens wanneer u naar de pagina navigeert door Volgende of Terug te selecteren in de wizard. Voor deze methode schrijft u code waarmee de pagina wordt voorbereid om te worden weergegeven, bijvoorbeeld door geheugenvariabelen, takenreeksvariabelen of omgevingsvariabelen te lezen en vervolgens de pagina bij te werken op basis van eventuele wijzigingen in deze variabelen. |
OnCommonControlEvent | Deze methode kan worden aangeroepen wanneer de wizardpagina wordt weergegeven en een WM_NOTIFY bericht ontvangt van een onderliggende (meestal algemene besturingselementen). Schrijf voor deze methode code die WM_NOTIFY verwerkt op basis van het meldingsbericht. U kunt bijvoorbeeld reageren op gebeurtenissen van een algemeen besturingselement, zoals reageren op gebeurtenissen selecteren of dubbelklikken voor een TreeView-besturingselement . |
OnUnhandledEvent | Deze methode wordt aangeroepen wanneer er een niet-afgehandeld vensterbericht optreedt voor uw wizardpagina. Deze methode biedt de mogelijkheid om deze anders niet-verwerkte vensterberichten te onderscheppen en af te handelen. Schrijf voor deze methode code die de vensterberichten verwerkt die relevant zijn voor uw wizardpagina. Normaal gesproken hoeft u deze methode niet te overschrijven. |
OnNextSelected | Deze methode wordt aangeroepen wanneer u Volgende selecteert in de wizard. Voor deze methode schrijft u code waarmee de benodigde acties worden uitgevoerd voordat u naar de volgende wizardpagina gaat, bijvoorbeeld het uitvoeren van een validatie die lang kan duren. Als de validatie mislukt, kunt u de volgende aanvraag annuleren en een bericht weergeven. |
OnWindowHidden | Deze methode wordt telkens aangeroepen wanneer de pagina wordt verborgen wanneer de vorige of volgende wizardpagina wordt weergegeven. Schrijf voor deze methode code waarmee acties worden uitgevoerd voordat de pagina wordt verborgen, voordat een andere pagina wordt weergegeven. Normaal gesproken hoeft u deze methode niet te overschrijven. |
Bekijk het SamplePage-voorbeeld
Bekijk het SamplePage-voorbeeld met behulp van de volgende lijst, die de volgorde van gebeurtenissen tijdens de levenscyclus van de wizardpagina van het Voorbeeldpagina weergeeft:
De UDI-wizard, OSDSetupWizard.exe, leest de configuratiegegevens uit het configuratiebestand van de UDI-wizard in het voorbeeld (het Config.xml-bestand), zoals beschreven in Stap 1: De wizard UDI (OSDSetupWizard.exe) leest het Config.xml-bestand.
Met de UDI-wizard worden de DLL's geladen die vereist zijn voor elke wizardpagina die wordt vermeld in het configuratiebestand van de UDI-wizard, zoals beschreven in Stap 2: De wizard UDI laadt de DLL voor de pagina Aangepaste wizard.
De UDI-wizard geeft de aangepaste wizardpagina weer en maakt de gewenste interactie met besturingselementen mogelijk, zoals beschreven in Stap 3: De wizard UDI geeft de pagina van de aangepaste wizard weer.
Wanneer de aangepaste wizardpagina de gegevens heeft verzameld, voert u de benodigde taken uit voordat u Volgende selecteert om door te gaan naar de volgende wizard, zoals beschreven in Stap 4: De knop Volgende is geselecteerd op de pagina Aangepaste wizard.
Stap 1: de wizard UDI (OSDSetupWizard.exe) leest het Config.xml-bestand
Wanneer de UDI-wizard (OSDSetupWizard.exe) wordt gestart, wordt standaard het configuratiebestand van de UDI-wizard gelezen. Dit is het UDIWizard_Config.xml-bestand: het primaire configuratiebestand voor de UDI-wizard.
Opmerking
In het voorbeeld wordt het Config.xml-bestand gebruikt als configuratiebestand. In MDT is het standaardconfiguratiebestand het UDIWizard_Config.xml-bestand, dat zich bevindt in de map Scripts in het MDT Files-pakket voor configuratie.
U kunt het standaardconfiguratiebestand dat de UDI-wizard gebruikt overschrijven door de takenreeksstap van de UDI-wizard te wijzigen om de parameter /definition te gebruiken. Zie 'Het configuratiebestand overschrijven dat door de UDI-wizard wordt gebruikt' voor meer informatie over het overschrijven van het standaardconfiguratiebestand dat door de UDI-wizard wordt gebruikt.
De elementen op het hoogste niveau in het Config.xml-bestand zijn de
-
Zie Naslaginformatie over UDI-wizardconfiguratiebestand voor meer informatie over het schema van het configuratiebestand van de UDI-wizard en elk van deze elementen.
De wizard UDI scant het element DLL's op zoek naar de .dll bestanden die moeten worden geladen. In het voorbeeld worden twee .dll bestanden weergegeven: SamplePage.dll en SharedPages.dll. Deze .dll bestanden moeten zich in dezelfde map bevinden als OSDSetupWizard.exe: de map Extra\platform (waarbij het platform x86 is voor de 32-bits versie of x64 voor de 64-bits versie).
De wizard UDI scant het element Pages op zoek naar de pagina's die zijn gedefinieerd. In het voorbeeld worden twee pagina's gedefinieerd: Custom en SummaryPage. Het kenmerk Type van het element Pagina wordt gedefinieerd in het bestand PageClassIDs.h en definieert op unieke wijze het type van uw aangepaste pagina.
In het voorbeeld is het gedefinieerde type Microsoft.SamplePage.LocationPage. Vervang voor uw aangepaste pagina het volgende om mogelijke conflicten te voorkomen met andere pagina's die u in de toekomst kunt maken:
De naam van uw organisatie in de plaats van Microsoft.
Uw projectnaam in de plaats van SamplePage.
De naam van de aangepaste wizardpagina in de plaats van LocationPage.
Stap 2: De UDI-wizard Laadt de DLL voor de pagina Aangepaste wizard
Wanneer de UDI-wizard uw DLL laadt, roept deze de functie RegisterFactories aan , die moet worden geïmplementeerd in uw .dll-bestand. In het voorbeeld wordt deze functie geïmplementeerd in het bestand dllmain.ccp. Elke wizardpagina die u maakt, moet de functie RegisterFactories implementeren.
De functie RegisterFactories wordt gebruikt om de fabrieksklasse van de wizardpagina te registreren bij het klassefactoryregister voor de wizard UDI. Klassefactory's zijn klassen die een exemplaar van een andere klasse kunnen maken. De functie RegisterFactories maakt een nieuw exemplaar van een fabrieksklasse en geeft die klasse door aan het klassefactoryregister voor de wizard UDI, waardoor die factoryklasse beschikbaar is voor de wizard. De wizard UDI zoekt naar een fabrieksklasse die is geregistreerd met een id die overeenkomt met het kenmerk Type van het element Pagina voor de aangepaste wizardpagina.
In het voorbeeld wordt de id gedefinieerd als ID_Location in het bestand PageClassIds.h als Microsoft.SamplePage.LocationPage, dat overeenkomt met het kenmerk Type voor het element Page in het bestand Config.xml. ID_Location wordt doorgegeven als een parameter in de functie RegisterFactories die is geïmplementeerd in het bestand dllmain.ccp.
U kunt een functie maken met behulp van de functiesjabloon Register_naam om het maken van een nieuw factory-exemplaar te vereenvoudigen en het zojuist gemaakte exemplaar te registreren. De naamwaarde die wordt opgegeven met behulp van de functiesjabloon Register moet de interface iClassFactory implementeren. De ClassFactoryImpl-klasse verwerkt de meeste details voor het implementeren van een klassefactory.
U kunt ook de functie RegisterFactories gebruiken om taaktypen en validatortypen te registreren. Zie de volgende onderwerpen voor meer informatie:
Opmerking
Het voorbeeld bevat en registreert alleen de ene aangepaste wizardpagina. Het voorbeeld bevat geen aangepaste taken of validators en registreert dus geen aangepaste taken of validators.
Stap 3: De wizard UDI geeft de pagina van de aangepaste wizard weer
De pagina van de aangepaste wizard in het voorbeeld wordt gedefinieerd in het LocationPage.cpp-bestand. Wizardpagina's zijn afgeleid van sjabloonklassen die veel van de functionaliteit van een pagina bieden. Alle wizardpagina's moeten zijn afgeleid van de sjabloonklasse WizardPageImpl, waarmee de IWizardPage-interface wordt geïmplementeerd. Elke wizardpagina kan andere optionele sjabloonklassen en bijbehorende interfaces implementeren op basis van de behoeften van de pagina.
De sjabloonklasse WizardPageImpl heeft verschillende handige interfaces waarmee u aangepaste wizardpagina's kunt schrijven. Implementeer de sjabloonklasse WizardPageImpl als de basisklasse voor uw aangepaste wizardpagina.
Voor een lijst van de beschikbare:
Sjabloonklassen voor wizardpagina's, zie Helperklassen voor wizardpagina's
Interfaces voor de sjabloonklassen van de wizardpagina, zie Wizardpagina-interfaces
De aangepaste wizardpagina in het voorbeeld is afgeleid van de sjabloonklasse WizardPageImpl en implementeert de IWizardPage-interface. Daarnaast implementeert de aangepaste wizardpagina de IFieldCallback-interface . Beide worden geïmplementeerd in het LocationPage.cpp-bestand.
De voorbeeldpagina van de aangepaste wizard overschrijft de volgende methoden:
OpWindowCreated. De methode OnWindowCreated op de voorbeeldpagina van de wizard roept de volgende methoden aan:
AddField. Met deze methode wordt het besturingselement IDC_COMBO_LOCATION vak in de IDD_LOCATION_PAGE resource gekoppeld aan het element Gegevens met de naam Locatie in het Config.xml-bestand.
Naast de methode AddField kunt u de methoden AddRadioGroup en AddToGroup gebruiken om andere besturingselementen en gedrag te ondersteunen.
Opmerking
Zorg ervoor dat u de methode AddField, AddRadioGroup of AddToGroup aanroept voordat u de methode InitFields aanroept .
InitFields. Gebruik deze methode om de velden (besturingselementen) te initialiseren die u aan het formulier hebt toegevoegd. De aanwijzer van de pagina is een parameter. In het voorbeeld wordt deze aanwijzer doorgegeven, die verwijst naar de huidige pagina.
Opmerking
Als u het gebruik van deze aanwijzer wilt ondersteunen, moet u de interface IFieldCallback implementeren naast de interfaces die de sjabloonklasse WizardPageImpl ondersteunt.
De IFieldCallback-interface roept de methode SetFieldDefault aan, die wordt gebruikt om de standaardwaarden in te stellen voor andere besturingselementen dan tekstvak- en selectievakjebesturingselementen. In het voorbeeld stelt de methode SetFieldDefault de initiële index van het besturingselement keuzelijst met invoervak in op basis van de standaardwaarde die is opgegeven in het element Standaard voor het element Veld in het bestand Config.xml.
De methode OnWindowCreated stelt de formuliercontroller in met behulp van de IFormController-interface. Zie Het formulier instellen voor meer informatie over het instellen van de formuliercontroller.
InitLocations. Met deze methode wordt de keuzelijst met invoervak ingevuld in de lijst met locaties in het Config.xml-bestand. Het element Data en de onderliggende DataItem-elementen in het Confg.xml-bestand bieden de lijst met mogelijke waarden.
OnNextSelected. Met deze methode worden de volgende taken uitgevoerd:
Updates de takenreeksvariabele TSLocation met de waarde geselecteerd in de keuzelijst met invoervak met behulp van de methode SaveFields
Hiermee voegt u informatie toe die wordt weergegeven op de pagina Samenvatting met behulp van de methode SaveFields
Stap 4: De knop Volgende is geselecteerd op de pagina Aangepaste wizard
Wanneer de gebruiker de velden op de pagina van de aangepaste wizard voltooit, selecteert hij Volgende, waarmee de methode OnNextSelected wordt aangeroepen . De methode OnNextSelected voert alle benodigde taken uit voordat u doorgaat naar de volgende wizardpagina, zoals het vastleggen van eventuele configuratiewijzigingen die zijn aangebracht op de aangepaste wizardpagina.
Voor de voorbeeldpagina van de aangepaste wizard wordt de onderdrukking voor de methode OnNextSelected geïmplementeerd in het bestand LocationPage.ccp. In de methode OnNextSelected op de aangepaste voorbeeldpagina van de wizard worden de volgende methoden aangeroepen:
InitSection. Met deze methode initialiseert u de koptekst (label onderschrift) voor de samenvattingsgegevens die worden weergegeven op de pagina Samenvatting. Normaal gesproken kunt u deze waarde instellen met de functie DisplayName(). De gegevens die aan deze onderschrift zijn gekoppeld, worden opgeslagen met behulp van de methode SaveFields.
SaveFields. Met deze methode worden veldwaarden opgeslagen in takenreeksvariabelen en in de gegevens die worden weergegeven op de pagina Samenvatting .
Bekijk de Visual Studio-oplossing SampleEditor
Voordat u begint met het maken van uw eigen aangepaste wizardpagina's en editors voor wizardpagina's, moet u de volgende stappen uitvoeren om de UDI-ontwikkelomgeving voor te bereiden:
Bekijk de architectuur van de UDI-wizard Designer zoals beschreven in De UDI-wizard Designer-architectuur controleren.
Bekijk de onderdelen van een UDI-wizardpagina die kunnen worden aangepast met behulp van het configuratiebestand van de UDI-wizard, zoals beschreven in Configureerbare onderdelen van een UDI-wizardpagina controleren.
Bekijk het EditorPage-voorbeeld in de UDI SDK, zoals beschreven in Het editorpaginavoorbeeld controleren.
De UDI-wizard Designer-architectuur bekijken
De UDI Wizard Designer is ontwikkeld met behulp van WPF, Prism en Unity. De UDI-Designer wordt gebruikt voor het bewerken van het configuratiebestand (UDIWizard_Config.xml) van de UDI-wizard (OSDSetupWizard.exe) tijdens runtime. Het element Pages in het configuratiebestand van de UDI-wizard bevat een lijst met pagina's met een afzonderlijk pagina-element voor elke wizardpagina.
Wanneer u de configuratie-instellingen voor een wizardpagina bewerkt, Designer de wizard UDI de aangepaste pagina-editor laden die overeenkomt met het paginatype van de wizard. De aangepaste wizardpagina-editors worden ontwikkeld als WPF-gebruikersbesturingselementen. De pagina-editorpagina's van de aangepaste wizard gebruiken het MVVM-ontwerppatroon ( Model-View-ViewModel ) voor WPF.
Het MVVM-ontwerppatroon helpt de gebruikersinterface (UI; presentatie) te scheiden van de gegevens die worden gepresenteerd. De gegevens zijn een façade boven het element Page in het configuratiebestand van de UDI-wizard (het Config.xml-bestand in het voorbeeld), dat wordt geopend met behulp van de eigenschap CurrentPage van de IDataService-interface .
De wizard UDI Designer gebruikt de DependencyAttribute om toegang te krijgen tot de klasse DataService op basis van het afhankelijkheidsinjectieframework in Unity. Zie Voor meer informatie over het afhankelijkheidsinjectieframework in Unity Wat leven in uw toepassingen injecteren: het Unity-toepassingsblok leren kennen.
Configureerbare onderdelen van een UDI-wizardpagina bekijken
Wanneer u de aangepaste wizardpagina maakt, zijn sommige configuratie-instellingen mogelijk ingesteld in code en kunnen ze niet worden gewijzigd nadat u de pagina hebt gecompileerd. Voor andere configuratie-instellingen moet u echter toestaan dat deze configuratie-instellingen worden gewijzigd met behulp van de wizard UDI Designer.
Normaal gesproken worden de configuratie-instellingen die u wilt configureren met behulp van de UDI-wizard Designer opgeslagen in het configuratiebestand van de UDI-wizard (het Config.xml-bestand in het voorbeeld). U kunt echter ook uw eigen afzonderlijke configuratiebestand maken, indien nodig. Een voorbeeld van het gebruik van een afzonderlijk configuratiebestand is het bestand UDIWizard_Config.xml.app, dat wordt gebruikt voor de taak Application Discovery en het wizardtype ApplicationPage .
Hier volgt een lijst met de typische configuratie-instellingen die u kunt beheren met de wizard UDI Designer:
Veld. Met velden kunnen gebruikers invoer opgeven. Velden worden weergegeven als veldelementen in het configuratiebestand van de UDI-wizard (UDIWizard_Config.xml), dat de configuratie-instellingen voor elk veld bevat. De bijbehorende pagina-editor van de wizard moet een methode bieden voor het bewerken van de veldconfiguratie-instellingen voor het veld met behulp van FieldElementControl.
Eigenschappen. Setters helpen eigenschappen te maken voor entiteiten op de pagina, zoals pagina's in het element Pagina , velden in het element Veld of gegevens in de elementen Data of DataItem . U configureert eigenschappen in de Setter-elementen . Voeg een afzonderlijk Setter-element toe voor elke eigenschap die u wilt definiëren. U bewerkt de eigenschappen met behulp van SetterControl en configureert andere Setter-elementen met behulp van andere besturingselementen.
Gegevens. Gegevens worden gebruikt om informatie op te slaan voor gebruik door de wizardpagina en andere onderdelen. U kunt gegevens voor pagina's of velden definiëren met behulp van de elementen Data of DataItem . De gegevens kunnen worden gedefinieerd in een platte of hiërarchische structuur door het juiste gebruik van de elementen Data of DataItem . De Config.xml in het voorbeeld in de SDK laat zien hoe u platte gegevensstructuren bouwt.
De aangepaste wizardpagina-editor die u maakt, moet deze configuratie-instellingen kunnen beheren.
Bekijk het EditorPage-voorbeeld
Het EditorPage-voorbeeld wordt gebruikt voor het configureren van de configuratie-instellingen voor de wizardpagina SamplePage in het configuratiebestand van de UDI-wizard. Het editorpage-voorbeeld bevat de volgende primaire onderdelen:
Gebruikersinterface voor het configureren van de instellingen voor de keuzelijst met keuzelijst met invoervak voor locatie
Gebruikersinterface voor het toevoegen of bewerken van een locatie in de lijst met mogelijke locaties, die worden weergegeven in de keuzelijst met invoervak Locatie
Configuratie-instellingen die worden gelezen uit en opgeslagen in het configuratiebestand van de UDI-wizard
Ondersteunende code voor de andere onderdelen
Bekijk het EditorPage-voorbeeld in Visual Studio door de volgende stappen uit te voeren:
Controleer hoe de pagina-editor van de Wizard SampleEditor wordt geladen en geïnitialiseerd in de Designer van de wizard UDI, zoals beschreven in Pagina van de wizard Controleren Editor Laden en initialiseren.
Controleer de gebruikersinterface die wordt gebruikt voor het bewerken van de keuzelijst met locatie en LocationPageEditor.xaml.cs, zoals beschreven in De gebruikersinterface controleren die wordt gebruikt om de keuzelijst met locatie te configureren.
Controleer de gebruikersinterface die wordt gebruikt om locaties aan de lijst toe te voegen of te bewerken in de bestanden AddEditLocationView.xaml en AddEditLocationView.xaml.cs, zoals beschreven in De gebruikersinterface controleren die wordt gebruikt om de lijst met mogelijke locaties te wijzigen.
Controleer de code die wordt gebruikt voor het beheren van configuratiegegevens die zijn opgeslagen in het configuratiebestand van de UDI-wizard, zoals beschreven in De code controleren die wordt gebruikt om configuratiegegevens te beheren.
Pagina van de wizard controleren Editor laden en initialiseren
Aangepaste wizardpagina-editors worden geladen zoals vereist door de UDI-wizard Designer. De UDI-wizard Designer configuratiebestanden worden geladen wanneer de UDI-wizard Designer wordt gestart. De UDI-wizard Designer scant de map install_folder\Bin\Config (waarbij install_folder de naam is van de map waarin MDT is geïnstalleerd) op bestanden met een .config bestandsextensie.
Tijdens de configuratie van de UDI-ontwikkelomgeving hebt u het bestand SamplePage.dll.confg gekopieerd naar de map install_folder\Bin\Config. Wanneer u de UDI-wizard Designer start, wordt het bestand SamplePage.dll.confg gevonden en geladen.
De UDI-wizard Designer gebruikt de volgende kenmerken van het element Page in het bestand SamplePage.dll.confg om het EditorPage-voorbeeld te laden en te initialiseren:
DesignerAssembly. Dit kenmerk bepaalt de naam van het DLL-bestand dat moet worden geladen. Dit DLL-bestand moet in dezelfde map worden geplaatst als het UDIDesigner.exe-bestand, de map install_folder\Bin (waarbij install_folder de naam is van de map waarin MDT is geïnstalleerd).
DesignerType. Dit kenmerk is de Microsoft .NET-typenaam van de klasse die het WPF-gebruikersbeheer bevat.
Typ. Gebruik dit kenmerk om het paginatype van de aangepaste wizardpagina te configureren, dat door de UDI-wizard wordt geladen. De UDI-wizard Designer gebruikt dit kenmerk om het juiste pagina-element te vinden in het configuratiebestand van de UDI-wizard.
Dll. Gebruik dit kenmerk om het DLL-element te configureren in het configuratiebestand van de UDI-wizard, dat de wizard UDI Designer maakt.
Beschrijving. Gebruik dit kenmerk om informatie op te geven over de pagina-editor van de wizard. De waarde van dit kenmerk wordt weergegeven in het dialoogvenster Nieuwe pagina toevoegen in de UDI-wizard Designer, die wordt gebruikt om de wizardpagina toe te voegen aan de Paginabibliotheek.
DisplayName. Gebruik dit kenmerk om de naam op te geven van de aangepaste wizardpagina die wordt weergegeven in de Designer van de wizard UDI. De waarde van dit kenmerk wordt weergegeven in het dialoogvenster Nieuwe pagina toevoegen in de UDI-wizard Designer, die wordt gebruikt om de wizardpagina toe te voegen aan de Paginabibliotheek.
In het voorbeeld is het type van de aangepaste wizardpagina SamplePageMicrosoft.SamplePage.LocationPage, die wordt opgeslagen in het Config.xml-bestand. Het Config.xml-bestand bevindt zich in de map local_folder\SDK\SamplePage\SamplePage (waarbij local_folder de map is die u eerder in het configuratieproces op de ontwikkelcomputer hebt gemaakt).
Bekijk de gebruikersinterface die wordt gebruikt om de keuzelijst met keuzelijst met invoervak voor locatie te configureren
Wanneer de pagina-editor van de wizard wordt geladen en geïnitialiseerd, wordt de pagina-editor van de wizard SampleEditor geladen wanneer een pagina met het type Microsoft.SamplePage.LocationPage wordt bewerkt. De gebruikersinterface voor de pagina-editor wordt opgeslagen in het bestand LocationPageEditor.xaml.
Als u de gebruikersinterface op het tabblad Ontwerpen en de code op het tabblad XAML bekijkt, ziet u de relatie tussen de grafische gebruikersinterface en de elementen en kenmerken in de Extensible Application Markup Language (XAML).
Als u bijvoorbeeld het element Controls:FieldElementControl in de XAML bekijkt, kunt u zien hoe dit zich verhoudt tot de indeling van de bijbehorende gebruikersinterface. Gebruik het element Controls:FieldElementControl om het besturingselement FieldElementControl te definiëren.
De bindingsparameters in het XAML-bestand verbinden de velden op de voorbeeldpagina-editor met de informatie in het configuratiebestand van de UDI-wizard. De volgende code koppelt bijvoorbeeld het tekstvak Standaardwaarde aan het element Standaard in het configuratiebestand van de UDI-wizard (Config.xml in het voorbeeld):
<TextBox Text="{Binding FieldData.DefaultValue,
UpdateSourceTrigger=PropertyChanged,
Mode=TwoWay}"/>
Zie Procedure: Gegevens beschikbaar maken voor binding in XAML voor meer informatie.
Gebruik het element Views:CollectionTControl.ColumnCollectionView in de XAML om de lijst met beschikbare locaties in de rasterweergave te bewerken. U gebruikt het besturingselement CollectionTControl om de rasterweergave weer te geven en de rasterweergave te binden aan het element Gegevens met de naam Locatie in het UDI-configuratiebestand.
Bekijk de gebruikersinterface die wordt gebruikt om de lijst met mogelijke locaties te wijzigen
De gebruikersinterface voor het wijzigen van de lijst met mogelijke locaties bestaat uit:
Een contextgevoelig menu en lintknoppen waarmee u items in de lijst met locaties kunt toevoegen, bewerken, verwijderen of wijzigen, zoals beschreven in Contextgevoelig menu controleren en lintknoppen voor het wijzigen van de lijst met locaties
Een dialoogvenster dat wordt gestart wanneer u een item wilt toevoegen of bewerken in de lijst met locaties, zoals beschreven in Het dialoogvenster controleren voor het toevoegen of bewerken van locaties
Bekijk contextgevoelige menu- en lintknoppen voor het wijzigen van de lijst met locaties
Wanneer u met de rechtermuisknop klikt in de keuzelijst met de lijst met locaties, wordt een contextgevoelig menu weergegeven. Het lint heeft bijbehorende knoppen waarmee u dezelfde taken kunt uitvoeren. Het besturingselement Views:CollectionsTControl in het bestand LocationPageEditor.xaml definieert de methoden die worden aangeroepen op basis van de uitgevoerde actie en eigenschappen die u als volgt instelt:
SelectedItem. Deze gegevensgebonden eigenschap wordt geactiveerd wanneer de gebruiker een item in de lijst selecteert. Deze eigenschap is gekoppeld aan de eigenschap CurrentLocation in het weergavemodel. Deze bevindt zich in het LocationPageEditorViewModel.cs-bestand en wordt gebruikt door het besturingselement CollectionTControl om het geselecteerde item door te geven wanneer u een bestaand item bewerkt of verwijdert.
AddItemAction. Deze actie wordt uitgevoerd wanneer de gebruiker de optie Item toevoegen selecteert in het contextgevoelige menu of de bijbehorende knoppen op het lint. Er is een gegevensbinding aan een eigenschap in het weergavemodel die het object AddLocationAction retourneert. Dit object is de methode AddLocationCallback , die zich in het LocationPageEditorViewModel.cs-bestand bevindt en het dialoogvenster in het bestand AddEditLocationView.xaml weergeeft.
EditItemAction. Deze actie wordt uitgevoerd wanneer de gebruiker de optie Item bewerken selecteert in het contextgevoelige menu. Er is een gegevensbinding aan een eigenschap in het weergavemodel die het object EditLocationAction retourneert. Dit object is de methode EditLocationCallback , die zich in het LocationPageEditorViewModel.cs-bestand bevindt en het dialoogvenster in het bestand AddEditLocationView.xaml weergeeft.
RemoveAction. Deze actie wordt uitgevoerd wanneer de gebruiker de optie Item verwijderen selecteert in het contextgevoelige menu. Er is een gegevensbinding met een eigenschap in het weergavemodel die het object RemoveAction retourneert. Dit object is de methode EditLocationCallback , die zich in het LocationPageEditorViewModel.cs-bestand bevindt, en toont een bericht dat het verwijderen van de locatie bevestigt.
Bekijk het dialoogvenster voor het toevoegen of bewerken van locaties
Als u een nieuwe locatie toevoegt aan de lijst met locaties of een bestaande locatie bewerkt, wordt er een bericht weergegeven dat zich in het bestand AddEditLocationView.xaml bevindt. Het bericht wordt weergegeven met behulp van de venstermethode ShowDialogWindow in het bestand LocationPageEditorViewModel.cs.
De gebruikersinterface in het bestand AddEditLocationView.xaml bestaat uit:
Een dialoogvensterframe met de naam DialogFrame, dat de volgende elementen bevat:
Een titel, die u configureert met het kenmerk DialogTitle van het dialoogvensterframe
Een knop OK , waarmee de retourstatus voor de eigenschap Approved wordt ingesteld op True (De retourstatus wordt gecontroleerd in de methode AddLocationCallback in het LocationPageEditorViewModel.cs-bestand om te bepalen of de gebruiker OK heeft geselecteerd.)
Een knop Annuleren , waarmee de retourstatus voor de eigenschap Goedgekeurd wordt ingesteld op Onwaar (De retourstatus wordt gecontroleerd in de methode AddLocationCallback in het LocationPageEditorViewModel.cs-bestand om te bepalen of de gebruiker Annuleren heeft geselecteerd.)
Een WPF-element dat het volgende bevat:
Een label, dat u configureert met het kenmerk Inhoud
Een tekstvak dat is gebonden aan het element Gegevens met de naam Locatie in het UDI-configuratiebestand (het Config.xml-bestand in het voorbeeld)
Bekijk de code die wordt gebruikt voor het beheren van configuratiegegevens
De configuratiegegevens voor uw aangepaste wizardpagina worden opgeslagen in het configuratiebestand van de UDI-wizard. Dit is het volgende:
Config.xml bestand in het voorbeeld van de UDI SDK (dit bestand bevat alleen de configuratie-instellingen voor het voorbeeld.)
UDIWizard_Config.xml bestand dat is meegeleverd met MDT, opgeslagen in de map installation_folder\Templates\Distribution\Scripts (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd); dit bestand bevat de configuratie-instellingen voor alle ingebouwde wizardpagina's en -fasen
In het voorbeeld van SampleEditor helpt de routine Locaties bij het beheren van de configuratiegegevens en bevindt zich in het LocationPageEditorViewModel.cs-bestand. De routine Locaties retourneert een lijst met de locaties uit het configuratiebestand van de UDI-wizard. De lijst die wordt geretourneerd, bevat een item voor elk DataItem-element in het configuratiebestand van de UDI-wizard.
Pagina's van de wizard Aangepaste UDI maken
Het proces op hoog niveau voor het maken van aangepaste UDI-wizardpagina's is als volgt:
Maak een kopie van de SamplePage-oplossing als uitgangspunt.
Plaats de gewenste besturingselementen (velden) op het formulier.
Schrijf code om de juiste taken uit te voeren wanneer de wizardpagina wordt geladen (onderdrukkingen voor de methode OnWindowCreated ), inclusief de volgende stappen:
Initialiseer het formulier.
Lees geheugenvariabelen, takenreeksvariabelen, omgevingsvariabelen of XML-bestandsinformatie (zoals Setter-eigenschappen ).
Schrijf code om de juiste taken uit te voeren wanneer de pagina wordt weergegeven (onderdrukkingen voor de methode OnWindowShown ), inclusief de volgende stappen:
Schakel besturingselementen in of uit op basis van gelezen informatie wanneer de pagina in stap 3 werd geladen.
Werk de besturingselementen bij op basis van gelezen informatie wanneer de pagina vervolgens in stap 3 is geladen, zoals de populatie van besturingselementen op basis van de gelezen informatie.
Schrijf code om de juiste taken uit te voeren terwijl de gebruiker communiceert met de wizardpagina.
Schrijf code om de juiste taken uit te voeren wanneer de gebruiker Volgende selecteert in de wizard UDI (onderdrukkingen voor de methode OnNextSelected ), inclusief de volgende stappen:
Werk geheugenvariabelen, takenreeksvariabelen, omgevingsvariabelen of XML-bestandsinformatie bij.
Overzichtspaginagegevens bijwerken (indien niet uitgevoerd door de velden op de pagina).
Bouw de oplossing.
Zorg ervoor dat de versie van het DLL-bestand dat u maakt hetzelfde processorplatform is als de installatie van MDT, met name het processorplatform voor Windows Preinstallation Environment (Windows PE). De wizard UDI kan worden uitgevoerd in:
Het bestaande besturingssysteem op de doelcomputer. U kunt 32-bits versies van uw wizardpagina uitvoeren op 32-bits of 64-bits Windows-besturingssystemen. U kunt echter alleen 64-bits versies van uw wizardpagina uitvoeren op 64-bits Windows-besturingssystemen.
Windows PE op de doelcomputer. Windows PE biedt geen ondersteuning voor het uitvoeren van 32-bits toepassingen op een 64-bits versie van Windows PE. U moet dus een versie hebben gebouwd voor uw wizardpagina voor elke processorarchitectuur van Windows PE die u wilt gebruiken.
Kopieer de DLL voor uw aangepaste wizardpagina naar installation_folder\Templates\Distribution\Tools\platformmap (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd en het platformx86 is voor de 32-bits versie of x64 voor de 64-bits versie).
Voer de stappen uit voor het maken van een aangepaste pagina-editor.
Pagina-editors voor aangepaste wizards maken
Het proces op hoog niveau voor het maken van aangepaste UDI-wizardpagina-editors is als volgt:
Maak een kopie van de SampleEditor-oplossing als uitgangspunt.
Maak de gebruikersinterface van de primaire pagina-editor in een .xaml-bestand.
Voeg exemplaren van het besturingselement FieldElementControl toe zoals vereist door de wizardpagina die moet worden geconfigureerd (indien nodig).
Voeg exemplaren van het besturingselement SetterControl toe zoals vereist door de wizardpagina die moet worden geconfigureerd (indien nodig).
Voeg exemplaren van het besturingselement CollectionTControl toe zoals vereist door de wizardpagina die moet worden geconfigureerd (indien nodig).
Voeg de IDataService-interface toe.
Schrijf de juiste code om het configuratiebestand van de UDI-wizard bij te werken op basis van de configuratie-instellingen die moeten worden geconfigureerd met behulp van de aangepaste wizardpagina-editor.
Maak onderliggende dialoogvensters in een .xaml-bestand en roep deze aan vanuit de primaire pagina-editor met behulp van de interface IMessageBoxService , zoals vereist door de wizardpagina die moet worden geconfigureerd.
Voeg de juiste interfaces toe aan de UDI-wizard Designer lint op basis van de vereisten van de wizardpagina die moet worden geconfigureerd.
Bouw de oplossing.
Opmerking
Zorg ervoor dat de versie van het DLL-bestand dat u maakt hetzelfde processorplatform is als de installatie van MDT. Als u bijvoorbeeld de 64-bits versie van MDT installeert, bouwt u vervolgens een 64-bits versie van uw aangepaste pagina-editor.
Maak een UDI-wizard Designer configuratiebestand om de benodigde DLL's te laden en wijs de wizardpagina-editor toe aan de bijbehorende wizardpagina (het SamplePage.dll.config-bestand in het voorbeeld).
Zie het element DesignerMappings , onderliggende elementen en bijbehorende kenmerken voor meer informatie over de elementen die nodig zijn om de toewijzing tussen de wizardpagina en de pagina-editor van de wizard uit te voeren.
Kopieer de wizard UDI Designer configuratiebestand dat u in de vorige stap hebt gemaakt naar de map installation_folder\Bin\Config (waarbij installation_folder de map is waarin u de MDT-versie hebt geïnstalleerd).
Kopieer de DLL voor de aangepaste wizardpagina-editor naar de map installation_folder\Bin (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd).
Aangepaste UDI-taken maken
UDI-taken zijn DLL's die zijn geschreven in C++ waarmee de ITask-interface wordt geïmplementeerd. U registreert het DLL-bestand bij de UDI-wizard Designer taakbibliotheek door een UDI-wizard te maken Designer configuratiebestand (.config bestand) en deze te plaatsen in de map installation_folder\Bin\Config (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd).
Opmerking
U kunt een DLL maken met wizardpagina's, taken en validators in hetzelfde .dll-bestand. U kunt ook één UDI-wizard maken Designer configuratiebestand (.config) dat de configuratie-instellingen bevat voor de wizardpagina's, taken en validators in het DLL-bestand.
Aangepaste UDI-taken maken
Schrijf code waarmee de ITask-interface en de volgende methoden worden geïmplementeerd:
Schrijf code waarmee de aangepaste taakklassefactory wordt geregistreerd bij het fabrieksregister.
Bouw de oplossing voor uw aangepaste taak.
Opmerking
Zorg ervoor dat de versie van het DLL-bestand dat u maakt hetzelfde processorplatform is als de installatie van MDT. Als u bijvoorbeeld de 64-bits versie van MDT installeert, bouwt u een 64-bits versie van uw aangepaste UDI-taak.
Maak een taakelement onder het element TaskLibrary in de wizard UDI Designer configuratiebestand dat vergelijkbaar is met het volgende fragment:
<Task DLL="OSDRefreshWizard.dll" Description="Discovers supported applications for install." Type="Microsoft.OSDRefresh.AppDiscoveryTask" Name="Application Discovery"> <TaskItem Type="Setter" Name="Status Bitmap"> <Param Name="BitmapFilename"/> </TaskItem> <TaskItem Type="Setter" Name="Log File"> <Param Name="log"/> </TaskItem> <TaskItem Type="Setter" Name="Write Configuration File"> <Param Name="writecfg"/> </TaskItem> <TaskItem Type="Setter" Name="Read Configuration File"> <Param Name="readcfg"/> </TaskItem> </Task>
Opmerking
Alle taakelementen moeten de parameter BitmapFilename bevatten. Geef alle andere parameters op zoals vereist voor de taak. In het vorige fragment wordt bijvoorbeeld de logboekparameter gebruikt om een parameter op te geven voor de locatie van een logboekbestand.
Kopieer de wizard UDI Designer configuratiebestand dat u in de vorige stap hebt gemaakt naar de map installation_folder\Bin\Config (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd).
Kopieer de DLL voor uw aangepaste taak naar de platformmap installation_folder\Templates\Distribution\Tools\ (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd en het platformx86 is voor de 32-bits versie of x64 voor de 64-bits versie).
Aangepaste UDI-validators maken
UDI-validators zijn DLL's die zijn geschreven in C++ die de IValidator-interface implementeren. U registreert het DLL-bestand bij de UDI-wizard Designer validatorbibliotheek door een UDI-wizard te maken Designer-configuratiebestand (.config-bestand) en deze te plaatsen in de map installation_folder\Bin\Config (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd).
Aangepaste UDI-validators maken
Schrijf code waarmee een subklasse van de klasse BaseValidator wordt gemaakt en de volgende methoden worden geïmplementeerd:
Init(IControl *pControl, IWizardPageContainer *pContainer, IStringProperties *pProperties). De formuliercontroller roept het Init-lid aan om de validator te initialiseren. Deze methode moet de Init-methode voor de klasse BaseValidator aanroepen. Deze leest doorgaans alle eigenschappen die zijn ingesteld voor de validator uit het configuratiebestand van de UDI-wizard. De InvalidCharactersValidator-validator haalt bijvoorbeeld de waarde van de eigenschap InvalidChars op met behulp van deze methode.
IsValid. De formuliercontroller roept deze methode aan om te zien of het besturingselement geldige tekst bevat. Hier volgt een voorbeeld van de methode IsValid voor een validator waarmee wordt gevalideerd dat het veld niet leeg is:
BOOL IsValid(LPBSTR pMessage) { __super::IsValid(pMessage); _bstr_t text; m_pText->GetText(text.GetAddress()); return (text.length() > 0); }
Init(IControl *pControl, LPCTSTR-bericht). De formuliercontroller roept dit lid aan voor elke toetsaanslag en andere gebeurtenissen, zodat de validator de inhoud van het besturingselement en bijgewerkte berichten onder aan de wizardpagina kan valideren (of wissen).
Dit zijn doorgaans de enige methoden die u moet overschrijven. Afhankelijk van de validator moet u echter mogelijk andere methoden overschrijven in de subklasse van de BaseValidator-klasse die u maakt. Zie de klasse BaseValidator voor meer informatie over deze andere methoden.
Schrijf code waarmee de aangepaste taakklasse wordt geregistreerd bij de registerfactory.
Bouw de oplossing voor uw aangepaste taak.
Opmerking
Zorg ervoor dat de versie van het DLL-bestand dat u maakt hetzelfde processorplatform is als de installatie van MDT. Als u bijvoorbeeld de 64-bits versie van MDT installeert, bouwt u een 64-bits versie van uw aangepaste UDI-taak.
Maak een Validator-element onder het element ValidatorLibrary in de wizard UDI Designer configuratiebestand dat vergelijkbaar is met het volgende fragment:
<Validator <Validator DLL="" Description="Must follow a pre-defined pattern" Type="Microsoft.Wizard.Validation.RegEx" Name="NamedPattern"> <Param Description="Enter the message you want displayed when the text in this field doesn't match the pattern:" Name="Message" DisplayName="Message"/> <Param Description="The name of a pre-defined regular expression pattern. Must be Username, ComputerName, or Workgroup" Name="NamedPattern" DisplayName="Named Pattern"/> </Validator>
Waarschuwing
Alle Validator-elementen moeten de parameter Bericht bevatten. Geef alle andere parameters op zoals vereist door de validator. In het vorige fragment wordt bijvoorbeeld de parameter NamedPattern gebruikt om een parameter op te geven voor de naam van een vooraf gedefinieerd patroon voor reguliere expressies.
Kopieer de wizard UDI Designer configuratiebestand dat u in de vorige stap hebt gemaakt naar de map installation_folder\Bin\Config (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd).
Kopieer de DLL voor uw aangepaste taak naar de platformmap installation_folder\Templates\Distribution\Tools\ (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd en het platformx86 is voor de 32-bits versie of x64 voor de 64-bits versie).
Naslaginformatie over de UDI-wizard
Onderdelen van wizardpagina
U kunt een van de verschillende vooraf gemaakte onderdelen gebruiken om uw aangepaste pagina's te bouwen.
Onderdelenexemplaren maken
De UDI-wizard maakt gebruik van klassefactory's om nieuwe exemplaren van objecten voor u te maken. Deze factory's worden geregistreerd bij een fabrieksregister, waarbij een tekenreeks wordt gebruikt als sleutel voor de factory. Het onderdeel WmiRepository wordt bijvoorbeeld geïdentificeerd door de tekenreeks 'Microsoft.Wizard.WmiRepository', die beschikbaar is in het headerbestand IWmiRepository als ID_WmiRepository.
Ervan uitgaande dat u de pagina hebt geschreven als een subklasse van WizardPageImpl, kunt u als volgt een nieuw exemplaar van een WmiRepoistory maken:
PWmiRepository pWmi;
CreateInstance(Container(), ID_WmiRepository, &pWmi);
De functie CreateInstance is een typeveilige sjabloonfunctie voor het maken van nieuwe exemplaren van onderdelen. PWmiRepository is een slimme aanwijzer, zodat het aantal verwijzingen voor u afhandelt.
Creatable Components
Er is een set onderdelen die u kunt registreren bij het register. De eerste set onderdelen wordt altijd geregistreerd, omdat het uitvoerbare hoofdbestand van de UDI-wizard deze bevat. De andere twee sets onderdelen worden geleverd in 'optionele' DLL's. Deze onderdelen zijn alleen beschikbaar als het DLL-bestand wordt vermeld in de sectie DLL's van het XML-bestand .config. Uw code hoeft niet te weten welk uitvoerbaar bestand een specifiek onderdeel bevat.
De lijst met onderdeel-id's voor onderdelen (de naam van het onderdeel is hetzelfde als de id, maar zonder de initiële ID_) die zijn geregistreerd bij het fabrieksregister (gedefinieerd in OSDSetupWizard) wordt weergegeven in tabel 3.
Tabel 3. Onderdeel-id's
LEGITIMATIEBEWIJS | Beschrijving |
---|---|
ID_ACPowerTask | (ITask, IWizardComponent) Een preflight-taak die ervoor zorgt dat uw computer niet alleen op de batterij werkt |
ID_AppDiscoveryTask | (ITask, IWizardComponent) Een gespecialiseerde taak om te ontdekken welke software-items u op uw computer hebt geïnstalleerd |
ID_BackgroundTask | (IBackgroundTask, IWizardComponent) Kan worden gebruikt om een taak uit te voeren op een andere thread |
ID_CopyFilesTask | (ITask, IWizardComponent) Een taak voor het kopiëren van een of meer bestanden |
ID_FormController | (IFormController) U zult het liefst niet zelf een exemplaar hoeven te maken, omdat uw pagina een eigen exemplaar ontvangt |
ID_InvalidCharactersValidator | (IValidator) Zorgt ervoor dat er geen tekstveld tekens bevat uit een lijst die aan de validator is verstrekt |
ID_Logger | (ILogger) U zult het liefst niet zelf een exemplaar hoeven te maken, omdat uw pagina een aanwijzer naar het gedeelde exemplaar ontvangt |
ID_NonEmptyValidator | (IValidator) Een validator die ervoor zorgt dat er geen veld leeg is |
ID_PasswordValidator | (IValidator) Een validator die ervoor zorgt dat geen twee tekstvelden dezelfde inhoud hebben |
ID_Regex | (IRegEx) Evalueert reguliere expressies, op zoek naar overeenkomsten |
ID_RegExValidator | (IValidator) Een validator die valideert op basis van een reguliere expressie of een bekend patroon |
ID_SimpleStringProperties | (IStringProperties, ISimpleStringProperties) Biedt een eenvoudige manier om eigenschappen naar taken te verzenden zonder XML te gebruiken |
ID_ShellExecuteTask | (ITask, IWizardComponent) Een extern programma uitvoeren |
ID_SummaryBag | (ISummaryBag) Indirect beschikbaar vanaf uw pagina via de formuliermethode |
ID_TaskManager | (ITaskManager, IBackgroundCallback, IWizardComponent) Hiermee beheert u het uitvoeren van een set taken en de gebruikersinterface |
ID_WmiRepository | (IWmiRepository, IWizardComponent) Hiermee kunt u WMI-query's (Windows Management Instrumentation) uitvoeren |
ID_IXmlDocument | (IXmlDocument) Biedt een façade voor het lezen en schrijven van XML-documenten |
De gedefinieerde OSDRefreshWizard.dll, gedeelde pagina's en andere besturingsonderdelen worden weergegeven in Tabel 4 en Tabel 5.
Tabel 4. Adreslijstbesturingselementen
LEGITIMATIEBEWIJS | Beschrijving |
---|---|
ID_Directory | (IDirectory) Een gevel voor het verkrijgen van mapgegevens uit het bestandssysteem |
Tabel 5. Gedefinieerde SharedPages.dll
LEGITIMATIEBEWIJS | Beschrijving |
---|---|
ID_ADHelper | (IADHelper) Biedt een façade voor een beperkt aantal functies in Active Directory® Domeinservices (AD DS) |
ID_CpuInfo | (ICpuInfo) Bepaalt of uw CPU 32- of 64-bits is |
ID_DomainJoinValidator | (IDomainJoinValidator) Heeft enkele methoden om te controleren of een set referenties lid mag worden van een domein |
ID_DriveList | (IDriveList, IBindableList, IWizardComponent) Gebruikt WMI om een lijst met stations op uw computer op te halen |
ID_WiredNetworkTask | (ITask) Een taak die controleert of u bent verbonden met het netwerk met een vaste (in plaats van draadloze) netwerkadapter |
Besturingsonderdelen
U communiceert met de besturingselementen op uw pagina via de sjabloonfunctie GetControlWrapper , die toegang biedt tot een van de typen onderdelen die in tabel 6 worden vermeld.
Tabel 6. Onderdelen
Typen dialoogvensters voor besturingselementen | Beschrijving |
---|---|
CONTROL_CHECK_BOX | (ICheckBox) Een façade voor het werken met selectievakjebesturingselementen |
CONTROL_COMBO_BOX | (IComboBox) Een gevel voor besturingselementen met invoervak |
CONTROL_GENERIC | (IControl) Hiermee kunt u met de meeste typen besturingselementen werken om de in- en zichtbare status te beheren |
CONTROL_LIST_VIEW | (IListView) Een gevel die toegang biedt tot de functies van een lijstweergave |
CONTROL_PROGRESS_BAR | (IProgressBar) Een voorgevel voor het werken met de positie van een voortgangsbalkbesturing |
CONTROL_RADIO_BUTTON | (IRadioButton) Een gevel voor het werken met keuzerondje |
CONTROL_STATIC_TEXT | (IStaticText) Een gevel die lees-/schrijfmachtigingen biedt voor de tekst van een besturingselement, zoals een label of tekstvak |
CONTROL_TREE_VIEW | (ItreeView) Een gevel voor het werken met een besturingselement voor boomweergave |
Installatiekopieënlijstonderdeel
Dit onderdeel is een façade voor een besturingselement ImageList op uw pagina. U maakt een lijst met afbeeldingen via de interface IListView of ITreeView .
FormController-onderdeel
De wizard maakt dit onderdeel voor u en geeft het door aan uw pagina. U opent deze vanaf uw pagina met behulp van de methode Form , die door de basisklasse WizardPageImpl wordt geïmplementeerd.
InvalidCharacterValidator-onderdeel
Dit is een type validator dat u op een pagina kunt opnemen. De id is ID_InvalidCharactersValidator (gedefinieerd in IValidator.h), met de tekstwaarde 'Microsoft.Wizard.Validation.InvalidChars'.
Deze validator zoekt naar één eigenschap (een setter-element in het bestand .config) met de naam InvalidChars, een lijst met tekens die niet zijn toegestaan. De tekens in een tekstvak worden gecontroleerd; als de tekst tekens uit deze lijst bevat, meldt het onderdeel een fout.
Niet-mptyValidator-onderdeel
Dit is een type validator dat u op een pagina kunt opnemen. De id is ID_NonEmptyValidator (gedefinieerd in IValidator.h), met de tekstwaarde 'Microsoft.Wizard.Validation.NonEmpty'.
Deze validator meldt een fout als het tekstvak (of een ander besturingselement dat IStaticText ondersteunt) een lege tekenreekswaarde heeft.
PasswordValidator-onderdeel
Dit is een type validator dat u op een pagina kunt opnemen. De id is ID_PasswordValidator (gedefinieerd in IValidator.h), met de tekstwaarde 'Microsoft.Wizard.Validation.Password'.
Deze validator werkt met twee verschillende tekstbesturingselementen (besturingselementen die ondersteuning bieden voor IStaticText) en rapporteert een fout als ze niet dezelfde waarden bevatten. Met andere woorden, het mislukt als de tekstvakken Wachtwoord en Wachtwoord bevestigen niet overeenkomen.
Omdat deze validator twee besturingselementen vereist, heeft deze meer installatie nodig dan andere validators. De installatie kan er ongeveer als volgt uitzien:
Form()->AddToGroup(IDC_EDIT_PASSWORD, IDC_EDIT_PASSWORD2);
PValidator pValidator;
Form()->AddValidator(IDC_EDIT_PASSWORD, ID_PasswordValidator, pMessage, &pValidator);
PStaticText pPassword2;
GetControlWrapper(View(), IDC_EDIT_PASSWORD2, CONTROL_STATIC_TEXT, &pPassword2);
pValidator->SetProperty(0, pPassword2);
Eerst definieert u het besturingselement Wachtwoord bevestigen als een 'onderliggend' van het besturingselement Wachtwoord . Als de formuliercontroller het besturingselement Wachtwoord uitschakelt, wordt op die manier ook het besturingselement Wachtwoord bevestigen uitgeschakeld. Voeg vervolgens een wachtwoordvalidator toe aan het formulier. Geef ten slotte de wachtwoordvalidator op met de interface voor het besturingselement Wachtwoord bevestigen .
Vanwege de vereiste voor twee besturingselementen moet u code gebruiken om deze validator in te stellen in plaats van het .config XML-bestand.
RegExValidator-onderdeel
Dit is een type validator dat u op een pagina kunt opnemen. De id is ID_RegExValidator (gedefinieerd in IValidator.h), met de tekstwaarde 'Microsoft.Wizard.Validation.RegEx'.
Deze validator vergelijkt de inhoud van een tekst besturingselement (een besturingselement dat IStaticText ondersteunt) met een reguliere expressie en mislukt als de tekst niet overeenkomt met de reguliere expressie.
U kunt deze validator ook gebruiken met een vooraf gedefinieerd benoemd patroon. Als u een reguliere expressie wilt gebruiken, moet de XML een settereigenschap met de naam Patroon bevatten. Als u in plaats daarvan een benoemd patroon wilt gebruiken, gebruikt u een setter met de naam NamedPattern die is ingesteld op een van de waarden in tabel 7.
Tabel 7. Benoemde patroonsetters
Patroon | Beschrijving |
---|---|
Gebruikersnaam | Controleert of de tekst een van de formulierdomein\gebruiker of user@domain |
Computernaam | De naam moet tussen 1 en 15 tekens lang zijn en mag geen reeks tekens bevatten (zoals : en ?) |
Workgroup | De naam moet tussen 1 en 15 tekens lang zijn en mag geen reeks tekens bevatten (zoals =, +en ?) |
FactoryRegistry-onderdeel
Dit onderdeel houdt alle klasse factory's en services bij. Het implementeert de IFactoryRegistry-interface en is indirect beschikbaar via de containermethode van uw pagina. Bovendien laadt het register extensie-DLL's. Nadat een DLL is geladen, zoekt het register naar een geëxporteerde functie met de naam RegisterFactories. U moet deze functie implementeren en hierin de klassefactory's registreren voor uw pagina's, taken en validators (en eventuele andere klassefactory's die u wilt registreren). Hier volgt een voorbeeld van het voorbeeldproject:
extern "C" __declspec(dllexport) void RegisterFactories(IFactoryRegistry *factories)
{
Register<LocationPageFactory>(ID_LocationPage, factories);
}
Logger-onderdeel
Dit onderdeel is beschikbaar voor uw pagina via de Logger-methode (geïmplementeerd door WizardPageImpl). U gebruikt deze methode om vermeldingen naar het logboekbestand te schrijven. De inhoud van het logboekbestand is handig voor het diagnosticeren van problemen die gebruikers mogelijk de UDI-wizard hebben uitgevoerd.
PropertyBag-onderdeel
De eigenschappenverzameling is een container voor geheugenvariabelen. Deze is beschikbaar op uw pagina met behulp van Container()->Properties(). Geheugenvariabelen zijn handig voor het doorgeven van tijdelijke gegevens tussen verschillende pagina's.
TSVariableBag- en TSRepository-onderdelen
Met het onderdeel TSVariableBag kunt u takenreeksvariabelen lezen en schrijven. De waarden worden in het geheugen opgeslagen totdat de gebruiker Voltooien (standaard) selecteert. U kunt toegang krijgen tot de TSVariable-bag via de TSVariables-methode van de pagina (geïmplementeerd door de basisklasse WizardPageImpl ). Deze onderdelen registreren alle lees- en schrijfbewerkingen van takenreeksvariabelen.
WmiRepository-onderdeel
Dit onderdeel biedt een façade voor het werken met WMI-query's. U kunt de helperfunctie CreateInstance aanroepen met ID_WmiRepository om een exemplaar van dit onderdeel te verkrijgen, dat ondersteuning biedt voor de interface IWmiRepository . Dit onderdeel retourneert resultaatrecords via de IWmiIterator-interface .
Helperklassen voor wizardpagina's
U kunt aangepaste UDI-wizardpagina's maken met behulp van ingebouwde helperklassen van de UDI SDK. Tabel 8 bevat de helperklassen die u kunt gebruiken om aangepaste wizardpagina's te maken.
Tabel 8. Helperklassen
Helperklasse | Beschrijving |
---|---|
KlasseFactoryImpl | Dit is een handige basisklasse voor het maken van een klassefactory die u vervolgens kunt registreren bij het fabrieksregister. |
Interfacesjabloonklasse | Gebruik deze sjabloonklasse als u een onderdeel wilt bouwen dat meer dan één interface implementeert. |
Helperklasse pad | Deze klasse biedt algemene bestands-/mapbewerkingen. |
Aanwijzersjabloonklasse | Deze klasse biedt referentietelling voor levensduurbeheer in COM-onderdelen. Het is belangrijk om interfaces vrij te geven wanneer u er klaar mee bent. Deze sjabloonklasse verwerkt de levensduur automatisch. |
PUnknown-klasse | Deze klasse is een slimme aanwijzer specifiek voor de IUnknown-interface. Gebruik voor alle andere interfaces de sjabloonklasse Pointer. |
StringUtil Helper-klasse | Deze klasse biedt helpermethoden waarmee u gemakkelijker met tekenreeksen kunt werken. |
SubInterface-sjabloonklasse | Met deze basisklasse kunt u eenvoudiger een onderdeel implementeren dat ondersteuning biedt voor een interface die zelf wordt overgenomen van een andere interface. |
Sjabloonklasse UnknownImpl | Deze klasse verwerkt de meeste details van het maken van een COM-onderdeel. |
WizardComponent-sjabloonklasse | Deze basisklasse wordt gebruikt voor het maken van onderdelen die toegang nodig hebben tot de wizardservices, zoals het maken van onderdelen en logboekregistratie. |
Sjabloonklasse WizardPageImpl | Deze basisklasse moet worden gebruikt als basisklasse voor alle aangepaste wizardpagina's |
KlasseFactoryImpl
Dit is een handige basisklasse voor het maken van een klassefactory die u vervolgens kunt registreren bij het fabrieksregister.
Hier volgt een fragment uit het bestand LocationPage.h in het voorbeeldproject om de klasse ClassFactoryImpl te definiëren.
#pragma once
#include "ClassFactoryImpl.h"
class LocationPageFactory :public ClassFactoryImpl
{
protected:
IUnknown *CreateNewInstance();
};
Hier volgt een fragment uit het LocationPage.cpp-bestand op de voorbeeldwizardpagina die wordt gebruikt om de klassefactory voor de pagina te definiëren.
IUnknown *LocationPageFactory::CreateNewInstance()
{
return static_cast<IWizardPage *>(new LocationPage);
}
Interfacesjabloonklasse
Gebruik deze sjabloonklasse als u een onderdeel wilt bouwen dat meer dan één interface implementeert, bijvoorbeeld:
classLocationPage :public Interface<IFieldCallback, WizardPageImpl<IDD_LOCATION_PAGE>>
Met deze code maakt u een basisklasseketen die zowel IFieldCalback als de interfaces ondersteunt die WizardPageImpl ondersteunt (dit is toevallig IWizardPage).
Helperklasse pad
Deze klasse biedt algemene bestands-/mapbewerkingen:
static inline std::wstring GetModulePath(HINSTANCE hModule)
Het retourneert ook het volledige pad naar het .exe- of .dll-bestand met de instantie-ingang die u aan deze methode opgeeft:
static inline std::wstring GetModuleFilename(HINSTANCE hModule)
De klasse retourneert het volledige pad en de bestandsnaam van het .exe- en .dll-bestand met de instantie-ingang die u aan deze methode opgeeft:
static inline std::wstring GetDirectoryName(LPCWSTR fullName)
. . . of alleen het pad tijdens het strippen van de bestandsnaam:
static inline std::wstring GetFileName(LPCWSTR fullName)
Gezien een pad met een bestandsnaam, retourneert de padhelperklasse alleen de bestandsnaam:
static inline std::wstring Combine(LPCWSTR path, LPCWSTR name)
Ten slotte retourneert de klasse een nieuwe tekenreeks die het gecombineerde pad en de bestandsnaam (of een ander pad) is.
Aanwijzersjabloonklasse
Deze klasse wordt gedefinieerd in Pointer.h. Omdat COM-onderdelen gebruikmaken van referentietelling voor levensduurbeheer, is het belangrijk dat u altijd interfaces vrijgeeft wanneer u er klaar mee bent. Microsoft biedt een sjabloonklasse die de levensduur automatisch afhandelt. Als u bijvoorbeeld een slimme aanwijzer voor een XML-interface wilt, kunt u iets als dit schrijven:
Pointer<IXMLDOMNode> pNewChild
pXmlDom->CreateNode(NODE_ELEMENT, L"MyElement", L"", &pNewChild);
De eerste regel definieert de slimme aanwijzer. De tweede regel toont het ophalen van een slimme aanwijzer via een andere aanroep. De operator& geeft altijd een bestaande interface vrij als deze er een bevat en retourneert het adres voor de interne aanwijzer. Zodra u een aanwijzer als deze hebt opgehaald, roept de instantie van PointerRelease voor u aan wanneer de variabele buiten het bereik valt. Microsoft raadt u aan slimme aanwijzers te gebruiken in plaats van AddRef en Release handmatig aan te roepen.
Bovendien roept de aanwijzerklasse Smart Pointer QueryInterface aan om andere interfaces voor u op te halen. Wanneer het fabrieksregister bijvoorbeeld een nieuw exemplaar van een onderdeel maakt, bevat deze code als volgt:
PWizardComponent pComp = pUnknown;
if (pComp != nullptr)
pComp->SetContainer(m_pContainer);
De eerste regel roept QueryInterface achter de schermen aan om de interface IWizardComponent aan te vragen. De resulterende slimme aanwijzer is gelijk aan nullptr als het onderdeel die interface niet ondersteunt.
PUnknown-klasse
Deze klasse is een slimme aanwijzer specifiek voor de IUnknown-interface . Gebruik voor alle andere interfaces de sjabloonklasse Pointer .
StringUtil Helper-klasse
Deze klasse is gedefinieerd in Utilities.h en biedt helpermethoden waarmee u gemakkelijker met tekenreeksen kunt werken:
static inline int CompareIgnore(LPCWSTR first, LPCWSTR second)
Met deze methode worden twee tekenreeksen vergeleken terwijl hoofdletters worden genegeerd (zie Tabel 9).
Tabel 9. StringUtil Helper-klasse
Retourneert | Beschrijving |
---|---|
0 | Tekenreeksen komen overeen, waarbij hoofdletters worden genegeerd |
<0 | Eerste < seconde |
>0 | Eerste > seconde |
Hier volgt een voorbeeld:
static inline std::wstring Format(LPCWSTR input, int index, LPCWSTR value)
static inline std::wstring Format(LPCWSTR input, int index, DWORD value)
Deze methoden lijken een beetje op de Microsoft .NET Format-methoden in die zin dat parameters de vorm hebben van {0}. Ze voeren echter geen opmaak van de invoer uit, alleen vervanging:
static inline std::wstring Printf(std::wstring format, I val)
static inline std::wstring Printf(std::wstring format, I val1, J val2)
static inline std::wstring Printf(std::wstring format, I val1, J val2, K val3)
static inline std::wstring Printf(std::wstring format, I val1, J val2, K val3, L val4)
Dit zijn wrappers rond de StringCchPrintf die een wstring retourneren, zodat u zelf geen geheugen hoeft toe te wijzen aan tekenreeksen of buffers.
SubInterface-sjabloonklasse
Met deze basisklasse kunt u eenvoudiger een onderdeel implementeren dat ondersteuning biedt voor een interface die zelf wordt overgenomen van een andere interface. De interface ICheckBox neemt bijvoorbeeld over van IControl. Deze klasse wordt als volgt gebruikt om de CheckBoxWrapper te definiëren:
classCheckBoxWrapper :public SubInterface<IControl, UnknownImpl<ICheckBox> >
De basisinterface is de eerste parameter, terwijl de afgeleide interface de tweede parameter is.
Sjabloonklasse UnknownImpl
Deze klasse is gedefinieerd in UnknownImpl.h en verwerkt de meeste details van het maken van een COM-onderdeel. Hier volgt een voorbeeld van hoe u deze basisklasse zou gebruiken:
classDirectory :public UnknownImpl<IDirectory>
Deze code definieert een klasse die de IDirectory-interface ondersteunt.
WizardComponent-sjabloonklasse
Deze klasse is gedefinieerd in IWizardComponent.h en is een handige basisklasse voor het maken van onderdelen die toegang nodig hebben tot de wizardservices, zoals het maken en vastleggen van onderdelen.
Als voorbeeld ziet u hoe het onderdeel CopyFilesTask wordt gedefinieerd:
classCopyFilesTask :public WizardComponent<ITask>
{
...
De parameter voor deze sjabloonklasse is de 'hoofdinterface' die u wilt gebruiken voor uw onderdeel, die in het geval van taken ITask is. Als u WizardComponent gebruikt, betekent dit dat uw onderdeel zowel de interface ondersteunt die u opgeeft (ITask in dit voorbeeld) als IWizardComponent.
Wanneer u het class factory-register gebruikt om een nieuw onderdeel te maken, roept het register de methode IWizardComponent-SetContainer> van het onderdeel aan om uw onderdeel toegang te geven tot de wizardservices.
Sjabloonklasse WizardPageImpl
Gebruik deze klasse als de basisklasse voor uw aangepaste pagina's, bijvoorbeeld:
class LocationPage :public WizardPageImpl<IDD_LOCATION_PAGE>
De parameter is de resource-id voor uw dialoogvenstersjabloon.
Wizardpagina-interfaces
De UDI-wizard maakt gebruik van interfaces voor toegang tot de verschillende besturingselementen op uw pagina. Op uw pagina gebruikt u de functie GetControlWrapper om een besturingswrapper op te halen. Hier volgt een voorbeeld:
PStaticText pFormat;
GetControlWrapper(View(), IDC_CHECK_PARTITION, CONTROL_STATIC_TEXT, &pFormat);
Hier is PStaticText een slimme aanwijzer naar de IStaticText-interface . Slimme aanwijzers roepen automatisch de methode COM Release() aan wanneer ze buiten het bereik vallen of wanneer u het adres van een variabele (zoals &pFormat) doorgeeft aan een methode.
IADHelper Interface
__interfaceIADHelper : IUnknown
{
HRESULT Init(ILogger *pLogger);
HRESULT ValidLogon(LPCTSTR userName, LPCTSTR password, LPCTSTR domain);
HRESULT HasAccess(LPCTSTR username, LPCTSTR password, LPCTSTR domain, LPCTSTR computerName, LPCTSTR accountDomain);
};
HRESULT Init(ILogger *pLogger)
Initialiseer dit onderdeel en geef het door aan de logboekregistratie zodat het informatie kan vastleggen.
HRESULTValidLogon(LPCTSTR-gebruikersnaam, LPCTSTR-wachtwoord, LPCTSTR-domein)
Met deze methode wordt gecontroleerd of een set referenties geldig is, zoals wordt weergegeven in tabel 10.
Tabel 10. HResultValidLogon
HResult | Beschrijving |
---|---|
S_OK | Referenties zijn geldig |
S_FALSE | Referenties zijn ongeldig |
E_FAIL | Kan de domeincontroller niet vinden; logboeken controleren voor details |
HRESULT HasAccess(LPCTSTR-gebruikersnaam, LPCTSTR-wachtwoord, LPCTSTR-domein, LPCTSTR computerName, LPCTSTR-accountDomein)
Met deze methode wordt gecontroleerd of een set referenties lees-/schrijftoegang heeft tot het computerobject in AD DS, zoals wordt weergegeven in tabel 11.
Tabel 11. HResult HasAccess
HRESULT | Beschrijving |
---|---|
S_OK | De gebruiker heeft toegang |
E_FAIL | De gebruiker heeft geen toegang. Controleer het logboekbestand voor meer informatie. |
IBackgroundTask Interface
__interface IBackgroundTask : IUnknown
{
HRESULT Init(ITask *pTask, int id, IBackgroundCallback *pCallback);
void Start(void);
BOOL Running(void);
HRESULT Wait(DWORD waitMilliseconds);
HRESULT Terminate(DWORD exitCode);
HRESULT GetExitCode(LPDWORD pCode, HRESULT *pHresult);
HRESULT Close(void);
};
Overzicht
De pagina Voortgang gebruikt deze klasse om taken uit te voeren op een afzonderlijke thread. U kunt deze klasse ook gebruiken wanneer u bewerkingen wilt uitvoeren op een afzonderlijke thread. Taken zijn elke klasse die ondersteuning biedt voor de ITask-interface .
Deze interface wordt geïmplementeerd door het onderdeel ID_BackgroundTask ("Microsoft.Wizard.BackgroundTask") dat is gedefinieerd in de interface IBackgroundTask.h.
HRESULT Init(ITask *pTask, int id, IBackgroundCallback *pCallback)
Met deze interface wordt het onderdeel geïnitialiseerd, zoals wordt weergegeven in tabel 12.
Tabel 12. HRESULT Init
Parameter | Beschrijving |
---|---|
pTask | Aanwijzer naar de klasse die de code bevat die u wilt uitvoeren op een andere thread |
Legitimatiebewijs | Een getal dat u kunt gebruiken in de methode Voltooid van de callback om aan te geven welke taak is uitgevoerd; handig als u meerdere taken start met dezelfde callback-methode |
pCallback | Een klasse die de methode Finished implementeert, die wordt aangeroepen wanneer een taak wordt uitgevoerd; de aanroep van de methode Finished bevindt zich op de achtergrondthread, niet in de UI-thread |
void Start(void)
Deze methode start de taak op een achtergrondthread en retourneert de elementen in tabel 13.
Tabel 13. Achtergrondthread retourneren
Retourneert | Beschrijving |
---|---|
E_INVALIDARG | De taak wordt al uitgevoerd, dus u kunt deze nu niet starten. |
E_FAIL | Er is een probleem opgetreden bij het starten van de thread. |
S_OK | De thread is gestart. |
BOOL wordt uitgevoerd()
Deze methode retourneert WAAR als de achtergrondtaak momenteel wordt uitgevoerd en ONWAAR als deze niet wordt uitgevoerd.
HRESULT Wait(DWORD waitMilliseconds)
Deze methode wacht totdat de thread niet meer wordt uitgevoerd of het aantal milliseconden is verstreken.
HRESULT Terminate(DWORD exitCode)
Met deze methode wordt de thread die wordt uitgevoerd, beëindigd (zie Tabel 14 en Tabel 15). Het kan even duren voordat dit proces is voltooid nadat deze methode is geretourneerd.
Tabel 14. HRESULT Exit Code beëindigen
Parameter | Beschrijving |
---|---|
exitCode | De afsluitcode die wordt verzonden naar de methode Finished callback, die ook beschikbaar is via de methode GetExitCode . |
Tabel 15. Beëindigingscodes
Retourneert | Beschrijving |
---|---|
E_FAIL | De aanroep om te beëindigen is mislukt. |
S_OK | De aanvraag om de thread te beëindigen is geslaagd. |
HRESULT GetExitCode(LPDWORD pCode, HRESULT *pHresult)
Gebruik deze methode om de resultaten van het uitvoeren van de taak op de achtergrondthread op te halen (zie Tabel 16).
Tabel 16. Resultaatcodes
Parameter | Beschrijving |
---|---|
pCode | Wijs een DWORD aan die wordt ingesteld bij return of nullptr als u de retourwaarde niet nodig hebt. Bij het afsluiten wordt deze parameter ingesteld op STILL_ACTIVE als de thread wordt uitgevoerd, de code die wordt geretourneerd door de methode Execute van de taak of de waarde die is doorgegeven aan de methode Beëindigen als u die methode hebt aangeroepen. |
pHresult | Wijs een HRESULT aan die wordt ingesteld bij return of nullptr als u de HRESULT-waarde niet nodig hebt. |
HRESULT Close(void)
Met deze methode wordt de achtergrondthread vrijgegeven. Het retourneert E_INVALIDARG als de thread momenteel wordt uitgevoerd en S_OK anders.
ICheckBox-interface
__interface ICheckBox : IControl
{
void Check(BOOL check);
BOOL IsButtonChecked();
};
void Check (BOOL-controle)
Stel de ingeschakelde status van het selectievakje in. Wanneer de methode WAAR is, is het selectievakje ingeschakeld; wanneer de methode ONWAAR is, wordt het selectievakje uitgeschakeld.
BOOL IsButtonChecked()
Deze methode rapporteert de huidige controlestatus van een selectievakje.
IComboBox Interface
__interface IComboBox : IControl
{
HRESULT Bind([in] IBindableList *pList);
HRESULT Select(int index);
int Selected(void);
void Add([in] LPCTSTR caption);
HRESULT GetText([out, retval] LPBSTR pText);
void Clear();
};
Overzicht
Deze interface wordt geïmplementeerd door het onderdeel CheckBoxWrapper . U haalt een exemplaar van dit onderdeel op met behulp van de helperfunctie GetControlWrapper met het type CONTROL_COMBO_BOX.
HRESULT Bind([in] IBindableList *pList)
Gebruik deze methode wanneer u een gegevensbron hebt waarmee de interface IBindableList wordt geïmplementeerd. De keuzelijst initialiseert de inhoud met de bijschriften uit deze lijst.
HRESULT Select(int index)
Selecteer het item in de keuzelijst met invoervak in de index.
int Geselecteerd(ongeldig)
Deze methode retourneert de index van het geselecteerde item of -1 als er niets is geselecteerd.
void Add([in] LPCTSTR onderschrift)
Voeg handmatig een item toe aan de keuzelijst met invoervak.
HRESULT GetText([out, retval] LPBSTR pText)
Haal de tekenreeks van het geselecteerde item op in de keuzelijst met invoervak.
void Clear()
Verwijder alle items uit de keuzelijst met invoervak.
IControl Interface
__interface IControl : IUnknown
{
HRESULT SetEnable(BOOL enable);
BOOL IsEnabled(void);
HRESULT SetVisible(BOOL visible);
};
Overzicht
Deze interface wordt geïmplementeerd door het onderdeel ControlWrapper . U haalt een exemplaar van dit onderdeel op met behulp van de helperfunctie GetControlWrapper met het type CONTROL_GENERIC.
HRESULT SetEnable(BOOL inschakelen)
Schakel het besturingselement in of uit.
BOOL IsEnabled(void)
Retourneert WAAR als het besturingselement is ingeschakeld, ONWAAR als dit niet het geval is.
HRESULT SetVisible(BOOL visible)
Het besturingselement weergeven of verbergen.
ICpuInfo-interface
__interface ICpuInfo : IUnknown
{
BOOL Is64Bit(void);
};
Overzicht
U verkrijgt deze interface door een nieuw ID_CpuInfo-onderdeel te maken. Met één methode wordt aangegeven of de CPU 32 of 64 bits is. Houd er rekening mee dat als u een 32-bits besturingssysteem op een 64-bits computer hebt, deze methode WAAR retourneert, omdat deze alleen de breedte van de CPU rapporteert (niet het besturingssysteem).
IDirectory-interface
__interface IDirectory : IUnknown
{
BOOL FileExists(LPCWSTR name);
BOOL FindFirst([in] LPCWSTR name);
HRESULT FoundName([out, retval] LPBSTR name);
DWORD FoundAttributes(void);
BOOL FindNext(void);
void FinishFind(void);
};
Overzicht
Het onderdeel Map , dat u maakt met behulp van ID_Directory, biedt een façade voor het werken met mappen in het bestandssysteem.
BOOL FileExists(LPCWSTR-naam)
Deze methode retourneert TRUE als er een bestand bestaat met de naam die u opgeeft.
BOOL FindFirst([in] LPCWSTR-naam)
Met deze methode wordt een eerste overeenkomst gevonden voor de naam die u opgeeft. Het ondersteunt jokertekens en retourneert zowel bestands- als mapnamen. De methode retourneert WAAR als er een overeenkomst is gevonden, anders ONWAAR.
HRESULT FoundName([out, retval] LPBSTR name)
Met deze methode wordt de naam opgehaald van het bestand dat is gevonden met een aanroep naar FindFirst of FindNext.
DWORD FoundAttributes(void)
Deze methode retourneert het kenmerk voor het meest recent gevonden bestand of de meest recente gevonden map. U kunt code als volgt gebruiken om te testen of het een map is:
pDirectory->FoundAttributes() & FILE_ATTRIBUTE_DIRECTORY
BOOL FindNext(void)
Zoek de volgende. Deze methode retourneert WAAR als er een andere overeenkomst is gevonden, anders ONWAAR.
void FinishFind(void)
Met deze methode worden resources vrijgegeven die worden gebruikt voor de zoekbewerking.
IDomainJoinValidator Interface
__interface IDomainJoinValidator : IUnknown
{
HRESULT Init(ILogger *pLogger, IWizardPageContainer *pContainer, IStaticText *pUsername, IStaticText *pPassword, IStaticText *pComputerName);
HRESULT IsUsernameValid(LPCWSTR domainName);
BOOL CanModifyComputerAdEntry(LPCWSTR domainName);
};
Overzicht
U verkrijgt een exemplaar van deze interface met behulp van de waarde ID_DomainJoinValidator voor de sjabloonfunctie CreateInstance .
HRESULT Init(ILogger *pLogger, IWizardPageContainer *pContainer, IStaticText *pUsername, IStaticText *pPassword, IStaticText *pComputerName)
Initialiseer het exemplaar, zoals weergegeven in tabel 17.
Tabel 17. HRESULT Init - Initialisatie van exemplaren
Parameter | Beschrijving |
---|---|
pLogger | Het logboekregistratie-exemplaar, dat beschikbaar is voor uw pagina via de Logger-methode van de pagina |
pContainer | Geeft de resultaten van de containermethode van uw pagina door |
pUsername | Het tekstvak met de gebruikersnaam die moet worden gevalideerd |
pPassword | Het tekstvak met het wachtwoord dat moet worden gevalideerd |
PComputerName | Het tekstvak met de naam van de computer die uiteindelijk wordt toegevoegd aan het domein |
HRESULT IsUsernameValid(LPCWSTR domainName)
Deze methode gebruikt de methode IADHelper-ValidLogon> om het werk uit te voeren. Zie deze methode voor meer informatie.
BOOL CanModifyComputerAdEntry(LPCWSTR domainName)
Controleer of de gebruiker rechten heeft om de computervermelding te wijzigen. Het meeste werk wordt uitgevoerd door IADHelper-HasAccess>. Als deze methode ONWAAR retourneert, controleert u het logboekbestand voor meer informatie.
IDriveList-interface
__interface IDriveList : IUnknown
{
HRESULT Init(IWmiRepository *pWmi);
HRESULT SetWhereClause(LPCTSTR whereClause);
HRESULT SetMinimumDriveSize(__int64 size);
HRESULT Update(void);
HRESULT AddProperty(ENUM_DISK_QUERY_SECTION section, LPCTSTR propName, LPCTSTR propNameReturned);
size_t Count(void);
HRESULT GetProperty(size_t index, LPCTSTR propName, LPVARIANT value);
HRESULT GetCaption(size_t index, LPBSTR pCaption);
}
HRESULT Init(IWmiRepository *pWmi)
Roep deze methode aan voordat u andere onderdelen aanroept. U moet een nieuwe WmiRepository maken voordat u deze methode aanroept.
HRESULT SetWhereClause(LPCTSTR whereClause)
Met deze methode kunt u tekst toevoegen die wordt weergegeven als een 'where'-component in de query. De volgende regel retourneert bijvoorbeeld alleen USB-stations:
pDrives->SetWhereClause(L"WHERE InterfaceType='USB'");
HRESULT SetMinimumDriveSize(__int64 grootte)
Stel de minimale schijfgrootte in bytes in voor stations die worden geretourneerd door de query.
HRESULT Update(void)
Voer de query uit. De stationslijst die beschikbaar is na het aanroepen van deze methode, wordt gesorteerd op stationsletter.
HRESULT AddProperty(ENUM_DISK_QUERY_SECTION sectie, LPCTSTR propName, LPCTSTR propNameReturned)
Met deze methode worden de namen toegevoegd van aanvullende eigenschappen die u beschikbaar wilt maken in de queryresultaten. Roep deze methode aan voordat u Update aanroept. Tabel 18 toont drie van de nuttige eigenschappen.
Tabel 18. HRESULT AddProperty: nuttige eigenschappen
Afdeling | Eigenschap | Beschrijving |
---|---|---|
DISKQUERY_LOGICALDISK | Grootte | De grootte, in bytes, weergegeven als een tekenreeks |
DISKQUERY_DISKPARTITION | DiskIndex | Het schijfnummer als geheel getal, beginnend met 0 |
DISKQUERY_LOGICALDISK | VolumeName | Het volumelabel |
size_t Count(void)
Het aantal records dat de query retourneert. Roep Update aan voordat u deze methode aanroept.
HRESULT GetProperty(size_t index, LPCTSTR propName, LPVARIANT-waarde)
Met deze methode wordt de waarde van een eigenschap opgehaald uit de queryresultaten, zoals weergegeven in tabel 19.
Tabel 19. HRESULT GetProperty
Parameter | Beschrijving |
---|---|
Index | Index op basis van nul naar de resultaatrecord |
propName | Naam van de eigenschap, zoals 'Grootte' |
Value | Bij het retourneren bevat deze parameter een variantwaarde van de eigenschap |
HRESULT GetCaption(size_t index, LPBSTR pCaption)
Met deze methode wordt de onderschrift opgehaald voor een record die hetzelfde is als de eigenschap Bijschrift.
IImageList-interface
__interface IImageList
{
HRESULT CreateImageList(int width, int height, UINT flags);
HImageList GetImageList(void);
int AddImage(HInstance hInstance, int resourceId);
};
Overzicht
Deze interface wordt geïmplementeerd door het onderdeel ImageList . U haalt een exemplaar van dit onderdeel op uit de IListView-interface .
HRESULT CreateImageList(breedte, hoogte, UINT-vlaggen)
Maak een nieuwe lijst met installatiekopieën die door dit onderdeel worden beheerd. Roep deze methode slechts één keer aan.
HImageList GetImageList(void)
Deze methode retourneert de ingang voor de lijst met installatiekopieën voor het geval u andere bewerkingen in de lijst met installatiekopieën moet uitvoeren.
int AddImage(HInstance hInstance, int resourceId)
Voeg vanuit een resource een nieuwe afbeelding toe aan de lijst met afbeeldingen, zoals wordt weergegeven in Tabel 20.
Tabel 20. HRESULT IImageList-interface
Parameter | Beschrijving |
---|---|
hInstance | Exemplaargreep van de module die de bitmapresource bevat |
resourceId | Id van de resource die in de lijst met installatiekopieën moet worden geladen |
IListView-interface
__interface IListView : IControl
{
int AddItem([in] LPCTSTR text);
int AddColumn(int width, [in] LPCTSTR text);
HRESULT SetSubItem(int index, int column, [in] LPCTSTR text);
int GetWidth(void);
void SetExtendedStyle(DWORD style);
int GetSelectedItem(void);
HRESULT SelectItem(int index);
BOOL IsItemChecked(int index);
int GetItemCount(void);
HRESULT CreateImageList(int width, int height, UINT flags);
int AddImage(HINSTANCE hInstance, int resourceId);
HRESULT SetImage(int index, int imageIndex);
HRESULT Clear(void);
};
Overzicht
Deze interface wordt geïmplementeerd door het onderdeel ControlWrapper . U haalt een exemplaar van dit onderdeel op met behulp van de helperfunctie GetControlWrapper met het type CONTROL_LIST_VIEW.
int AddItem([in] LPCTSTR text)
Voeg een nieuwe rij toe aan de keuzelijst. De methode retourneert de index van het item dat zojuist is toegevoegd.
int AddColumn(int width, [in] LPCTSTR text)
Voeg een nieuwe kolom toe aan de lijstweergave.
HRESULT SetSubItem(int-index, int-kolom, [in] LPCTSTR-tekst)
Stel de tekst in een andere kolom dan de eerste kolom van de keuzelijst in, zoals wordt weergegeven in tabel 21.
Tabel 21. HRESULT SetSubItem
Parameter | Beschrijving |
---|---|
index | De index van het lijstitem dat u wilt wijzigen |
kolom | De index van de kolom die u wilt bijwerken; de eerste kolom wordt ingesteld met AddItem, kolommen twee en volgende worden ingesteld met deze methode |
Sms | De tekenreeks die in de kolom wordt weergegeven |
int GetWidth(void)
Deze methode retourneert de breedte van het hele tekstvak.
void SetExtendedStyle(DWORD-stijl)
Met deze methode kunt u uitgebreide stijlen instellen voor de keuzelijst, bijvoorbeeld:
m_pList->SetExtendedStyle(LVS_EX_FULLROWSELECT);
int GetSelectedItem(void)
Deze methode retourneert de index van het geselecteerde lijstweergave-item.
HRESULT SelectItem(int-index)
Stel het geselecteerde item in de lijst in op deze index.
BOOL IsItemChecked(int-index)
Deze methode retourneert WAAR als een item in de lijst is geselecteerd. Voor deze methode moet u SetExtendedStyle aanroepen om de stijl van het selectievakje in te stellen.
int GetItemCount(void)
Deze methode retourneert het aantal items in de lijstweergave.
HRESULT CreateImageList(breedte, hoogte, UINT-vlaggen)
Maak een nieuwe lijst met afbeeldingen en voeg deze toe aan de lijstweergave.
int AddImage(HINSTANCE hInstance, int resourceId)
Voeg een afbeelding toe aan de lijst met afbeeldingen van de lijstweergave. U moet Eerst CreateImageList aanroepen.
HRESULT SetImage(int index, int imageIndex)
Stel de afbeelding in die aan de linkerkant wordt weergegeven voor een specifiek lijstweergave-item.
HRESULT Clear(void)
Verwijder alle items uit de lijstweergave.
IProgressBar Interface
__interface IProgressBar : IControl
{
HRESULT SetPercentage(int position);
int GetPercentage(void);
};
Overzicht
Deze interface wordt geïmplementeerd door het onderdeel ProgressBarWrapper . U haalt een exemplaar van dit onderdeel op met behulp van de helperfunctie GetControlWrapper met het type CONTROL_PROGRESS_BAR.
HRESULT SetPercentage(int positie)
Stel de positie van de voortgangsbalk in met een getal tussen 0 en 100. Standaard hebben nieuwe Win32-voortgangsbalken® een maximaal bereik van 100.
int GetPercentage(void)
Deze methode retourneert de huidige positie van de voortgangsbalk.
IRadioButton Interface
__interface IRadioButton : IControl
{
public:
void SetGroup(int firstId, int lastId);
void CheckRadio(int id);
BOOL IsButtonChecked(int id);
void EnableRadio(int id, BOOL enable);
};
Overzicht
Deze interface wordt geïmplementeerd door het onderdeel RadioButtonWrapper . U haalt een exemplaar van dit onderdeel op met behulp van de helperfunctie GetControlWrapper met het type CONTROL_RADIO_BUTTON.
void SetGroup(int firstId, int lastId)
Geef de wrapper het bereik van keuzerondjes die als een groep moeten worden behandeld. Roep deze methode aan voordat u CheckRadio aanroept.
void CheckRadio(int id)
Stel het specifieke keuzerondje in op één knop in de groep geselecteerde keuzerondjes. Roep SetGroup aan voordat u deze methode aanroept.
BOOL IsButtonChecked(int-id)
Deze methode retourneert WAAR als het keuzerondje momenteel is geselecteerd, anders ONWAAR.
void EnableRadio(int-id, BOOL inschakelen)
Met deze methode wordt een keuzerondje in- of uitgeschakeld.
IStaticText Interface
__interface IStaticText : IControl
{
HRESULT SetText([in] LPCTSTR pText);
HRESULT GetText([out, retval] LPBSTR pText);
};
Overzicht
Deze interface wordt geïmplementeerd door het onderdeel StaticTextWrapper . U haalt een exemplaar van dit onderdeel op met behulp van de helperfunctie GetControlWrapper met het type CONTROL_STATIC_TEXT.
HRESULT SetText([in] LPCTSTR pText)
Stel de tekst voor het besturingselement in.
HRESULT GetText([out, retval] LPBSTR pText)
Deze methode retourneert de huidige waarde van de tekst voor het besturingselement.
ITask-interface
__interface IControl : IUnknown
{
HRESULT Init(IStringProperties *pProperties, ISettingsProperties *pTaskSettings);
HRESULT Execute(LPDWORD pReturnCode);
};
Implementeer deze interface als u wilt dat uw onderdeel beschikbaar is als een taak op de preflight-pagina of als u het onderdeel BackgroundTask wilt gebruiken om werk uit te voeren op een achtergrondthread.
Hier volgen onderdelen die de ITask-interface implementeren:
ID_ShellExecuteTask, L"Microsoft.Wizard.ShellExecuteTask"
ID_CopyFilesTask, L"Microsoft.Wizard.CopyFilesTask"
ID_ACPowerTask, L"Microsoft.OSDRefresh.ACPowerTask"
ID_WiredNetworkTask, L"Microsoft.SharedPages.WiredNetworkTask"
Init
HRESULT Init(IStringProperties *pProperties, ISettingsProperties *pTaskSettings)
Als u een taak schrijft voor de preflight-pagina, roept u deze methode aan om uw taak te initialiseren. Het .config-bestand bevat XML die er ongeveer als volgt uitziet:
<Task DisplayName="Check Windows Scripting Host" Type="Microsoft.Wizard.ShellExecuteTask">
<Setter Property="filename">%windir%\system32\cscript.exe</Setter>
<Setter Property="parameters">Preflight\OSDCheckWSH.vbs</Setter>
<Setter Property="BitmapFilename">images\WinScriptHost.bmp</Setter>
<ExitCodes>
<ExitCode State="Success" Type="0" Value="0" Text="" />
<ExitCode State="Error" Type="-1" Value="*" Text="Windows Scripting Host not installed." />
</ExitCodes>
</Task>
De parameter pProperties biedt toegang tot de drie setterwaarden, terwijl de parameter pTaskSettings toegang biedt tot het element Taak en onderliggende elementen. De meeste taken hoeven alleen gegevens te lezen uit de parameter pProperties .
Uitvoeren
HRESULT Execute(LPDWORD pReturnCode)
Hier schrijft u de code waarmee de taak wordt uitgevoerd. Deze methode moet S_OK retourneren als er geen fouten zijn opgetreden en kan een andere HRESULT retourneren als er een fout is opgetreden tijdens het uitvoeren van de taak. Andere waarden dan S_OK die deze methode retourneert <, komen overeen met Foutelementen> in de <sectie ExitCodes> als u de preflight-pagina gebruikt.
De parameter pReturnCode moet worden bijgewerkt met een getal dat de status van de taak rapporteert. Deze waarden worden door de preflights-pagina gekoppeld aan <ExitCode-elementen> .
ITreeView-interface
__interface ITreeView : IControl
{
void EnableCheckboxes(void);
HRESULT CreateImageList(int width, int height, UINT flags);
int AddImage(HINSTANCE hInstance, int resourceId);
HTREEITEM AddItem(LPCTSTR text, HTREEITEM hParent = NULL);
void SetImage(HTREEITEM item, int image, int expandImage);
void Clear(void);
BOOL SetFirstVisible(HTREEITEM item);
BOOL SelectItem(HTREEITEM item);
void CheckItem(HTREEITEM item, UINT checkState);
HTREEITEM SelectedItem(void);
int SetItemHeight(SHORT height);
HRESULT EnableItem(HTREEITEM item, BOOL enable);
void Expand(HTREEITEM hItem, BOOL expand);
HTREEITEM GetChild(HTREEITEM hParent);
HTREEITEM GetParent(HTREEITEM hNode);
HTREEITEM GetNextItem(HTREEITEM hPrevious);
UINT IsChecked(HTREEITEM item);
BOOL IsEnabled(HTREEITEM item);
INT_PTR CommonControlEvent(WORD controlId, void* pInfo, BOOL *pCancel);
HRESULT SetEventHandler(ITreeViewEvent *pEventHandler);
void SetSelectedBackColor(COLORREF color);
};
Overzicht
Deze interface wordt geïmplementeerd door het onderdeel TreeViewWrapper . U haalt een exemplaar van dit onderdeel op met behulp van de helperfunctie GetControlWrapper met het type CONTROL_TREE_VIEW.
void EnableCheckboxes(void)
Met deze methode worden selectievakjes in het besturingselement structuurweergave ingeschakeld door de stijl TVS_CHECKBOXES in te stellen.
HRESULT CreateImageList(breedte, hoogte, UINT-vlaggen)
Voeg een nieuwe lijst met afbeeldingen toe aan het besturingselement structuurweergave. De parameter vlaggen wordt in de aanroep doorgegeven aan de ImageList_Create Win32-functie.
int AddImage(HINSTANCE hInstance, int resourceId)
Voeg een installatiekopie toe aan de lijst met installatiekopieën vanuit een resource (resourceId) in de module met de instantie-handle hInstance.
HTREEITEM AddItem(LPCTSTR text, HTREEITEM hParent = NULL)
Voeg een knooppunt toe aan de structuurweergave. Het nieuwe knooppunt wordt toegevoegd op het hoogste niveau als hParent NULL is. Geef anders de ingang op bij het bovenliggende item waaraan u het nieuwe item wilt toevoegen. Deze methode retourneert de greep naar het nieuwe item.
void SetImage(HTREEITEM-item, int image, int expandImage)
Stel de afbeelding in die moet worden gebruikt voor een structuurweergave-item. U kunt zowel de normale als de uitgevouwen afbeelding instellen.
void Clear(void)
Verwijder alle items uit de structuurweergave.
BOOL SetFirstVisible(HTREEITEM-item)
Zorg ervoor dat het item van de structuurweergave zichtbaar is. De structuurweergave schuift zo nodig om dit item zichtbaar te maken.
BOOL SelectItem(HTREEITEM-item)
Stel het geselecteerde item in op het item dat u opgeeft. U kunt SetFirstVisible hierna aanroepen om ervoor te zorgen dat het zojuist geselecteerde item zichtbaar is.
void CheckItem(HTREEITEM-item, UINT checkState)
Met de methode wordt in principe de afbeelding ingesteld die wordt weergegeven voor het selectievakje in de structuurweergave. Deze afbeeldingen bevinden zich in een afzonderlijk besturingselement ImageList dat door de structuurweergave wordt beheerd. Deze lijst met afbeeldingen bevat standaard drie afbeeldingen, weergegeven in Tabel 22.
Tabel 22.void CheckItem Image List Default
checkState | Beschrijving |
---|---|
0 | Blanco |
1 | Uitgeschakeld |
2 | Uitverkoren |
HTREEITEM SelectedItem(void)
Deze methode retourneert de greep van het geselecteerde structuurweergave-item.
int SetItemHeight(KORTE hoogte)
Met deze methode stelt u de hoogte van alle items in het besturingselement structuurweergave in pixels in. Hiermee wordt de vorige hoogte in pixels geretourneerd.
HRESULT EnableItem(HTREEITEM-item, BOOL inschakelen)
Met deze methode wordt één item in de structuur in- of uitgeschakeld. Als u een item met onderliggende items uitschakelt, worden de onderliggende items niet uitgeschakeld.
void Expand(HTREEITEM hItem, BOOL expand)
Met deze methode wordt een knooppunt in de structuur uitgevouwen of samengevouwen.
HTREEITEM GetChild(HTREEITEM hParent)
Met deze methode wordt het eerste onderliggende item van een structuurweergave of NULL geretourneerd als er geen onderliggende items zijn.
HTREEITEM GetParent(HTREEITEM hNode)
Deze methode retourneert de ingang van het bovenliggende knooppunt voor een knooppunt in de structuurweergave of NULL als het knooppunt zich op het hoogste niveau bevindt.
HTREEITEM GetNextItem(HTREEITEM hPrevious)
U kunt deze methode aanroepen met een ingang die GetChild retourneert om alle onderliggende elementen van een knooppunt te doorlopen. Deze methode retourneert het volgende zusje in de structuur met dezelfde bovenliggende structuur.
UINT IsChecked(HTREEITEM-item)
Deze methode retourneert 0 als het structuurweergaveknooppunt niet is geselecteerd en 1 als dat het wel is.
BOOL IsEnabled(HTREEITEM-item)
Deze methode retourneert WAAR als het structuurweergaveknooppunt is ingeschakeld, anders ONWAAR.
INT_PTR CommonControlEvent(WORD controlId, void* pInfo, BOOL *pCancel)
Deze methode is alleen voor intern gebruik.
HRESULT SetEventHandler(ITreeViewEvent *pEventHandler)
Roep deze methode aan als u een melding wilt ontvangen wanneer het geselecteerde item wordt gewijzigd of wanneer de gebruiker de controlestatus van een structuurweergave-item wijzigt. U moet de ITreeViewEvent implementeren in uw onderdeel om deze callbacks te ontvangen.
void SetSelectedBackColor(COLORREF-kleur)
Stel de achtergrondkleur in die wordt gebruikt voor het geselecteerde item.
IWmiIteration-interface
__interface IWmiIterator : IUnknown
{
HRESULT Next(void);
HRESULT GetProperty(LPCTSTR propertyName, [out] LPVARIANT pValue);
};
Overzicht
Meestal gebruikt u deze interface, samen met IWmiRepository, bij het werken met WMI-aanroepen. Met de IWmiIteration-interface kunt u de waarden herhalen die een query retourneert.
HRESULT Next(void)
Naar het volgende item in de queryresultaten gaan, zoals wordt weergegeven in tabel 23.
Tabel 23. HRESULT Next(void) Query retourneert
HRRESULT | Beschrijving |
---|---|
S_OK | Verplaatst naar het volgende resultaat; u kunt GetProperty gebruiken om eigenschappen van dat resultaat op te halen. |
S_FALSE | Er zijn geen items meer in de lijst. |
E_NOT_SET | Er zijn geen queryresultaten |
HRESULT GetProperty(LPCTSTR propertyName, [out] LPVARIANT pValue)
Met deze methode wordt de waarde van een eigenschap opgehaald uit de huidige resultaatrecord, zoals wordt weergegeven in tabel 24 en tabel 25.
Tabel 24. HRESULT GetProperty
Parameter | Beschrijving |
---|---|
propertyName | Naam van de eigenschap die u wilt ophalen |
pValue | Verwijst naar een VARIANT-structuur die bij het retourneren de eigenschapswaarde bevat |
Tabel 25. HRESULT GetProperty-resultaat
HRESULT | Beschrijving |
---|---|
S_OK | De eigenschapswaarde is opgehaald. |
WBEM_E_NOT_FOUND | Er is geen eigenschap met de naam. |
E_NOT_VALID_STATE | Er is geen huidige record. |
Opmerking
De methode GetProperty kan andere WMI-foutcodes retourneren dan die in tabel 25. De vermelde waarden zijn de algemene resultaten die worden geretourneerd.
IWmiRepository Interface
__interface IWmiRepository : IUnknown
{
HRESULT SetNamespace(LPCWSTR namespaceName);
HRESULT ExecQuery(LPCWSTR query, [out] IWmiIterator **ppIterator);
};
Overzicht
Deze interface wordt geïmplementeerd door het onderdeel WmiRepository (ID_WmiRepository).
HRESULT SetNamespace(LPCWSTR namespaceName)
Met deze methode stelt u de WMI-naamruimte in die wordt gebruikt voor de query. Roep deze methode aan voordat u ExecQuery aanroept. Als u deze methode niet aanroept, is de naamruimte root\cimv2. Deze methode retourneert altijd S_OK.
HRESULT ExecQuery(LPCWSTR-query, [out] IWmiIterator **ppIterator)
Voer een query uit op de WMI-naamruimteset met een aanroep naar SetNamespace, zoals wordt weergegeven in Tabel 26 en Tabel 27.
Tabel 26. HRESULT ExecQuery
Parameter | Beschrijving |
---|---|
Vraag | De tekenreeks voor de WMI-query die u wilt uitvoeren |
ppIterator | Een aanwijzer doorgeven aan een interfaceaanwijzer, die bij terugkeer wordt ingevuld met een interface, zodat u toegang hebt tot de queryresultaten |
Tabel 27. HRESULT-queryresultaat
HRESULT | Beschrijving |
---|---|
S_OK | De query is voltooid |
Overige | Als de query niet is geslaagd, wordt een WMI HRESULT geretourneerd |
IFormController-interface
__interface IFormController : IUnknown
{
Init(IWizardPageView *pView, IWizardPageContainer *pContainer);
SetPageInfo(ISettingsProperties *pPageInfo);
Validate(void);
AddToGroup(int groupControlId, int controlId);
UpdateCheckGroup(int groupControlId);
AddValidator(int controlId, IValidator *pValidator, IControl *pCOntrol = 0);
AddValidator(int controlId, LPCWSTR validatorId, LPCWSTR message, IValidator **ppValidator = nullptr);
DisableValidation(int controlId, BOOL disable);
AddField(LPCWSTR fieldName, int controlId, BOOL suppressLog, DialogControlTypes type);
AddRadioGroup(LPCWSTR groupName, int radioControlId);
EnableRadioGroup(LPCWSTR groupName, BOOL enable);
InitFields(IFieldCallback *pFieldCallback = nullptr);
SaveFields(IFieldCallback *pFieldCallback = nullptr);
BOOL IsFieldDisabled(int controlId);
InitSection(LPCWSTR key, LPCWSTR sectionCaption);
AddSummaryItem(LPCWSTR first, LPCWSTR second);
SuppressLogValue(LPCWSTR tsVariableName);
SaveText(int controlId, LPCWSTR tsVariableName, LPCWSTR summaryCaption);
LoadText(int controlId, LPCWSTR tsVariableName);
void ControlEvent(WORD eventId, WORD controlId);
BOOL IsValid(void);
};
Overzicht
Elke pagina in de wizard UDI heeft een eigen formuliercontroller waarmee deze interface wordt geïmplementeerd. U gebruikt deze controller om de veldgegevens in het XML-bestand .config te verbinden met de besturingselementen op uw pagina. De formuliercontroller verwerkt vervolgens veel van de details voor u.
Het formulier instellen
Over het algemeen stelt u de formuliercontroller in de OnWindowCreated-methode van uw pagina in. Hiervoor worden meestal de methoden aangeroepen die worden weergegeven in tabel 28.
Tabel 28. Methode OnWindowCreated
Methode | Beschrijving |
---|---|
Init | Initialiseert de formuliercontroller |
AddField | Biedt een verbinding tussen een veld in het .config XML-bestand dat een tekenreeksnaam is en een besturingselement in het dialoogvenster van uw pagina dat een id is |
AddRadioGroup | Wordt gebruikt om een keuzerondje te verbinden met zowel een groep als een besturingselement in het dialoogvenster |
AddToGroup | Hiermee kunt u 'onderliggende' besturingselementen die zijn ingeschakeld of uitgeschakeld samen met hun bovenliggende of op basis waarvan keuzerondje is geselecteerd |
InitFields | Roep aan nadat u alle methoden voor toevoegen hebt aangeroepen om het formulier in te stellen |
Valideren | Voert de initiële validatie uit |
Formulierevenementen verwerken
Voeg de volgende aanroep toe aan de methode OnControlEvent :
Form()->ControlEvent(eventId, controlId);
Met deze aanroep worden gebeurtenissen doorgegeven aan de formuliercontroller, zodat deze formuliergerelateerde gebeurtenissen kan verwerken.
Formuliergegevens opslaan
Roep in de methode OnNextSelected de formuliermethoden aan die worden weergegeven in tabel 29.
Tabel 29. Methode OnNextSelected
Methode | Beschrijving |
---|---|
InitSection | Geeft de naam op van de sectie die wordt weergegeven op de pagina Samenvatting voor deze pagina |
SaveFields | Veldwaarden opslaan in takenreeksvariabelen en op de pagina Samenvatting |
Init
HRESULT Init(IWizardPageView *pView, IWizardPageContainer *pContainer)
U roept deze methode meestal aan bij het begin van de OnWindowCreated-methode van uw pagina. De opdracht ziet er ongeveer als volgt uit:
Form()->Init(View(), Container());
SetPageInfo
HRESULT SetPageInfo(ISettingsProperties *pPageInfo)
Deze methode wordt intern aangeroepen en u moet deze niet zelf aanroepen. Het levert de XML van de pagina aan de formuliercontroller.
Valideren
HRESULT Validate(void)
Met deze methode worden alle validators uitgevoerd die aan besturingselementen zijn gekoppeld. Als een validator niet wordt doorgegeven, geeft de formuliercontroller een waarschuwingsbericht weer en schakelt de knop Volgende uit, waarna de verwerking van validators wordt gestopt. Normaal gesproken hoeft u deze methode alleen aan te roepen aan het einde van uw OnWindowCreated-methode ; het retourneert altijd S_OK.
AddToGroup
AddToGroup(int groupControlId, int controlId)
Met deze methode wordt een besturingselement toegevoegd als 'onderliggend' van een selectievakje of keuzerondje, zoals wordt weergegeven in tabel 30. Al deze onderliggende besturingselementen worden uitgeschakeld wanneer het bovenliggende besturingselement niet is geselecteerd. De methode retourneert altijd S_OK.
Tabel 30. AddToGroup
Parameter | Beschrijving |
---|---|
groupControlId | De id van het selectievakje of keuzerondje waarmee de inschakelingsstatus van het onderliggende besturingselement wordt gecontroleerd |
Controlld | De id van het besturingselement dat u als onderliggend element wilt toevoegen |
UpdateCheckGroup
HRESULT UpdateCheckGroup(int groupControlId)
Met deze methode wordt de status van de onderliggende besturingselementen van een groep bijgewerkt op basis van de status van het bovenliggende besturingselement. Over het algemeen hoeft u deze methode niet zelf aan te roepen, omdat de formuliercontroller deze voor u aanroept.
AddValidator
HRESULT AddValidator(int controlId, IValidator *pValidator, IControl *pControl = 0)
Roep deze methode alleen aan als u een validator hebt die u in code wilt maken in plaats van met de XML. Deze methode retourneert altijd S_OK.
AddValidator
HRESULT AddValidator(int controlId, LPCWSTR validatorId, LPCWSTR message, IValidator **ppValidator = nullptr)
Roep deze methode alleen aan als u een validator hebt die u in code wilt maken in plaats van met de XML.
DisableValidation
HRESULT DisableValidation(int controlId, BOOL disable)
Roep deze methode aan om de validator expliciet uit te schakelen voor een besturingselement of om de normale validatie te herstellen, zoals wordt weergegeven in tabel 31. Deze methode is bijvoorbeeld handig als u regels hebt voor besturingselementen die niet worden gedekt door formuliervalidatie en u validatie voor een besturingselement moet uitschakelen. Met andere woorden, u zou deze methode normaal gesproken niet aanroepen. Deze methode retourneert altijd S_OK.
Tabel 31. HRESULT DisableValidation
Parameter | Beschrijving |
---|---|
controlId | Het besturingselement waarvoor u validatie wilt in- of uitschakelen |
Uitschakelen | Stel in op TRUE om validatie uit te schakelen en op FALSE om de normale validatie te herstellen |
AddField
HRESULT AddField(LPCWSTR fieldName, int controlId, BOOL suppressLog, DialogControlTypes type)
Voeg een besturingselementtoewijzing toe tussen de naam in een veldelement van het XML-bestand .config en de besturingselement-id in het dialoogvenster van uw pagina, zoals wordt weergegeven in Tabel 32. U moet deze methode aanroepen voordat InitFields wordt aangeroepen, omdat InitFields deze informatie gebruikt. Deze methode retourneert altijd S_OK.
Tabel 32. HRESULT AddField
Parameter | Beschrijving |
---|---|
Veldnaam | Naam van het veld zoals het wordt weergegeven in de XML van uw pagina |
controlId | De id van het besturingselement in de dialoogvenstersjabloon van uw pagina |
suppressLog | Stel in op WAAR als u niet wilt dat de waarden uit dit veld naar het logboekbestand worden geschreven; stel deze parameter altijd in op WAAR voor wachtwoord- of pincodevelden |
Type | Het type besturingselement, een van de volgende: - CONTROL_STATIC_TEXT - CONTROL_COMBO_BOX - CONTROL_LIST_VIEW - CONTROL_PROGRESS_BAR - CONTROL_GENERIC - CONTROL_RADIO_BUTTON - CONTROL_CHECK_BOX - CONTROL_TREE_VIEW |
AddRadioGroup
HRESULT AddRadioGroup(LPCWSTR groupName, int radioControlId)
Met deze methode wordt een besturingselement toegevoegd aan een benoemde keuzerondjegroep, zoals weergegeven in tabel 33. U moet dit aanroepen vóór de methode InitFields , omdat deze methode gebruikmaakt van kenmerken op het element RadioGroup om instellingen te beheren voor alle keuzerondjes in de groep. Keuzerondjes kunnen bijvoorbeeld worden vergrendeld, zodat alle keuzerondjes zijn uitgeschakeld, maar onderliggende besturingselementen worden in- of uitgeschakeld op basis van het keuzerondje dat is geselecteerd. Deze methode retourneert altijd S_OK.
Tabel 33. HRESULT AddRadioGroup
Parameter | Beschrijving |
---|---|
groupName | Een tekenreeks die een groep keuzerondjes op deze pagina definieert |
radioControlId | De id van één keuzerondje om aan deze groep toe te voegen |
EnableRadioGroup
HRESULT EnableRadioGroup(LPCWSTR groupName, BOOL enable)
Met deze methode kunt u een hele keuzerondjegroep in- of uitschakelen. Als u een keuzerondje uitschakelt, worden alle besturingselementen voor keuzerondjes in de groep uitgeschakeld, evenals eventuele onderliggende keuzerondjes die zijn toegevoegd met AddToGroup. Zie Tabel 34 en Tabel 35.
Tabel 34. EnableRadioGroup
Parameter | Beschrijving |
---|---|
groupName | Naam van een keuzerondjegroep die u al hebt gedefinieerd met een aanroep naar AddRadioGroup |
Inschakelen | Stel in op TRUE om de keuzerondjegroep in te schakelen en ONWAAR om de groep uit te schakelen |
Tabel 35. HRESULT EnableRadioGroup
HRESULT | Beschrijving |
---|---|
S_OK | Groep in- of uitgeschakeld |
E_INVALIDARG | Er is geen keuzerondjegroep met de naam die u hebt opgegeven |
InitFields
HRESULT InitFields(IFieldCallback *pFieldCallback = nullptr)
Voordat u deze methode aanroept, roept u AddField aan voor elk veld dat door de XML kan worden beheerd. Deze methode retourneert altijd S_OK.
De parameter pFieldCallback is optioneel. Als u dit opgeeft, roept de formuliercontroller SetFieldDefault aan voor besturingselementen die niet zijn CONTROL_STATIC_TEXT of CONTROL_CHECK_BOX. Met dit gedrag kunt u een standaardwaarde ophalen uit de XML en deze zelf instellen in het besturingselement.
SaveFields
HRESULT SaveFields(IFieldCallback *pFieldCallback = nullptr)
Met deze methode worden veldwaarden opgeslagen in takenreeksvariabelen en in de samenvattingsgegevens die worden weergegeven op de pagina Samenvatting . Als u een aanwijzer opgeeft in pFieldCallback , kunt u het opslaan van waarden afhandelen voor besturingselementen die geen ondersteuning bieden voor CONTROL_STATIC_TEXT.
IsFieldDisabled
BOOL IsFieldDisabled(int controlId)
Met deze methode kunt u bepalen of een veld is uitgeschakeld in de XML.
InitSection
HRESULT InitSection(LPCWSTR key, LPCWSTR sectionCaption)
Met deze methode worden de samenvattingsgegevens geïnitialiseerd die worden weergegeven op de pagina Samenvatting , zoals wordt weergegeven in Tabel 36. Roep deze methode aan in de methode OnNextSelected voordat u SaveFields aanroept. Deze methode retourneert altijd S_OK.
Tabel 36. HRESULT-initSection
Parameter | Beschrijving |
---|---|
Sleutel | Deze parameter moet uniek zijn voor uw pagina. Deze wordt gebruikt om ervoor te zorgen dat elke pagina een eigen samenvattingsinformatie heeft. |
sectionCaption | De koptekst die wordt weergegeven op de pagina Samenvatting voor de overzichtsinformatie van deze pagina. Normaal gesproken gebruikt u DisplayName() als de waarde voor deze parameter. |
AddSummaryItem
HRESULT AddSummaryItem(LPCWSTR first, LPCWSTR second)
Met deze methode kunt u overzichtsitems toevoegen aan de pagina Samenvatting boven en buiten die items die zijn ingesteld met de XML. Zie Tabel 37.
Tabel 37. HRESULT AddSummaryItem
Parameter | Beschrijving |
---|---|
Eerste | De onderschrift voor het samenvattingsitem, dat aan de linkerkant wordt weergegeven |
Tweede | De waarde die aan de rechterkant wordt weergegeven |
SuppressLogValue
HRESULT SuppressLogValue(LPCWSTR tsVariableName)
Roep deze methode aan voor takenreeksvariabelen waarvan u niet wilt dat de waarden naar het logboekbestand worden geschreven. Roep deze methode aan voor takenreeksvariabelen die wachtwoorden, pincodes of andere gevoelige waarden opslaan die een gebruiker kan invoeren.
SaveText
HRESULT SaveText(int controlId, LPCWSTR tsVariableName, LPCWSTR summaryCaption)
Met deze methode wordt de waarde van een tekst besturingselement opgeslagen in zowel een takenreeksvariabele als de samenvattingssectie. Normaal gesproken hoeft u deze methode niet zelf aan te roepen, omdat de formuliercontroller dit voor alle velden doet. Zie Tabel 38.
Tabel 38. HRESULT SaveText
Parameter | Beschrijving |
---|---|
controlId | De id van het tekstvak dat de waarde bevat die u wilt opslaan (of een ander besturingselement dat tekst kan retourneren) |
tsVariableName | Naam van de takenreeksvariabele die u wilt wijzigen |
summaryCaption | De onderschrift op de pagina Samenvatting voor deze waarde |
LoadText
HRESULT LoadText(int controlId, LPCWSTR tsVariableName)
Met deze methode wordt de waarde van een takenreeksvariabele gelezen en wordt het tekstvak ingesteld op deze waarde.
ControlEvent
void ControlEvent(WORD eventId, WORD controlId)
Roep deze methode aan op uw onControlEvent-methode om ervoor te zorgen dat de formuliercontroller besturingselementen kan verwerken, die moeten worden uitgevoerd om correct te werken. De waarden die u aan deze methode doorgeeft, zijn dezelfde waarden die worden doorgegeven aan de methode OnControlEvent .
IsValid
BOOL IsValid(void)
Deze methode retourneert de status van de meest recente validatie van het formulier. Als een van de controlevalidators een fout heeft gerapporteerd, retourneert deze methode ONWAAR. Met andere woorden, het retourneert alleen WAAR als alle besturingselementen op de pagina geldig zijn.
IValidator-interface
__interface IValidator : IUnknown
{
HRESULT Init(IControl *pControl, LPCTSTR message);
HRESULT Init(IControl *pControl, IWizardPageContainer *pContainer, IStringProperties *pProperties);
BOOL, IsValid(LPBSTR pMessage);
HRESULT SetProperty(int propertyId, LPVARIANT pValue);
HRESULT SetProperty(int propertyId, IUnknown *pUnknown);
HRESULT SetProperty)(int propertyId, LPCTSTR pValue);
};
Overzicht
Validators zijn onderdelen die één besturingselement op uw pagina kunnen valideren. De eenvoudigste manier om een validator te implementeren, is door er een subklasse van de klasse BaseValidator van te maken, die is gedefinieerd in het headerbestand BaseValidator.h.
HRESULT Init(IControl *pControl, LPCTSTR-bericht)
Als u een validator in code maakt, kunt u deze methode aanroepen om de validator te initialiseren. Zie Tabel 39.
Tabel 39. HRESULT Init
Parameter | Beschrijving |
---|---|
pControl | Het besturingselement dat uw validator moet valideren |
Bericht | Het bericht dat op de pagina wordt weergegeven als het besturingselement ongeldig is |
HRESULT Init(IControl *pControl, IWizardPageContainer *pContainer, IStringProperties *pProperties)
De formuliercontroller roept deze methode aan om validators te initialiseren die worden gemaakt op basis van de XML van de pagina. Zie Tabel 40.
Tabel 40. Methode HRESULT Init
Parameter | Beschrijving |
---|---|
pControl | Het besturingselement dat uw validator moet valideren |
pContainer | Als uw validator toegang nodig heeft tot de logboekregistratie of andere onderdelen moet maken |
pEigenschappen | Biedt toegang tot de eigenschappen (setter-elementen) voor uw validator |
BOOL, IsValid(LPBSTR pMessage)
Deze methode retourneert WAAR als het besturingselement geldig is of ONWAAR als het besturingselement ongeldig is. Bij terugkeer moet pMessage worden ingevuld met een nieuwe BSTR die het bericht bevat dat moet worden weergegeven wanneer het besturingselement ongeldig is.
HRESULT SetProperty(int propertyId, LPVARIANT pValue)
U kunt deze methode implementeren als u extra waarden nodig hebt die niet zijn opgegeven in de XML.
HRESULT SetProperty(int propertyId, IUnknown *pUnknown)
U kunt deze methode implementeren als u extra waarden nodig hebt die niet zijn opgegeven in de XML.
HRESULT SetProperty)(int propertyId, LPCTSTR pValue)
U kunt deze methode implementeren als u extra waarden nodig hebt die niet zijn opgegeven in de XML.
IRegEx-interface
__interface IRegEx : IUnknown
{
BOOL MatchesRegex(LPCTSTR input, LPCTSTR regex);
HRESULT GetMatch(size_t index, LPBSTR pValue);
};
Deze methode wordt geïmplementeerd door het onderdeel ID_Regex (IRegex.h) en biedt ondersteuning voor reguliere expressieverwerking.
BOOL MatchesRegex(LPCTSTR-invoer, LPCTSTR regex)
Met deze methode wordt de reguliere expressie uitgevoerd op basis van de invoertekst. De functie regex_match van de C++-standaardbibliotheek wordt gebruikt om het werkelijke werk uit te voeren. De methode retourneert WAAR als er overeenkomsten zijn, anders ONWAAR.
HRESULT GetMatch(size_t index, LPBSTR pValue)
Met deze methode kunt u de overeenkomsten ophalen uit de meest recente MatchesRegex-aanroep . Deze methode bevat geen foutverwerking en retourneert S_OK of genereert een uitzondering.
ISummaryInfo-interface
__interface ISummaryInfo : IUnknown
{
size_t Count(void);
HRESULT Clear(void);
HRESULT AddInfo(LPCTSTR pFirst, LPCTSTR pSecond);
HRESULT GetInfo(size_t index, LPBSTR pFirst, LPBSTR pSecond);
HRESULT GetCaption(LPBSTR pCaption);
HRESULT SetCaption(LPCTSTR caption);
};
U hoeft deze interface niet rechtstreeks te gebruiken. Gebruik in plaats daarvan IFormController.
ISummaryBag
__interface ISummaryBag : IUnknown
{
size_t Count(void);
HRESULT GetInfoByIndex(size_t index, [out] ISummaryInfo **ppSummary);
HRESULT GetInfoByKey(LPCTSTR key, [out] ISummaryInfo **ppSummary);
};
U hoeft deze interface niet rechtstreeks te gebruiken. Gebruik in plaats daarvan IFormController.
ITSVariableBag-interface
__interface ITSVariableBag : IUnknown
{
void GetValue([in] LPCTSTR variableName, [out] LPBSTR pValue);
void SetValue([in] LPCTSTR variableName, [in] LPCTSTR pValue);
void Clear(void);
HRESULT Remove([in] LPCTSTR variableName);
HRESULT SuppressLogValue([in] LPCTSTR variableName);
void Save(void);
};
Deze interface biedt toegang tot takenreeksvariabelen. U hebt toegang tot deze interface met behulp van de TSVariables() -methode van uw pagina.
void GetValue([in] LPCTSTR variableName, [out] LPBSTR pValue)
Met deze methode wordt de waarde van een takenreeksvariabele gelezen.
Opmerking
Waarden worden in de cache opgeslagen na de eerste leesbewerking.
void SetValue([in] LPCTSTR variableName, [in] LPCTSTR pValue)
Met deze methode wordt de waarde van een takenreeksvariabele ingesteld. Deze waarde wordt opgeslagen in het geheugen. Takenreekswaarden worden geschreven zodra u Voltooien selecteert in de wizard UDI.
void Clear(void)
Met deze methode worden alle takenreekswaarden verwijderd die in het geheugen zijn opgeslagen.
HRESULT Remove([in] LPCTSTR variableName)
Met deze methode wordt een specifieke takenreekswaarde uit het geheugen verwijderd. De volgende keer dat u GetValue aanroept met dezelfde takenreeksnaam, probeert de methode deze op te halen uit de takenreeks.
HRESULT SuppressLogValue([in] LPCTSTR variableName)
Wanneer er takenreeksvariabelen worden geschreven, bijvoorbeeld wanneer u Voltooien selecteert in de wizard UDI, worden de namen en waarden naar het logboekbestand geschreven. Roep deze methode aan om logboekregistratie van gevoelige waarden, zoals wachtwoorden of pincodes, voor een specifieke takenreeksvariabele te onderdrukken.
void Save(void)
Met deze methode worden alle takenreekswaarden opgeslagen die zijn ingesteld met aanroepen naar SetValue.
ITSVariableRepository Interface
__interface ITSVariableRepository : IUnknown
{
void GetValue([in] LPCTSTR variableName, BOOL logValue, [out] LPBSTR pValue);
void SetValue([in] LPCTSTR variableName, BOOL logValue, [in] LPCTSTR value);
};
Deze interface is bedoeld voor intern gebruik door TSVariableBag voor het lezen en schrijven van takenreeksvariabelen.
IWizardFinish Interface
__interface IWizardFinish : IUnknown
{
HRESULT Canceled(void);
HRESULT Finished(void);
};
Deze interface is handig in geavanceerde scenario's waarin u extra verwerking wilt uitvoeren wanneer u Voltooien of Annuleren selecteert in de UDI-wizard. De wizard UDI bevat een taak Voltooien waarmee takenreeksvariabelen worden opgeslagen wanneer u Voltooien selecteert. Als u de wizard annuleert, wordt met de taak alleen de takenreeksvariabele OSDSetupWizCancelled ingesteld op TRUE en worden wijzigingen in andere takenreeksvariabelen niet opgeslagen.
Als u uw eigen eindonderdeel maakt, moet u dit registreren met code zoals deze:
Register<MyFinishTaskFactory>(ID_MyFinishTask, pRegistry);
PWizardFinish pFinish;
CreateInstance(pRegistry, ID_MyFinishTask, &pFinish);
PWizardFinishService pService;
GetService<IWizardFinishService>(pRegistry, &pService);
pService->Register(pFinish);
IBindableList Interface
__interface IBindableList : IUnknown
{
size_t Count(void);
HRESULT GetCaption(size_t index, LPBSTR pCaption);
};
Implementeer deze interface als u een gegevensbrononderdeel hebt dat u wilt verbinden met een keuzelijst met invoervak door de bindmethode aan te roepen.
size_t Count(void)
Deze methode retourneert het aantal items in de lijst.
HRESULT GetCaption(size_t index, LPBSTR pCaption)
Deze methode retourneert de onderschrift van het item in een specifieke index.
IDataNodes Interface
__interface IDataNodes : IUnknown
{
size_t Count();
HRESULT SetCaptionProperty(LPCTSTR captionProperty);
HRESULT GetProperty(size_t index, LPCTSTR propertyName, [out] LPBSTR propertyValue);
HRESULT GetNode(size_t index, [out] ISettingsProperties **ppNode);
};
Deze interface biedt toegang tot hiërarchische gegevens die kunnen worden opgeslagen op een pagina. U verkrijgt deze interface via methoden op de interface ISettingsProperties , die beschikbaar is voor uw pagina via de methode Instellingen .
Gegevens in de XML van een pagina kunnen er ongeveer als volgt uitzien
<Data Name="Network">
<DataItem>
<Setter Property="DisplayName">Public</Setter>
<Setter Property="Share">\\servername\Share</Setter>
</DataItem>
<DataItem>
<Setter Property="DisplayName">Dev Team</Setter>
<Setter Property="Share">\\servername\DevShare</Setter>
</DataItem>
</Data>
Instellingen aanroepen()->GetDataNode(L"Network", &pData) geeft u een IDataNodes-exemplaar met twee gegevensitems (die elk op hun beurt twee eigenschappen hebben).
size_t Count()
Deze methode retourneert het aantal DataItem-elementen .
HRESULT SetCaptionProperty(LPCTSTR captionProperty)
Het onderdeel dat deze interface ondersteunt, ondersteunt ook IBindableList, waardoor u eenvoudig een keuzelijst met invoervak kunt vullen met gegevens uit de XML van de pagina. Deze methode bepaalt welke eigenschap (setter) in elk DataItem-element wordt gebruikt voor deze binding. U kunt deze methode bijvoorbeeld aanroepen met DisplayName en deze setter-eigenschap gebruiken voor gegevensbinding. De keuzelijst met invoervak bevat vervolgens Openbaar en Ontwikkelaarsteam als items.
HRESULT GetProperty(size_t index, LPCTSTR propertyName, [out] LPBSTR propertyValue)
Met deze methode wordt een eigenschap opgehaald uit een van de DataItem-elementen . Zie Tabel 41 en Tabel 42.
Tabel 41. DataItem GetProperty
Parameter | Beschrijving |
---|---|
Index | De indexwaarde (beginnend met 0) van de DataItem waarvoor u een eigenschapswaarde wilt ophalen |
propertyName | Naam van de setter-eigenschap waarvoor u een waarde wilt ophalen |
propertyValue | Bevat bij retour de tekenreekswaarde van een eigenschap |
Tabel 42. HRESULT GetProperty
HRESULT | Beschrijving |
---|---|
S_OK | De eigenschap is opgehaald. |
E_INVALIDARG | De index is voorbij het einde van de matrix. |
HRESULT GetNode(size_t index, [out] ISettingsProperties **ppNode)
Deze methode is vergelijkbaar met GetProperty, maar in plaats van één waarde uit een DataItem te retourneren, retourneert deze de volledige DataItem verpakt in een ISettingsProperties-interface . Zie Tabel 43 en Tabel 44.
Tabel 43. HRESULT GetNode
Parameter | Beschrijving |
---|---|
Index | De indexwaarde (beginnend met 0) van de DataItem waarvoor u een eigenschapswaarde wilt ophalen |
ppNode | Bij het afsluiten, de interface ISettingsProperties die het DataItem-knooppunt verpakt |
Tabel 44. RESULTATEN VAN HRESULT GetNode
HRESULT | Beschrijving |
---|---|
S_OK | Het knooppunt is opgehaald. |
E_INVALIDARG | De index is voorbij het einde van de matrix. |
IFactoryRegistry Interface
__interface IFactoryRegistry : IUnknown
{
void Register(LPCTSTR type, IClassFactory *pFactory);
HRESULT LoadAndRegister(LPCTSTR dllName, ILogger *pLogger);
BOOL Contains(LPCTSTR type);
HRESULT GetFactory(LPCTSTR type, IClassFactory **ppFactory);
HRESULT CreateInstance(LPCTSTR type, IUnknown **ppInstance);
HRESULT SetContainer(IWizardPageContainer *pContainer);
HRESULT RegisterService(REFGUID iid, IUnknown *pService);
HRESULT GetService(REFGUID iid, IUnknown **ppService);
};
Overzicht
Wanneer u een nieuwe aangepaste pagina maakt, moet u minimaal een paginafactory maken, een klasse waarmee IClassFactory wordt geïmplementeerd. (U kunt ClassFactoryImpl gebruiken als basisklasse voor uw fabriek.)
void Register(LPCTSTR type, IClassFactory *pFactory)
Met deze methode wordt een klassefactory geregistreerd bij het register. Zie Tabel 45.
Tabel 45. IClassFactory void Registreren
Parameter | Beschrijving |
---|---|
Type | Een tekenreeks die de factory identificeert die u registreert; over het algemeen moet deze parameter uw bedrijfsnaam in de tekenreeks hebben om ervoor te zorgen dat deze uniek is |
pFactory | Een aanwijzer naar uw class factory-exemplaar |
HRESULT LoadAndRegister(LPCTSTR dllName, ILogger *pLogger)
Deze methode is alleen voor intern gebruik.
BOOL Bevat(LPCTSTR-type)
Deze methode is over het algemeen voor intern gebruik. Er wordt gecontroleerd of een klasse factory is geregistreerd voor een type.
HRESULT GetFactory(LPCTSTR-type, IClassFactory **ppFactory)
Met deze methode kunt u de klassefactory ophalen. Normaal gesproken roept u CreateInstance aan. Als u echter een groot aantal van hetzelfde onderdeel gaat maken, is het efficiënter om de factory op te halen en deze vervolgens te vragen om de exemplaren voor u te maken.
HRESULT CreateInstance(LPCTSTR-type, IUnknown **ppInstance)
Met deze methode wordt een nieuw exemplaar van een onderdeel gemaakt, gezien het type. Gebruik in plaats daarvan de sjabloonmethode CreateInstance , waarmee u een typeveilig object kunt maken.
HRESULT SetContainer(IWizardPageContainer *pContainer)
Deze methode is alleen voor intern gebruik.
HRESULT RegisterService(REFGUID iid, IUnknown *pService)
Services zijn enkele exemplaren van een onderdeel dat op meerdere plaatsen kan worden gebruikt. U kunt deze methode gebruiken om een service op de ene pagina te registreren en vervolgens hetzelfde exemplaar op te halen van een andere pagina.
HRESULT GetService(REFGUID iid, IUnknown **ppService)
Met deze methode wordt een service opgehaald die eerder is geregistreerd met een aanroep van RegisterService.
HRESULT SetLanguage(LANGID languageId)
Met deze methode wordt de taal van de wizard UDI ingesteld op de taal-id die u hebt opgegeven in de parameter languageId .
LANGID GetLanguage()
Deze methode retourneert de waarde van de taal-id die u hebt opgegeven met de opdrachtregelparameter /locale voor de UDI-wizard. De methode retourneert een van de volgende waarden:
Waarde van de taal-id die is opgegeven met de opdrachtregelparameter /locale
0, als u de /locale opdrachtregelparameter niet hebt opgegeven
ILogger Interface
__interface ILogger : IUnknown
{
HRESULT Init(LPCWSTR logFilename);
HRESULT MoveLog(LPCWSTR logFilename);
HRESULT LogBase(EMessageType messageType, LPCTSTR component, SYSTEMTIME eventTime, LPCTSTR message);
HRESULT Log(EMessageType messageType, LPCTSTR component, LPCTSTR message);
HRESULT Error(HRESULT error, LPCTSTR component, LPCTSTR message);
HRESULT Error2(HRESULT error, LPCTSTR component, LPCTSTR message, LPCTSTR message2);
HRESULT Normal(LPCTSTR component, LPCTSTR message);
HRESULT Normal2(LPCTSTR component, LPCTSTR message, LPCTSTR message2);
HRESULT Verbose(LPCTSTR component, LPCTSTR message);
HRESULT Verbose2(LPCTSTR component, LPCTSTR message, LPCTSTR message2);
HRESULT Debug(LPCWSTR component, LPCWSTR message);
HRESULT EnableDebug(BOOL debug);
HRESULT Close(void);
HRESULT GetLogFilename(LPBSTR pFilename);
};
Overzicht
De UDI-wizard registreert informatie in een logboekbestand, waarmee u problemen in het veld kunt oplossen. Het is een goed idee voor uw pagina's om gegevens te registreren. U kunt een aanwijzer naar deze interface verkrijgen vanuit uw pagina met behulp van de methode Logger() van de pagina. Regels in het logboekbestand bevatten een niveaunummer dat fout-, normale, uitgebreide of foutopsporingsberichten aangeeft.
Opmerking
Foutopsporingsberichten worden niet opgeslagen in het logboekbestand, tenzij ondersteuning voor foutopsporing is ingeschakeld. U kunt ondersteuning voor foutopsporing inschakelen door de volgende regel toe te voegen aan het element Stijl in het bestand .config:
<Setter Property="debug">true</Setter>
Init
HRESULT Init(LPCWSTR logFilename)
Deze methode is alleen voor intern gebruik.
MoveLog
HRESULT MoveLog(LPCWSTR logFilename)
Deze methode is alleen voor intern gebruik.
LogBase
HRESULT LogBase(EMessageType messageType, LPCTSTR component, SYSTEMTIME eventTime, LPCTSTR message)
Deze methode is alleen voor intern gebruik.
Log
HRESULT Log(EMessageType messageType, LPCTSTR component, LPCTSTR message)
Deze methode is alleen voor intern gebruik.
Error
HRESULT Error(HRESULT error, LPCTSTR component, LPCTSTR message)
Roep deze methode aan om informatie over een fout te registreren. Zie Tabel 46.
Tabel 46. HRESULT-fout
Parameter | Beschrijving |
---|---|
Fout | De foutcode die wordt geretourneerd door een aanroep (deze code wordt weergegeven in de logboekvermelding als een nummer.) |
Component | Een tekenreeks die de bron van de fout identificeert, die over het algemeen uw pagina of het onderdeel is dat u hebt geschreven |
Bericht | Het bericht waarin wordt uitgelegd wat de fout heeft veroorzaakt |
Fout2
HRESULT Error2(HRESULT error, LPCTSTR component, LPCTSTR message, LPCTSTR message2)
Deze methode is vergelijkbaar met de foutmethode , maar u kunt een tweedelig bericht opgeven. Het uiteindelijke bericht bevat 'message' en vervolgens 'message2' in het uitvoerbestand. Dit is gewoon een handige methode.
Normaal
HRESULT Normal(LPCTSTR component, LPCTSTR message)
Met deze methode wordt een normaal bericht opgeslagen. Zie de beschrijving van de foutmethode voor parameters.
Normaal2
HRESULT Normal2(LPCTSTR component, LPCTSTR message, LPCTSTR message2)
Met deze methode wordt een normaal bericht opgeslagen. Zie de beschrijving van de methode Error2 voor parameters.
Breedsprakig
HRESULT Verbose(LPCTSTR component, LPCTSTR message)
Met deze methode wordt een uitgebreid bericht opgeslagen. Zie de beschrijving van de foutmethode voor parameters.
Uitgebreid2
HRESULT Verbose2(LPCTSTR component, LPCTSTR message, LPCTSTR message2)
Met deze methode wordt een uitgebreid bericht opgeslagen. Zie de beschrijving van de methode Error2 voor parameters.
Debuggen
HRESULT Debug(LPCWSTR component, LPCWSTR message)
Met deze methode wordt een foutopsporingsbericht opgeslagen. Zie de beschrijving van de foutmethode voor parameters. Foutopsporingsberichten worden niet opgeslagen in het bestand, tenzij ingeschakeld. Zie de sectie Overzicht voor meer informatie.
EnableDebug
HRESULT EnableDebug(BOOL debug)
Deze methode is alleen voor intern gebruik.
Sluiten
HRESULT Close(void)
Deze methode is alleen voor intern gebruik.
GetLogFilename
HRESULT GetLogFilename(LPBSTR pFilename)
Met deze methode wordt de naam van het logboekbestand opgehaald.
IOrientation-interface
__interface IOrientation : IUnknown
{
void SetController(IWizardDialogController *pController);
int AddPage(LPCTSTR name);
void SelectPage(int index);
};
Deze interface is alleen voor intern gebruik.
ISettings-interface
__interface ISettings : IUnknown
{
int NumDlls();
int NumPages();
HRESULT SetStage(LPCWSTR stageName);
HRESULT GetDllName(long index, __out LPBSTR pDllName);
HRESULT GetPageInfo(long index, __out ISettingsProperties **ppPageInfo);
HRESULT GetStyle(__out ISettingsProperties **ppStyleInfo);
};
Deze interface is alleen voor intern gebruik.
ISettingsProperties Interface
__interface ISettingsProperties : IUnknown
{
HRESULT GetAttribute(LPCTSTR attributeName, __out LPBSTR attributeValue);
IStringProperties * Properties();
HRESULT SelectNodes(LPCTSTR xPath, __out IXMLDOMNodeList **ppList);
HRESULT SelectSingleNode(LPCTSTR xPath, __out IXMLDOMNode **ppNode);
HRESULT GetDataNode(LPCTSTR name, __out ISettingsProperties **ppNode);
HRESULT GetDataNodes(__out IDataNodes **ppNodes);
HRESULT GetChildDataNodes(LPCTSTR childeName, __out IDataNodes **ppNodes);
};
Overzicht
Deze interface biedt toegang tot paginagegevens. Als u het hoogste niveau van paginagegevens wilt bereiken, gebruikt u de methode Settings() van de pagina.
HRESULT GetAttribute(LPCTSTR attributeName, LPBSTR attributeValue)
Met deze methode kunt u de waarden van kenmerken ophalen op het hoofdknooppunt, het knooppunt Pagina wanneer u de methode Settings() van de pagina gebruikt.
IStringProperties * Properties()
Deze methode biedt toegang tot de waarden van de setter-eigenschap onder het hoofdknooppunt. Voor een pagina zijn dit de eigenschappen op het hoogste niveau.
HRESULT SelectNodes(LPCTSTR xPath, IXMLDOMNodeList **ppList)
Roep deze methode aan als u rechtstreeks een lijst met XML-knooppunten wilt ophalen met behulp van een XPath-expressie. Het is beter om een van de andere methoden te gebruiken als u kunt. Gebruik deze methode alleen als u knooppunten niet op een andere manier kunt bereiken.
HRESULT SelectSingleNode(LPCTSTR xPath, IXMLDOMNode **ppNode)
Roep deze methode aan als u rechtstreeks één XML-knooppunt wilt ophalen met behulp van een XPath-expressie. Het is beter om een van de andere methoden te gebruiken als u kunt. Gebruik deze methode alleen als u een knooppunt niet op een andere manier kunt bereiken.
HRESULT GetDataNode(LPCTSTR-naam, ISettingsProperties **ppNode)
Haal een gegevenselement op op basis van het kenmerk Naam van dat element.
HRESULT GetDataNodes(IDataNodes **ppNodes)
Met deze methode wordt een lijst met DataItem-elementen onder het huidige knooppunt opgehaald. Roep Vanaf het paginaniveau GetDataNode aan om een ISettingsProperty-interface voor de gegevens op te halen. Roep in dat geval Vervolgens GetDataNodes aan om de lijst met records op te halen. Bijvoorbeeld met deze XML:
<Page ...>
<Data Name="Network">
<DataItem>
<Setter Property="DisplayName">Public</Setter>
<Setter Property="Share">\\servername\Share</Setter>
</DataItem>
<DataItem>
<Setter Property="DisplayName">Dev Team</Setter>
<Setter Property="Share">\\servername\DevShare</Setter>
</DataItem>
</Data>
PSettingsProperties pData;
Settings()->GetDataNode(L"Network", &pData);
PDataNodes pNodes;
pData->GetDataNodes(&pNodes);
HRESULT GetChildDataNodes(LPCTSTR childeName, IDataNodes **ppNodes)
Deze methode biedt een snelle manier om toegang te krijgen tot de set DataItem-knooppunten onder een specifiek gegevensknooppunt . Met behulp van de XML uit het GetDataNodes-voorbeeld doet de volgende code precies hetzelfde als de vier regels code in het voorbeeld onder GetDataNodes , maar met foutcontrole:
ISimpleStringProperties Interface
ISimpleStringProperties Interface
__interface ISimpleStringProperties : IStringProperties
{
void Add(LPCTSTR propertyName, LPCTSTR value);
};
Op zichzelf is deze interface mogelijk niet nuttig. Het wordt echter geïmplementeerd door het onderdeel ID_SimpleStringProperties , dat ook de interface IStringProperties implementeert. U kunt dit onderdeel gebruiken in gevallen waarin u een set eigenschappen moet doorgeven aan een ander onderdeel, zoals een taak, maar u waarden programmatisch wilt toevoegen in plaats van waarden uit XML te gebruiken. Hier volgt een voorbeeld van hoe u deze interface zou gebruiken:
PSimpleStringProperties *pProperties;
CreateInstance(Container(), ID_SimpleStringProperties, &pProperties);
pProperties->Add(L"filename", L"%windir%\\system32\\cscript.exe");
pTask->Init(pProperties, nullptr);
IStringProperties
__interface IStringProperties : IUnknown
{
HRESULT Get(LPCTSTR propertyName, [out] LPBSTR pPropValue);
};
Deze interface biedt eenvoudige toegang tot een set setter-elementen die afkomstig zijn van XML. Deze interface is beschikbaar voor de eigenschappen van een pagina met behulp van Instellingen()->Eigenschappen().
HRESULT Get(LPCTSTR propertyName, [out] LPBSTR pPropValue)
Met deze methode wordt één eigenschapswaarde opgehaald. Zie Tabel 47 en Tabel 48.
Tabel 47. IHRESULT Eigenschapswaarde ophalen
Parameter | Beschrijving |
---|---|
propertyName | Naam van de eigenschap die u wilt lezen |
pPropValue | Bij het afsluiten bevat de eigenschapswaarde een tekenreeks (deze waarde is nullptr als er geen dergelijke eigenschap is.) |
Tabel 48. IHRESULT: resultaten van eigenschapswaarde ophalen
HRESULT | Beschrijving |
---|---|
S_OK | De eigenschapswaarde wordt opgehaald. |
E_INVALIDARG | Er is geen eigenschap met de naam die u hebt opgegeven. |
ITaskManager-interface
__interface ITaskManager : IUnknown
{
HRESULT Init(IWizardPageView *pPageView, int idListView, int idMessage, int idRetryButton, ISettingsProperties *pPageInfo, ITaskManagerCallback *pCallback);
HRESULT SetFailMessage(LPCWSTR message);
HRESULT Start(void);
HRESULT GetTaskMessage(size_t index, LPBSTR message);
HRESULT GetResultType)(size_t index, LPBSTR type);
HRESULT GetProperty(size_t index, LPCTSTR propertyName, LPBSTR value);
int GetSelectedIndex(void);
HRESULT Wait(DWORD waitMilliseconds);
size_t FailedCount(void);
size_t WarningCount(void);
size_t SucceedCount(void);
size_t RunningCount(void);
void OnCommonControlEvent(WORD controlId, LPNMHDR pInfo);
void OnControlEvent(WORD eventId, WORD controlId);
void EnableButtons(BOOL enable);
}
Deze interface wordt geïmplementeerd door het onderdeel TaskManager (ID_TaskManager in ITaskManager.h), het onderdeel dat taken uitvoert op de preflight-pagina. U kunt de preflight-pagina rechtstreeks gebruiken, wat u meestal doet, of uw eigen pagina maken, zodat dit onderdeel het meeste werk doet.
HRESULT Init(IWizardPageView *pPageView, int idListView, int idMessage, int idRetryButton, ISettingsProperties *pPageInfo, ITaskManagerCallback *pCallback)
U moet deze methode aanroepen voordat u een andere methode aanroept. Het onderdeel TaskManager wordt geïnitialiseerd. Zie Tabel 49.
Tabel 49. HRESULT Init
Parameter | Beschrijving |
---|---|
pPageView | Biedt toegang tot de pagina waarop taken worden uitgevoerd (deze pagina moet een specifieke set besturingselementen hebben, die worden beschreven in de volgende parameters.) |
idListView | De controle-id van een ListView-besturingselement waarmee de lijst met taken en de status van deze taken wordt weergegeven |
idMessage | De besturingselement-id van een tekstvak dat wordt gebruikt om een bericht weer te geven voor de taak die u selecteert |
idRetryButton | De besturings-id van een knop die u kunt selecteren om de taken opnieuw uit te voeren |
pPageInfo | Een wrapper rond de XML van de pagina (TaskManager laadt de set taken die vanuit deze XML moeten worden uitgevoerd.) |
pCallback | Kan null zijn (Als deze parameter niet null is, roept TaskManager de methode Gestart aan wanneer een taak wordt gestart en de methode Voltooid voor elke taak die wordt uitgevoerd.) |
HRESULT SetFailMessage(LPCWSTR-bericht)
Met deze methode wordt het bericht ingesteld dat wordt weergegeven als een of meer taken mislukken.
HRESULT Start(void)
Met deze methode worden alle taken gestart. Elke taak wordt gestart op een afzonderlijke thread.
HRESULT GetTaskMessage(size_t index, LPBSTR-bericht)
Deze methode is alleen voor intern gebruik. Hiermee wordt het huidige bericht voor een taak opgehaald op basis van de index in de lijst met taken.
HRESULT GetResultType)(size_t index, LPBSTR-type)
Met deze methode wordt het huidige 'type' voor een taak opgehaald. Tabel 50 toont de beschikbare typen.
Tabel 50. HRESULT GetResultType
Type | Beschrijving |
---|---|
0 | Vertegenwoordigt een taak die is geslaagd |
1 | Vertegenwoordigt een taak die een waarschuwing heeft geretourneerd |
-1 | Vertegenwoordigt een mislukte taak |
Het type wordt opgehaald door de afsluit- of foutcode van de taak te bekijken en een overeenkomst te vinden in het XML-element ExitCodes> van de taak<.
HRESULT GetProperty(size_t index, LPCTSTR propertyName, LPBSTR-waarde)
Deze methode wordt gebruikt door de voortgangs- en voorbereidende pagina's om de eigenschap BitmapFilename setter op te halen, zodat er een afbeelding kan worden weergegeven naast het bericht voor de taak die u markeert. Met andere woorden, u kunt een aangepaste setter toevoegen aan de XML van de taak en deze vervolgens ophalen met deze methode.
int GetSelectedIndex(void)
Met deze methode wordt de index van de geselecteerde taak opgehaald. Dit is handig als u aanvullende informatie over de taak wilt ophalen (zie GetProperty-methode ) die moet worden weergegeven voor de geselecteerde taak. De voortgangs- en voorbereidende pagina's gebruiken deze methode om een afbeelding voor de geselecteerde taak weer te geven.
HRESULT Wait(DWORD waitMilliseconds)
Deze methode helpt voornamelijk bij eenheidstests, zodat de test ervoor kan zorgen dat taken zijn voltooid voordat de eenheidstest wordt afgesloten. Normaal gesproken zou u deze methode niet aanroepen. Het retourneert wanneer alle taken zijn voltooid of de wachttijd is verstreken.
size_t FailedCount(void)
Deze methode retourneert het aantal taken dat momenteel is gemarkeerd als mislukt.
size_t WarningCount(void)
Deze methode retourneert het aantal taken dat momenteel is gemarkeerd als waarschuwing.
size_t SucceedCount(void)
Deze methode retourneert het aantal taken dat momenteel is gemarkeerd als geslaagd.
size_t RunningCount(void)
Deze methode retourneert het aantal taken dat momenteel wordt uitgevoerd.
void OnCommonControlEvent(WORD controlId, LPNMHDR pInfo)
Roep deze methode aan vanuit het OnCommonControlEvent van uw pagina, zodat taskmanager gebeurtenissen kan verwerken die nodig zijn.
void OnControlEvent(WORD eventId, WORD controlId)
Roep deze methode aan vanaf het OnControlEvent van uw pagina, zodat taskmanager gebeurtenissen kan verwerken die nodig zijn.
void EnableButtons(BOOL enable)
Deze methode is alleen voor intern gebruik.
IWizardComponent Interface
__interface IWizardComponent : IUnknown
{
HRESULT SetContainer(IWizardPageContainer *pContainer);
};
Overzicht
Normaal gesproken implementeert u deze interface niet rechtstreeks, maar via de sjabloonklasse WizardComponent . Als uw onderdeel deze interface implementeert en u een klassefactory hebt geregistreerd bij het register, ontvangt uw onderdeel een aanwijzer naar het IWizardPageContainer-exemplaar wanneer deze wordt gemaakt. Dit helpt u bijvoorbeeld toegang te krijgen tot de logger of het register voor het maken van andere onderdelen die uw onderdeel mogelijk nodig heeft.
IWizardDialogController Interface
__interface IWizardDialogController : IUnknown
{
void Initialize(ISettings *pSettings);
void InitPages(void);
void Start();
void Next();
void Finish();
void Previous();
int NumPages();
void Cancel();
HRESULT Focus(WizardButtons button);
HRESULT SetEnable(WizardButtons button, BOOL enable);
void ShowWarningMessage(LPCTSTR message);
void HideWarningMessage();
void ChangePage(size_t newIndex);
IUnknown *CurrentPage(void);
HRESULT GetCurrentTitle([out, retval] LPBSTR pDisplayName);
};
Deze interface is alleen voor intern gebruik.
IWizardDialogView Interface
__interface IWizardDialogView : IUnknown
{
HRESULT LoadBannerImage(LPCTSTR bannerFilename);
HRESULT LoadPage(LPCTSTR pageType, ISettingsProperties *pPageSettings, IWizardPageView **view);
HRESULT SetEnable(WizardButtons button, BOOL enable);
HRESULT Focus(WizardButtons button);
void EnableFinish(BOOL isFinish);
void Exit(int exitCode);
void ShowWarningMessage(LPCTSTR message);
void HideWarningMessage(void);
void SetTitle(LPCTSTR title);
void SetPageTitle(LPCTSTR title);
int ShowMessageBox(LPCTSTR message, LPCTSTR lpCaption, UINT uType);
HWND GetHwnd(void);
void UpdateFocus(void);
};
Deze interface is alleen voor intern gebruik.
IWizardPage-interface
__interface IWizardPage : IUnknown
{
HRESULT SetPageSettings(ISettingsProperties *pPageSettings);
HINSTANCE GetInstanceHandle(void);
int GetDialogResourceId(void);
void WindowCreated(IWizardPageView *pView, IWizardPageContainer *pContainer);
void WindowShown(void);
void WindowHidden(void);
HRESULT NextSelected(void);
void ControlEvent(WORD eventId, WORD controlId);
void CommonControlEvent(WORD controlId, LPNMHDR pInfo, LPBOOL pCancel);
void UnhandledEvent(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam);
};
Overzicht
Deze interface wordt geïmplementeerd door WizardPageImpl, zodat u dit meestal niet zelf hoeft te implementeren. De wizard roept al deze methoden voor u aan wanneer deze communiceert met uw aangepaste pagina's.
IWizardPageContainer Interface
__interface IWizardPageContainer : IUnknown
{
ILogger * Logger(void);
IPropertyBag * Properties(void);
HRESULT CreateInstance(LPCTSTR type, [out] IUnknown **ppInstance);
HRESULT GetService(REFIID iid, [out] IUnknown **ppInstance);
HRESULT ReplaceVariables(LPCTSTR source, [out] LPBSTR pDest);
HRESULT GotoPage(LPCTSTR pageName);
int ShowMessageBox(LPCTSTR message, LPCTSTR lpCaption, UINT uType);
BOOL InPreview(void);
HWND GetHwnd(void);
};
Overzicht
Deze interface is beschikbaar voor uw pagina via de containermethode (geïmplementeerd door WizardPageImpl) en biedt u toegang tot verschillende services van de wizard.
ILogger * Logger(void)
Gebruik deze methode om berichten naar het logboekbestand te schrijven, bijvoorbeeld:
Logger()->Verbose(s_component, L"Message for log file");
IPropertyBag * Properties(void)
Deze methode biedt toegang tot 'geheugen'-variabelen. Dit zijn eigenschappen die zich alleen in het geheugen bevinden terwijl de UDI-wizard wordt uitgevoerd. Deze eigenschappen zijn beschikbaar voor andere pagina's in code of in de XML met behulp van de syntaxis $memoryVarName$ .
HRESULT CreateInstance(LPCTSTR-type, [out] IUnknown **ppInstance)
Met deze methode kunt u een nieuw exemplaar maken van elk onderdeel dat is geregistreerd. Het is echter beter om de sjabloonfunctie CreateInstance te gebruiken, omdat deze sterk is getypt.
HRESULT GetService(REFIID iid, [out] IUnknown **ppInstance)
Met deze methode kunt u een service ophalen die is geregistreerd. Het is echter beter om de sjabloonfunctie GetService aan te roepen, die sterk is getypt (in plaats van IUnknown te gebruiken).
HRESULT ReplaceVariables(LPCTSTR-bron, [out] LPBSTR pDest)
Deze methode verwerkt het werken met variabelen in tekenreekswaarden. Het ondersteunt de indelingen die worden weergegeven in Tabel 51 en Tabel 52.
Tabel 51. HRESULT ReplaceVariables
Formaat | Beschrijving |
---|---|
$Name$ | Vervangt de waarde van een geheugenvariabele door deze naam (Als er geen geheugenvariabele is door de naam, wordt het 'token' verwijderd.) |
%Name% | Een takenreeksvariabele of een omgevingsvariabele. De volgorde is als volgt: 1. Gebruik de waarde van een takenreeksvariabele, indien aanwezig. 2. Gebruik de waarde van een omgevingsvariabele, indien aanwezig. 3. Verwijder anders deze tekst uit de tekenreeks. |
Tabel 52. HRESULT-parameter
Parameter | Beschrijving |
---|---|
Source | De invoertekenreeks, die elke combinatie van $ en % variabelen kan bevatten of helemaal geen |
pDest | Bij terugkeer bevat een nieuwe tekenreeks waarin alle tokens zijn vervangen volgens tabel 51 |
HRESULT GotoPage(LPCTSTR pageName)
Deze methode is niet volledig getest. Het idee is dat u rechtstreeks naar een specifieke pagina kunt overschakelen op basis van de naam van de pagina zoals gedefinieerd in het XML-bestand .config. Als u deze methode aanroept, wordt de optie OnNextSelected op uw pagina omzeild . Bovendien is het gedrag van deze methode onderhevig aan verandering, dus gebruik het op eigen risico.
int ShowMessageBox(LPCTSTR-bericht, LPCTSTR lpCaption, UINT uType)
Met deze methode wordt een berichtvak weergegeven met de tekst en onderschrift die u opgeeft. De parameter uType is een waarde die u kunt opgeven voor de functie MessageBox Win32.
BOOL InPreview(void)
Deze methode retourneert WAAR als u de wizard in de preview-modus hebt gestart door de /preview-switch op te geven. In de preview-modus is de knop Volgende nooit uitgeschakeld. Met deze methode kunt u code overslaan in de preview-modus, die bijvoorbeeld problemen kan veroorzaken wanneer u geen geldige gegevens op de pagina hebt.
HWND GetHwnd(void)
Deze methode retourneert de HWND voor het hoofddialoogvenster. Gebruik deze methode zorgvuldig. Over het algemeen is de programmeerinterface van de UDI-wizard zo ontworpen dat u nooit rechtstreeks met venstergrepen werkt.
IWizardPageView Interface
__interface IWizardPageView : IUnknown
{
HRESULT GetControlWrapper(int itemId, DialogControlTypes controlType, IUnknown **ppControl);
HWND GetHwnd(void);
HWND GetControl(int itemId);
HRESULT Show (void);
HRESULT Hide(void);
HRESULT Focus(int itemId);
IWizardPage * Page(void);
IFormController * Form(void);
HRESULT FocusWizardButton(WizardButtons button);
HRESULT SetEnable(WizardButtons button, BOOL enable);
void ShowWarningMessage(LPCTSTR message);
void HideWarningMessage(void);
};
Deze interface is beschikbaar voor de code op uw pagina via de weergavemethode (geïmplementeerd door WizardPageImpl).
HRESULT GetControlWrapper(int itemId, DialogControlTypes controlType, IUnknown *ppControl)
De UDI-wizard maakt gebruik van wrappers, die eigenlijk façades zijn voor interactie met de besturingselementen op uw pagina. Het gebruik van deze gevels in plaats van de werkelijke besturingselementen maakt het veel gemakkelijker om tests voor uw pagina te schrijven, omdat u van uw tests mock façades kunt voorzien.
In plaats van deze methode rechtstreeks te gebruiken, is het beter om de sjabloonmethode GetControlWrapper te gebruiken, die sterk is getypt, bijvoorbeeld:
PComboBox m_pLanguagePackCombo;
GetControlWrapper(View(), IDC_MY_COMBO, CONTROL_COMBO_BOX, &m_pCombo);
HWND GetHwnd(void)
Deze methode retourneert de venstergreep voor uw pagina. Over het algemeen hebt u geen toegang nodig tot deze venstergreep.
HWND GetControl(int itemId)
Als dat moet, kunt u deze methode aanroepen om de venstergreep voor een besturingselement op uw pagina op te halen. (Het is beter om de sjabloonfunctie GetControlWrapper aan te roepen).
HRESULT Show (ongeldig)
Deze methode is alleen voor intern gebruik.
HRESULT Hide(void)
Deze methode is alleen voor intern gebruik.
HRESULT Focus(int itemId)
Stel de invoerfocus in op een specifiek besturingselement.
IWizardPage * Page(void)
Deze methode is alleen voor intern gebruik.
IFormController * Formulier(void)
Deze methode is alleen voor intern gebruik.
HRESULT FocusWizardButton(knop WizardButtons)
Hiermee stelt u de focus in op een van de knoppen van de wizard. WizardButtons heeft twee waarden: BackButton en NextButton.
HRESULT SetEnable(knop WizardButtons, BOOL inschakelen)
Vraag om een van de wizardknoppen in of uit te schakelen. De knop komt mogelijk niet overeen met de status die u aanvraagt. Als u bijvoorbeeld de wizard UDI uitvoert met de schakeloptie /preview , zijn de knoppen altijd ingeschakeld. WizardButtons heeft twee waarden: BackButton en NextButton.
void ShowWarningMessage(LPCTSTR-bericht)
Met deze methode wordt een waarschuwingsbericht weergegeven onder aan het inhoudsgebied van de pagina. Dit bericht kan elke gewenste tekst zijn.
void HideWarningMessage(void)
Een waarschuwingsbericht verbergen dat u hebt weergegeven met een aanroep naar ShowWarningMessage.
IXmlDocument-interface
__interface IXmlDocument : IUnknown
HRESULT Load(LPCTSTR filename);
HRESULT LoadXml(LPCTSTR xml);
HRESULT Save(LPCWSTR filename);
HRESULT GetParseErrorMessage(LPBSTR pMessage);
HRESULT SelectNodes(LPCTSTR xpath, IXMLDOMNodeList **ppNodes);
HRESULT SelectSingleNode(LPCTSTR xpath, IXMLDOMNode **ppNode);
HRESULT AddSchema(LPCTSTR filename, LPCTSTR ns);
HRESULT AddAttribute(IXMLDOMNode *pNode, LPCWSTR name, LPCWSTR value);
HRESULT CreateNode(DOMNodeType type, LPCWSTR name, LPCWSTR ns, IXMLDOMNode **ppNode);
};
Overzicht
Deze interface wordt geïmplementeerd door het onderdeel ID_IXmlDocument , een gevel die is ontworpen om het werken met XML-documenten in C++ te vereenvoudigen.
HRESULT Load(LPCTSTR bestandsnaam)
Met deze methode wordt een XML-document uit een extern bestand geladen. Het retourneert S_OK als het bestand is geladen zonder fouten of S_FALSE als er een fout is opgetreden. Wanneer er een fout optreedt, kunt u het foutbericht krijgen door GetParseErrorMessage aan te roepen.
HRESULT LoadXml(LPCTSTR xml)
Met deze methode wordt een XML-document uit een tekenreeks geladen in plaats van een extern bestand. Afgezien van de bron voor het lezen van de XML, is het gedrag hetzelfde als de methode Laden .
HRESULT Save(LPCWSTR bestandsnaam)
Met deze methode wordt het XML-document dat zich in het geheugen bevindt, opgeslagen in een extern bestand.
HRESULT GetParseErrorMessage(LPBSTR pMessage)
Deze methode retourneert een nieuwe tekenreeks met het foutbericht van het laden van het XML-document, indien aanwezig. Het retourneert altijd S_OK.
HRESULT SelectNodes(LPCTSTR xpath, IXMLDOMNodeList **ppNodes)
Met deze methode kunt u een XPath-expressie gebruiken om een verzameling knooppunten op te halen uit het document. Het retourneert altijd S_OK.
HRESULT SelectSingleNode(LPCTSTR xpath, IXMLDOMNode **ppNode)
Met deze methode kunt u een XPath-expressie gebruiken om één knooppunt op te halen uit het document. Het retourneert altijd S_OK.
HRESULT AddSchema(LPCTSTR bestandsnaam, LPCTSTR ns)
Met deze methode wordt de naam van een extern schemabestand toegevoegd dat wordt gebruikt om het schema van uw XML-document te valideren wanneer het wordt geladen. De naamruimte die u opgeeft, is de tekenreeks die u kunt gebruiken in XPath-query's, hoewel deze niet is getest.
HRESULT AddAttribute(IXMLDOMNode *pNode, LPCWSTR-naam, LPCWSTR-waarde)
Met deze methode wordt een nieuw kenmerk toegevoegd aan een bestaand knooppunt in het XML-document. Zie Tabel 53.
Tabel 53. HRESULT AddAttribute
Parameter | Beschrijving |
---|---|
pNode | Het knooppunt waaraan u een kenmerk wilt toevoegen |
Naam | Naam van het nieuwe kenmerk |
Value | De waarde voor het nieuwe kenmerk |
HRESULT CreateNode(DOMNodeType-type, LPCWSTR-naam, LPCWSTR ns, IXMLDOMNode **ppNode)
Roep deze methode aan om een nieuw knooppunt te maken:
Pointer<IXMLDOMNode> pNewChild
pXmlDom->CreateNode(NODE_ELEMENT, L"MyElement", L"", &pNewChild);
Zodra u een nieuw knooppunt hebt gemaakt, kunt u dit als onderliggend knooppunt toevoegen aan een ander knooppunt door de appendChild-methode van het bovenliggende knooppunt aan te roepen.
Helperfuncties
Sjabloonfunctie CreateInstance
HRESULT CreateInstance(IWizardPageContainer *pContainer, LPCTSTR type, I **ppObject)
Deze functie is gedefinieerd in IWizardPageContainer.h en biedt een typeveilige wrapper via de methode IWizardPageContainer-CreateInstance>, bijvoorbeeld:
CreateInstance<IDirectory>(Container(), ID_Directory, &pDirectory);
Met deze code maakt u een nieuw ID_Directory-onderdeel om de IDirectory-interface van dat onderdeel op te halen.
GetService-sjabloonfunctie
void GetService(IWizardPageContainer *pContainer, I **ppService)
Deze functie is gedefinieerd in IWizardPageContainer.h en biedt een typeveilige wrapper via de methode IWizardPageContainer-GetService>, bijvoorbeeld:
GetService<ITSVariableBag>(Container(), &pTsBag);
Met deze functie wordt het takenreeksonderdeel opgehaald, dat de ITSVariableBag-interface ondersteunt. (Voor ITSVariableBag kunt u in plaats daarvan de methode TSVariables van de klasse WizardPageImpl gebruiken.)
UDI Wizard Designer Naslaginformatie over configuratiebestandsschema's
Dit bestand wordt gebruikt door de wizard UDI Designer. Er wordt een afzonderlijk bestand gemaakt voor elk aangepast .dll-bestand, dat aangepaste wizardpagina-editors, aangepaste taken of aangepaste validators kan bevatten. Het bestand moet eindigen op .config en zich bevinden in de map installation_folder\Bin\Config (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd).
Tabel 54 bevat de elementen in de wizard UDI Designer configuratiebestand en de bijbehorende beschrijvingen. Het element DesignerConfig is het hoofdknooppunt voor deze verwijzing.
Tabel 54. Elementen in de wizard UDI Designer configuratiebestand en hun beschrijvingen
Elementnaam | Beschrijving |
---|---|
DesignerConfig | Hiermee geeft u de hoofdmap voor alle andere elementen op |
DesignerMappings | een set pagina-elementenGroepen |
Pagina | Hiermee geeft u een wizardpagina-editor die moet worden geladen in de UDI-wizard Designer, die wordt gebruikt om de configuratie-instellingen voor een wizardpagina te bewerken |
Param | Hiermee geeft u een parameter op die wordt doorgegeven aan het bovenliggende taak - of Validator-element en overeenkomt met een Setter-element in het configuratiebestand van de UDI-wizard Opmerking: De kenmerken voor dit element zijn verschillend als het bovenliggende element het element Taak of Validator is. |
Taak | Hiermee geeft u een taak in de taakbibliotheek op |
TaskItem | Hiermee geeft u een groep parameters op die worden doorgegeven aan de taak |
Taakbibliotheek | een set taakelementen Groepen |
Validator | Hiermee geeft u een validator in de validator-bibliotheek op |
ValidatorLibrary | een set Validator-elementen Groepen |
DesignerConfig
Met dit element wordt de hoofdmap voor alle andere elementen opgegeven.
Elementinformatie
Tabel 55 bevat informatie over het element DesignerConfig .
Tabel 55. Informatie over het element DesignerConfig
Kenmerk | Value |
---|---|
Aantal exemplaren | Eén: dit element is vereist. |
Bovenliggende elementen | Geen |
Inhoud | DesignerMappings, TaskLibrary, ValidatorLibrary |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
<DesignerConfig>
+ <TaskLibrary>
+ <ValidatorLibrary>
+ <DesignerMappings>
</DesignerConfig>
DesignerMappings
Met dit element wordt een set pagina-elementen gegroepeerd.
Elementinformatie
Tabel 56 bevat informatie over het element DesignerMappings .
Tabel 56. Informatie over het element DesignerMappings
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of één in het element DesignerConfig (dit element is optioneel als er geen aangepaste wizardpagina in het DLL-bestand is dat overeenkomt met deze UDI-wizard Designer configuratiebestand.) |
Bovenliggende elementen | DesignerConfig |
Inhoud | Pagina |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
<DesignerConfig>
+ <TaskLibrary>
+ <ValidatorLibrary>
- <DesignerMappings>
<Page DLL="SharedPages.dll"
Description="Used to display text that describes the current stagegroup"
Type="Microsoft.SharedPages.WelcomePage"
DisplayName="Welcome"
Image="Welcome_188.png"
DesignerType="Microsoft.Enterprise.UDIDesigner.CoreModules.Views.WelcomePageView"
DesignerAssembly="Microsoft.Enterprise.UDIDesigner.CoreModules.dll"/>
<Page DLL="OSDRefreshWizard.dll"
Description="Captures or restores user state data"
Type="Microsoft.OSDRefresh.UserStatePage"
DisplayName="User Data"
Image="UserState_188.png"
DesignerType="Microsoft.Enterprise.UDIDesigner.CoreModules.Views.UserStatePageView"
DesignerAssembly="Microsoft.Enterprise.UDIDesigner.CoreModules.dll"/>
<Page DLL="OSDRefreshWizard.dll"
Description="Allows selecting the image to install, target drive, and whether to format"
Type="Microsoft.OSDRefresh.VolumePage"
DisplayName="Volume"
Image="Volume_188.png"
DesignerType="Microsoft.Enterprise.UDIDesigner.CoreModules.Views.VolumePageView"
DesignerAssembly="Microsoft.Enterprise.UDIDesigner.CoreModules.dll"/>
</DesignerMappings>
</DesignerConfig>
Pagina
Dit element geeft een wizardpagina-editor op die moet worden geladen in de UDI-wizard Designer, die op zijn beurt wordt gebruikt om de configuratie-instellingen voor een wizardpagina te bewerken.
Elementinformatie
Tabel 57 bevat informatie over het element Pagina .
Tabel 57. Informatie over pagina-element
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer voor elke wizardpagina die is gedefinieerd in het element DesignerMappings |
Bovenliggende elementen | DesignerMappings |
Inhoud | Alle goed gevormde XML-inhoud |
Elementkenmerken
Tabel 58 bevat de kenmerken van het element Pagina en een beschrijving voor elk element.
Tabel 58. Kenmerken en bijbehorende waarden voor het pagina-element
Kenmerk | Beschrijving |
---|---|
Beschrijving | Hiermee geeft u tekst op die informatie geeft over de parameter, die wordt weergegeven in de wizard UDI Designer |
DesignerAssembly | Hiermee geeft u de naam op van het .dll-bestand dat is gekoppeld aan de pagina-editor van de wizard (het .dll-bestand moet bestaan in de map installation_folder\Bin (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd.) |
DesignerType | Hiermee geeft u de naam van de pagina-editor van de wizard op in het .dll bestand dat is opgegeven in het kenmerk DesignerAssembly (dit is het Microsoft .NET-type voor de pagina-editor van de wizard, met de volledig gekwalificeerde Microsoft .NET-naamruimte.) |
DisplayName | Hiermee geeft u de gebruiksvriendelijke naam van de pagina-editor, die wordt weergegeven in de UDI-wizard Designer |
DLL | Hiermee geeft u de naam op van het .dll-bestand dat is gekoppeld aan de wizardpagina (het .dll-bestand moet bestaan in de map installation_folder\Templates\Distribution\Tools\platform (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd en het platformx86 is voor de 32-bits versie of x64 voor de 64-bits versie.) Notitie: Zorg ervoor dat de DLL-processorarchitectuur overeenkomt met de mdt-processorarchitectuur die is geïnstalleerd. Als u bijvoorbeeld een 32-bits versie van MDT hebt geïnstalleerd, moet u ervoor zorgen dat u een 32-bits DLL gebruikt voor de wizardpagina. |
Afbeelding | Hiermee geeft u de naam op van een afbeelding van de pagina in PNG-indeling (Portable Network Graphics) (het .png-bestand moet aanwezig zijn in de map installation_folder\Bin\Images (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd.) |
Type | Hiermee geeft u de pagina-editor van de wizard op en deze moet overeenkomen met de naam die is gebruikt toen de aangepaste pagina werd geregistreerd |
Opmerkingen
De UDI-wizard Designer gebruikt het element Pagina als een sjabloon om de eerste XML voor een nieuwe wizard te maken. De UDI-wizard Designer voert schemavalidatie uit om ervoor te zorgen dat de pagina- en onderliggende elementen een geldige indeling hebben. Dit element biedt een toewijzing tussen het paginatype van de wizard UDI en de informatie die de UDI-wizard Designer nodig heeft om pagina's van dit type te bewerken en te maken met behulp van een aangepaste pagina-editor.
Voorbeeld
Geen.
Param
Met dit element wordt een parameter opgegeven die wordt doorgegeven aan het bovenliggende element Taak of Validator en overeenkomt met een Setter-element in het configuratiebestand van de UDI-wizard.
Opmerking
De kenmerken voor dit element verschillen als het bovenliggende element het element Taak of Validator is.
Elementinformatie
Tabel 59 bevat informatie over het element Param .
Tabel 59. Informatie over param-element
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer voor elk bovenliggend TaskItem- of Validator-element |
Bovenliggende elementen | TaskItem, Validator |
Inhoud | Alle goed gevormde XML-inhoud |
Elementkenmerken
Tabel 60 bevat de kenmerken van het element Param en een beschrijving van elk element.
Tabel 60. Kenmerken en bijbehorende waarden voor het element Param
Kenmerk | Beschrijving |
---|---|
Beschrijving | Hiermee geeft u tekst op die informatie geeft over de parameter, die wordt weergegeven in de wizard UDI Designer Opmerking: dit kenmerk is alleen geldig voor het validator-element. |
DisplayName | Hiermee geeft u de gebruiksvriendelijke naam van de validatorparameter op, die wordt weergegeven voor de juiste pagina van de wizard UDI in de UDI-wizard Designer (deze naam is meestal beschrijvender dan het kenmerk Naam.) Opmerking: dit kenmerk is alleen geldig voor het element Validator. |
Naam | Hiermee geeft u de naam op van de parameter die wordt doorgegeven aan de taak of validator, afhankelijk van het bovenliggende element (Dit kenmerk wordt het kenmerk Eigenschap in een setter-element in het configuratiebestand van de UDI-wizard.) Notitie: Deze parameter wordt gebruikt voor bovenliggende elementen van TaskItem en Validator . |
Opmerkingen
Geen.
Voorbeeld
Geen.
Taak
Met dit element wordt een taak in de taakbibliotheek opgegeven.
Elementinformatie
Tabel 61 bevat informatie over het element Taak .
Tabel 61. Informatie over taakelementen
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer in het element TaskLibrary (Dit element is niet optioneel als het element TaskLibrary is opgegeven.) |
Bovenliggende elementen | Taakbibliotheek |
Inhoud | TaskItem |
Elementkenmerken
Tabel 62 bevat de kenmerken van het element Taak en een beschrijving van elk element.
Tabel 62. Kenmerken en bijbehorende waarden voor het taakelement
Kenmerk | Beschrijving |
---|---|
Beschrijving | Hiermee geeft u tekst op die informatie geeft over de taak, die wordt weergegeven in de wizard UDI Designer |
DLL | Hiermee geeft u de naam op van het .dll bestand dat is gekoppeld aan de taak (het .dll bestand moet bestaan in de map installation_folder\Templates\Distribution\Tools\platform (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd en het platformx86 is voor de 32-bits versie of x64 voor de 64-bits versie.) |
Naam | Hiermee geeft u de naam van de taak op, die wordt weergegeven op de juiste pagina van de wizard UDI en in de UDI-wizard Designer |
Type | Hiermee geeft u het taaktype op, dat is geregistreerd bij het fabrieksregister en wordt gebruikt om een specifieke taak in een .dll-bestand aan te roepen |
Opmerkingen
Geen.
Voorbeeld
Geen.
TaskItem
Dit element geeft een groep parameters op die aan de taak worden doorgegeven.
Elementinformatie
Tabel 63 bevat informatie over het element TaskItem .
Tabel 63. Informatie over taskitem-element
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer voor elk taakelement |
Bovenliggende elementen | Taak |
Inhoud | Param |
Elementkenmerken
Tabel 64 bevat de kenmerken van het element TaskItem en een beschrijving van elk element.
Tabel 64. Kenmerk en bijbehorende waarden voor het element TaskItem
Kenmerk | Beschrijving |
---|---|
Type | Hiermee geeft u het elementtype op dat wordt gemaakt in het configuratiebestand van de UDI-wizard. Er wordt een XML-element gemaakt dat overeenkomt met de waarde van dit kenmerk. Als de waarde voor dit kenmerk bijvoorbeeld Bestand is, wordt er een file-element gemaakt in het configuratiebestand van de UDI-wizard. Op dit moment zijn de enige ondersteunde waarden: - Bestand, waarvoor twee onderliggende Param-elementen zijn vereist (één subelement param met het kenmerk Naam ingesteld op Bron en een ander onderliggend element param met het kenmerk Naam ingesteld op Dest) - Setter, waarvoor één onderliggend Param-element is vereist |
Opmerkingen
Geen.
Voorbeeld
Geen.
Taakbibliotheek
Met dit element wordt een set taakelementen gegroepeerd.
Elementinformatie
Tabel 65 bevat informatie over het element Taakbibliotheek .
Tabel 65. Informatie over het element TaskLibrary
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of één in het element DesignerConfig (Dit element is optioneel als het DLL-bestand geen aangepaste taken bevat die overeenkomen met deze UDI-wizard Designer configuratiebestand.) |
Bovenliggende elementen | DesignerConfig |
Inhoud | Taak |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
<DesignerConfig>
- <TaskLibrary>
+<Task DLL="" Description="Executes a process with the given command line." Type="Microsoft.Wizard.ShellExecuteTask" Name="Shell Execute Task">
+<Task DLL="OSDRefreshWizard.dll" Description="Discovers supported applications for install." Type="Microsoft.OSDRefresh.AppDiscoveryTask" Name="Application Discovery">
+<Task DLL="SharedPages.dll" Description="Check to ensure a wired network connection is available." Type="Microsoft.SharedPages.WiredNetworkTask" Name="Wired Network Check">
+<Task DLL="OSDRefreshWizard.dll" Description="Check to ensure power source is AC (not battery)." Type="Microsoft.OSDRefresh.ACPowerTask" Name="AC Power Check">
+<Task DLL="" Description="Check to ensure power source is AC (not battery)." Type="Microsoft.Wizard.CopyFilesTask" Name="Copy Files Task">
</TaskLibrary>
+ <ValidatorLibrary>
+ <DesignerMappings>
</DesignerConfig>
Validator
Dit element geeft een validator aan binnen de validator-bibliotheek.
Elementinformatie
Tabel 66 bevat informatie over het element Validator .
Tabel 66. Informatie over het validator-element
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of meer in het element ValidatorLibrary (dit element is optioneel.) |
Bovenliggende elementen | ValidatorLibrary |
Inhoud | Param |
Elementkenmerken
Tabel 67 bevat de kenmerken van het element Validator en een beschrijving van elk element.
Tabel 67. Kenmerken en bijbehorende waarden voor het validatie-element
Kenmerk | Beschrijving |
---|---|
Beschrijving | Hiermee geeft u tekst op die informatie geeft over de validator, die wordt weergegeven in de wizard UDI Designer |
DisplayName | Hiermee geeft u de gebruiksvriendelijke naam op van de validator die wordt weergegeven in de wizard UDI Designer (Deze naam is meestal beschrijvender dan het kenmerk Naam.) |
DLL | Hiermee geeft u de naam op van het .dll-bestand dat is gekoppeld aan de validator (het .dll-bestand moet bestaan in de map installation_folder\Templates\Distribution\Tools\platform (waarbij installation_folder de map is waarin u MDT hebt geïnstalleerd en het platformx86 is voor de 32-bits versie of x64 voor de 64-bits versie.) |
Naam | Hiermee geeft u de naam van de validator op, die wordt weergegeven op de juiste UDI-wizardpagina en in de UDI-wizard Designer |
Type | Hiermee geeft u het validatietype op, dat is geregistreerd met de registerfactor en wordt gebruikt om een specifieke validator binnen een .dll-bestand aan te roepen |
Opmerkingen
Geen.
Voorbeeld
Geen.
ValidatorLibrary
Met dit element wordt een set Validator-elementen gegroepeerd .
Elementinformatie
Tabel 68 bevat informatie over het element ValidatorLibrary .
Tabel 68. Informatie over het element ValidatorLibrary
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of één in het element DesignerConfig (dit element is optioneel als er geen aangepaste validators in het DLL-bestand zijn die overeenkomen met deze UDI-wizard Designer configuratiebestand.) |
Bovenliggende elementen | DesignerConfig |
Inhoud | Validator |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
<DesignerConfig> + <TaskLibrary> - <ValidatorLibrary> +<Validator DLL="" Description="Vereist tekst in een veld" Type="Microsoft.Wizard.Validation.NonEmpty" Name="NonEmpty"> +<Validator DLL="" Description="Doesn't bepaalde tekens in een veld toestaan" Type="Microsoft.Wizard.Validation.InvalidChars" Name="InvalidChars"> +<Validator DLL="" Description="Must follow a pre-defined pattern" Type="Microsoft.Wizard.Validation.RegEx" Name=" NamedPattern"> +<Validator DLL="" Description="Vereisen dat de inhoud overeenkomt met een reguliere expressie" Type="Microsoft.Wizard.Validation.RegEx" Name="RegEx"></ValidatorLibrary> + <DesignerMappings></DesignerConfig>
Naslaginformatie voor Designer van de wizard UDI
Besturingselementen
De besturingselementen die worden gebruikt voor het maken van aangepaste wizardpagina-editors voor gebruik in de UDI-wizard Designer zijn WPF UserControl-exemplaren. Tabel 69 bevat de besturingselementen die u kunt gebruiken om aangepaste wizardpagina-editors te maken.
Tabel 69. Besturingselementen die kunnen worden gebruikt om pagina-editors voor aangepaste wizards te maken
Besturingselement | Beschrijving |
---|---|
CollectionTControl | Dit besturingselement wordt gebruikt om gegevens te bewerken die zijn opgeslagen in het element Gegevens in een pagina-element . |
FieldElementControl | Dit besturingselement wordt gebruikt voor het bewerken van een veld, dat doorgaans is gekoppeld aan een tekstvakbesturingselement op de pagina .xaml. |
SetterControl | Dit besturingselement wordt gebruikt om de waarde van een setter-element in het configuratiebestand van de UDI-wizard te wijzigen. |
CollectionTControl
Dit besturingselement biedt veel mogelijkheden voor het bewerken van gegevens. De beste manier om te leren hoe u dit besturingselement gebruikt, is door het voorbeeld te bekijken, dat laat zien hoe u gegevens kunt bewerken onder het element Gegevens van een pagina. In het voorbeeld ziet u met name hoe u items in dit besturingselement toevoegt, verwijdert en bewerkt.
FieldElementControl
Gebruik dit besturingselement om een veld te bewerken, dat doorgaans is gekoppeld aan een tekstvakbesturingselement op de pagina .xaml.
Voorbeeld
Het volgende fragment van een .xaml-bestand illustreert het gebruik van FieldElementControl om de standaardwaarde voor een veld op een wizardpagina te configureren met behulp van een onderliggend tekstvakbesturingselement :
<Controls:FieldElementControl
Width="450"
Margin="0,5"
FieldData="{Binding DataContext.Location, ElementName=ControlRoot}"
HeaderText="Location Combo Box"
InstructionText="Here you can configure the behavior of the location combo box."
HideValidationTab="True">
<TextBox Text="{Binding FieldData.DefaultValue,
UpdateSourceTrigger=PropertyChanged,
Mode=TwoWay}"/>
</Controls:FieldElementControl>
Eigenschappen
FieldData
Deze tekenreekseigenschap bevat informatie voor het verbinden van FieldElementControl met de onderliggende XML voor het veld. De verbinding wordt gemaakt met een eigenschap van de interface van de pagina-editor. Het volgende fragment van een .xaml-bestand illustreert het gebruik van de eigenschap FieldData :
FieldData="{Binding DataContext.Location, ElementName=ControlRoot}"
In dit fragment heet de interface van de pagina-editor ControlRoot en wordt deze opgegeven in de parameter ElementName . De binding wordt uitgevoerd voor de eigenschap DataContext.Location van de interface van de ControlRoot-pagina-editor . DataContext is een weergavemodel dat verwijst naar het element Pagina in het configuratiebestand van de UDI-wizard. Locatie is een eigenschap van de weergave die een lijst met mogelijke locaties retourneert en wordt gedefinieerd door een gegevenselement in het configuratiebestand van de UDI-wizard. Elke locatie wordt gedefinieerd door een DataItem-element in het configuratiebestand van de UDI-wizard.
HeaderText
Met deze tekenreekseigenschap kunt u een header opgeven voor het besturingselement FieldElementControl . De koptekst fungeert als een titel voor het besturingselement en is opgemaakt als vette, oranje tekst die direct boven het besturingselement wordt weergegeven.
Instructietekst
Met deze tekenreekseigenschap kunt u informatieve tekst opgeven voor het besturingselement FieldElementControl . Normaal gesproken wordt de tekst gebruikt om een korte beschrijving van het veld te geven en uit te leggen hoe het configureren van het veld van invloed is op de bijbehorende wizardpagina.
HideEnableButton
Met deze Booleaanse eigenschap kunt u de zichtbaarheid van de knop beheren die de status wijzigt tussen Ontgrendeld en Vergrendeld (ingeschakeld of uitgeschakeld). Indien ingesteld op:
Waar, de knop is niet zichtbaar
Onwaar, de knop is zichtbaar (dit is de standaardwaarde.)
HideDefaultTab
Met deze booleaanse eigenschap kunt u de zichtbaarheid beheren van de sectie die het besturingselement bevat dat wordt gebruikt om de standaardwaarde in te stellen. Hoewel de eigenschap verwijst naar een tabblad, is er geen tabblad in FieldElementControl , maar een sectie die kan worden verborgen. Indien ingesteld op:
Waar, de sectie is niet zichtbaar
Onwaar, de sectie is zichtbaar (dit is de standaardwaarde.)
HideBorder
Met deze booleaanse eigenschap kunt u de zichtbaarheid van de rand rond het veldbesturingselement beheren. Indien ingesteld op:
Waar, de rand is niet zichtbaar
Onwaar, de rand is zichtbaar (dit is de standaardwaarde.)
HideImage
Met deze booleaanse eigenschap kunt u de zichtbaarheid van de afbeelding beheren die door de eigenschap FieldImageSource wordt geconfigureerd. Indien ingesteld op:
Waar, de afbeelding is niet zichtbaar
Onwaar, de afbeelding is zichtbaar (dit is de standaardwaarde.)
HideValidationTab
Met deze booleaanse eigenschap kunt u de zichtbaarheid beheren van de sectie waarin de lijst met validators wordt beheerd. Hoewel de eigenschap verwijst naar een tabblad, is er geen tabblad in FieldElementControl , maar een sectie die kan worden verborgen. Indien ingesteld op:
Waar, de sectie is niet zichtbaar
Onwaar, de sectie is zichtbaar (dit is de standaardwaarde.)
HideSummaryTab
Met deze booleaanse eigenschap kunt u de zichtbaarheid beheren van de sectie waarin u de veldsamenvatting configureert onderschrift. De onderschrift en de bijbehorende waarde uit het veld worden weergegeven op een paginatype van de wizard SummaryPage in een fasestroom. Hoewel de eigenschap verwijst naar een tabblad, is er geen tabblad in FieldElementControl , maar een sectie die kan worden verborgen. Indien ingesteld op:
Waar, de sectie is niet zichtbaar
Onwaar, de sectie is zichtbaar (dit is de standaardwaarde.)
HideTaskSequenceTab
Met deze booleaanse eigenschap kunt u de zichtbaarheid bepalen van de sectie waarin u de takenreeksvariabele configureert die overeenkomt met het veld. Hoewel de eigenschap verwijst naar een tabblad, is er geen tabblad in FieldElementControl , maar een sectie die kan worden verborgen. Indien ingesteld op:
Waar, de sectie is niet zichtbaar
Onwaar, de sectie is zichtbaar (dit is de standaardwaarde.)
SetterControl
Gebruik dit besturingselement om de waarde van een Setter-element in het configuratiebestand van de UDI-wizard te wijzigen. Dit besturingselement bevat een onderliggend besturingselement dat wordt gebruikt om de waarde van het setter-element te wijzigen.
Voorbeeld
Het volgende fragment van een .xaml-bestand illustreert het gebruik van SetterControl om een Setter-element met de naam KeyLocationSetter te wijzigen met behulp van een onderliggend tekstvakbesturingselement .
<Controls:SetterControl Margin="5"
Width="450"
HeaderText="Title text"
SetterData="{Binding KeyLocationSetter}"
InstructionText="What this means..."
HorizontalAlignment="Left">
<TextBox
Margin="0,3"
Text="{Binding SetterData.SetterValue, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
/>
</Controls:SetterControl>
Eigenschappen
SetterData
U moet dit koppelen aan een eigenschap van uw weergave of weergavemodel die verbinding maakt met de setter. Dit is vergelijkbaar met de manier waarop u een veld bindt, zoals beschreven voor FieldElementControl.
HeaderText
Met deze eigenschap kunt u de tekst instellen die wordt weergegeven in de koptekst van het besturingselement. Beschouw deze eigenschap als een titel voor het besturingselement; standaard wordt deze weergegeven als vette, oranje tekst.
Instructietekst
Stel deze eigenschap in op de tekst die u onder de koptekst wilt weergeven, meestal instructietekst die de gebruiker van uw aangepaste editor laat weten wanneer en waarom ze het gedrag van het veld willen wijzigen.
Interfaces
Tabel 70 bevat de interfaces die u kunt gebruiken om aangepaste wizardpagina-editors te maken.
Tabel 70. Interfaces die kunnen worden gebruikt om pagina-editors voor aangepaste wizards te maken
Interface | Beschrijving |
---|---|
IDataService | Gebruik deze interface om velden te verbinden met de gegevenselementen in het configuratiebestand van de UDI-wizard. |
IMessageBoxService | Deze interface biedt toegang tot methoden die u kunt gebruiken om berichtvakken weer te geven. |
IDataService
Deze interface bevat verschillende eigenschappen en methoden, maar er is slechts één eigenschap die u nodig hebt. Deze eigenschap is de enige die hier wordt beschreven.
U kunt afhankelijkheidsinjectie gebruiken om een aanwijzer naar deze interface te verkrijgen met behulp van code zoals deze in uw klasse:
[Dependency]
public IDataService DataService { get; set; }
Eigenschappen
Tabel 71 bevat de eigenschappen voor de IDataService-interface .
Tabel 71. Eigenschappen voor de IDataService-interface
Interface | Beschrijving |
---|---|
CurrentPage | Deze eigenschap biedt toegang tot de XML-elementen, -kenmerken en -waarden onder de context van de huidige pagina die wordt bewerkt in het configuratiebestand van de UDI-wizard |
CurrentPage
XElement CurrentPage { get; set; }
Deze eigenschap biedt toegang tot de XML voor de huidige pagina. U moet deze eigenschap nooit instellen, maar u kunt de XML voor uw pagina wijzigen. In de voorbeeldpagina-editor ziet u voorbeelden van het wijzigen van de XML. U gebruikt deze eigenschap voornamelijk wanneer u aangepaste gegevens hebt. Voor velden en eigenschappen (setters) kunt u vooraf gemaakte besturingselementen gebruiken die voor alle details zorgen.
IMessageBoxService
Deze interface biedt toegang tot methoden die u kunt gebruiken om berichtvakken weer te geven. Misschien vraagt u zich af waarom u een interface nodig hebt om een berichtvak weer te geven. De realiteit is dat u dat niet doet: Microsoft gebruikt deze interface met in code, omdat het helpt bij het schrijven van geautomatiseerde tests voor ontwerppagina's.
Het gebruik van deze methoden biedt echter wel één nuttig voordeel: in de dialoogvensters is altijd de 'eigenaar' ingesteld op de UDI-wizard, zodat het dialoogvenster correct wordt gegroepeerd met het hoofdvenster.
U kunt afhankelijkheidsinjectie gebruiken om een aanwijzer naar deze interface te verkrijgen met behulp van code zoals deze in uw klasse:
[Dependency]
public IMessageBoxService MessageBoxes { get; set; }
Methoden
Tabel 72 bevat de methoden voor de interface IMessageBoxService .
Tabel 72. Methoden voor de IMessageBoxService-interface
Methode | Beschrijving |
---|---|
ShowMessageBox | Deze overbelaste methode wordt gebruikt om een berichtvak weer te geven met de volgende leden: - ShowMessageBox(Tekenreeksbericht, Tekenreeks onderschrift, MessageBoxImage-pictogram) - ShowMessageBox(tekenreeksbericht, tekenreeks onderschrift, knop MessageBoxButton, MessageBoxImage-pictogram) - ShowMessageBox(uitzonderings uitzondering) |
ShowDialogWindow | Gebruik deze methode om een nieuw dialoogvenster te maken. |
ShowWizardWindow | Gebruik deze methode om een aangepaste editor weer te geven in een dialoogvenster met de knoppen Volgende en Vorige voor navigatie. |
ShowMessageBox
Met deze methode wordt een berichtvenster weergegeven dat een onderliggend element is van de pagina-editor van de aangepaste wizard. Dit lid is overbelast: Tabel 73 bevat een lijst met de leden en een korte beschrijving van elk lid. Zie de sectie die overeenkomt met elk lid voor volledige informatie over elk lid (inclusief syntaxis, gebruik en voorbeelden).
Tabel 73. Overbelaste leden voor de methode ShowMessagBox
Lid | Beschrijving |
---|---|
ShowMessageBox(Tekenreeksbericht, Tekenreeks onderschrift, MessageBoxImage-pictogram) | Geeft een berichtvak weer met een pictogram en een knop OK |
ShowMessageBox(tekenreeksbericht, tekenreeks onderschrift, knop MessageBoxButton, MessageBoxImage-pictogram) | Geeft een berichtvak weer met een pictogram en verschillende mogelijke combinaties van knoppen |
ShowMessageBox(uitzonderings uitzondering) | Geeft een berichtvenster weer met informatie over een uitzondering en een knop OK |
ShowMessageBox(Tekenreeksbericht, Tekenreeks onderschrift, MessageBoxImage-pictogram)
void ShowMessageBox(String message, String caption, MessageBoxImage icon);
Met deze methode wordt een berichtvenster met de knop OK weergegeven. Zie Tabel 74.
Tabel 74. Parameters voor de methode ShowMessageBox(Tekenreeksbericht, Tekenreeks onderschrift, MessageBoxImage-pictogram)
Parameter | Beschrijving |
---|---|
Bericht | Het bericht dat moet worden weergegeven in het inhoudsgebied van het berichtvak |
onderschrift | De tekst die moet worden weergegeven in de titelbalk van het dialoogvenster |
pictogram | Het type pictogram dat moet worden weergegeven in het berichtvak |
ShowMessageBox(tekenreeksbericht, tekenreeks onderschrift, knop MessageBoxButton, MessageBoxImage-pictogram)
MessageBoxResult ShowMessageBox(string message, string caption, MessageBoxButton button, MessageBoxImage icon);
Met deze methode wordt een berichtvak weergegeven met de set knoppen die u wilt weergeven en geeft aan welke knop u hebt geselecteerd. Zie Tabel 75.
Tabel 75. Parameters voor de methode ShowMessageBox(tekenreeksbericht, tekenreeks onderschrift, knop MessageBoxButton, MessageBoxImage-pictogram)
Parameter | Beschrijving |
---|---|
Bericht | Het bericht dat moet worden weergegeven in het inhoudsgebied van het berichtvak |
onderschrift | De tekst die moet worden weergegeven in de titelbalk van het dialoogvenster |
knoop | Welke knoppen moeten worden weergegeven |
pictogram | Het type pictogram dat moet worden weergegeven in het berichtvak |
ShowMessageBox(uitzonderings uitzondering)
void ShowMessageBox(Exception exception);
Met deze methode wordt een berichtvak weergegeven waarin informatie over een uitzondering wordt gerapporteerd. Dit berichtvak heeft één knop OK . Zie Tabel 76.
Tabel 76. Parameters voor de methode ShowMessageBox (uitzondering uitzondering)
Parameter | Beschrijving |
---|---|
uitzondering | De uitzondering die u wilt rapporteren (in het dialoogvenster wordt een uitzondering gebruikt. Bericht als inhoud.) |
ShowDialogWindow
void ShowDialogWindow(Type viewType, DialogInteraction dialogPayload);
Met deze methode maakt u een nieuw dialoogvenster, waarvan de inhoud de tekst is die u opgeeft in de parameter viewType . De UDI-Designer maakt een nieuw exemplaar van dit type en verpakt deze in een dialoogvenster met de knoppen OK en Annuleren.
U geeft gegevens door aan uw besturingselement met behulp van de dialoogvensterBetalingsparameter. De SampleEditor-oplossing in de SDK-map bevat een voorbeeld van het gebruik van deze functionaliteit.
ShowWizardWindow
void ShowWizardWindow(Type viewType, DialogInteraction dialogPayload);
Met deze methode kunt u een aangepaste editor weergeven in een dialoogvenster met de knoppen Volgende en Vorige voor navigatie. Microsoft heeft geen voorbeeld verstrekt voor het gebruik van deze methode.
Naslaginformatie over het configuratiebestand van de wizard Configuratiebestand
Dit bestand wordt gebruikt door de UDI-wizard en geconfigureerd door de UDI-wizard Designer. Dit bestand wordt gebruikt om het volgende te configureren:
Wizardpagina's die worden weergegeven in de UDI-wizard
De volgorde van de wizardpagina's in de UDI-wizard
Instellingen voor de velden op elke wizardpagina
Beschikbare StageGroups in de UDI-wizard Designer
Beschikbare fasen binnen elke implementatiewizard in de UDI-wizard Designer
77 bevat de elementen in het configuratiebestand van de UDI-wizard en de bijbehorende beschrijvingen. Het element Wizard is het hoofdknooppunt voor deze verwijzing.
Tabel 77. Elementen in het configuratiebestand van de UDI-wizard en hun beschrijvingen
Elementnaam | Beschrijving |
---|---|
Data | Groepen de afzonderlijke DataItem-elementen in een pagina-element en heeft een naam met het kenmerk Name. |
DataItem | Groepen de afzonderlijke setter-elementen in een pagina-element. U kunt hiërarchische gegevens maken door een of meer gegevenselementen op te opnemen in een DataItem-element . Elk DataItem-element vertegenwoordigt een afzonderlijk item. Een lijst met beschikbare stations kan bijvoorbeeld een DataItem hebben voor de weergavenaam en een ander DataItem-element voor de bijbehorende stationsletter. |
Standaard | Hiermee geeft u een standaardwaarde op voor het veld dat is opgegeven in het bovenliggende veld of het bovenliggende element RadioGroup . De standaardwaarde wordt ingesteld op de waarde tussen haakjes van dit element. |
DLL | Hiermee geeft u een DLL die moet worden geladen en waarnaar moet worden verwezen door de UDI-wizard en de UDI-wizard Designer. |
DLL's | Groepen de afzonderlijke DLL-elementen. |
Fout | Hiermee geeft u een mogelijke foutcode op die een taak kan retourneren. De waarde van de foutcode wordt geretourneerd door de HRESULT van de taak en wordt gevangen door dit element om specifiekere foutinformatie op te geven. |
ExitCode | Hiermee geeft u een mogelijke afsluitcode voor een taak op. De afsluitcodes zijn retourcodes die de taak verwacht. Maak een ExitCode-element voor elke mogelijke afsluitcode. Anders kunt u een sterretje (*) opgeven in het kenmerk Waarde om retourcodes te verwerken die niet worden vermeld in andere ExitCode-elementen . |
ExitCodes | Groepen een set exitcode- en foutelementen voor een taakelement of een foutelement. |
Veld | Hiermee geeft u een exemplaar van een besturingselement in een pagina-element dat wordt gebruikt voor aanpassing met XML. Niet alle besturingselementen staan aanpassing met XML toe, alleen besturingselementen die gebruikmaken van het element Veld . |
Velden | Groepen de afzonderlijke veldelementen in een pagina-element. |
Bestand | Hiermee geeft u de bron en bestemming voor een bestandskopieerbewerking met behulp van het taaktype Microsoft.Wizard.CopyFilesTask . U kunt een afzonderlijk bestandselement opnemen om meer dan één bestand in één taak te kopiëren. |
Pagina | Hiermee geeft u een exemplaar van een pagina op en bevat alle configuratie-instellingen voor de pagina. |
PageRef | Hiermee geeft u een verwijzing naar een exemplaar van een pagina in een fase in een StageGroup. |
Bladzijden | Groepen de afzonderlijke pagina-elementen. |
RadioGroup | Hiermee geeft u een groep keuzerondjes binnen een veldelement . |
StageGroup | Hiermee geeft u een groep van een of meer fasen. |
StageGroups | Groepen een set fasegroepen in een configuratiebestand van de UDI-wizard. |
Setter | Hiermee geeft u een eigenschapsinstelling van een waarde voor een eigenschap met de naam in de eigenschap Eigenschap . |
Fase | Hiermee geeft u een fase binnen een StageGroup en bevat een of meer PageRef-elementen . |
Stijl | Groepen de afzonderlijke setter-elementen waarmee de UDI-wizard wordt geconfigureerd, inclusief de titel die boven aan de wizard wordt weergegeven en de bannerafbeelding die wordt weergegeven in de UDI-wizard. |
Taak | Hiermee geeft u een taak op die moet worden uitgevoerd op de pagina die is opgegeven in het bovenliggende pagina-element . |
Taken | Groepen een set taken voor een pagina-element. |
Validator | Hiermee geeft u een validator voor het veld besturingselement dat is opgegeven in het bovenliggende veldelement . |
Tovenaar | Hiermee geeft u de hoofdmap voor alle andere elementen. |
Gegevens
Dit element groepeert de afzonderlijke DataItem-elementen binnen een pagina-element en heeft een naam met het kenmerk Name .
Elementinformatie
Tabel 78 bevat informatie over het element Gegevens .
Tabel 78. Gegevenselementinformatie
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of meer binnen elk pagina-element (dit element is optioneel.) |
Bovenliggende elementen | Pagina, DataItem |
Inhoud | DataItem, Setter |
Elementkenmerken
Tabel 79 bevat de kenmerken van het element Gegevens en een beschrijving van elk element.
Tabel 79. Kenmerken en bijbehorende waarden voor het gegevenselement
Kenmerk | Beschrijving |
---|---|
Naam | Hiermee geeft u de naam van het element Gegevens op |
Opmerkingen
Met het kenmerk Name kan code een specifieke set gegevens ophalen.
Voorbeeld
Geen.
DataItem
Met dit element worden de afzonderlijke setter-elementen binnen een pagina-element gegroepeerd. U kunt hiërarchische gegevens maken door een of meer gegevenselementen op te opnemen in een DataItem-element . Elk DataItem-element vertegenwoordigt een afzonderlijk item. Een lijst met beschikbare stations kan bijvoorbeeld een DataItem hebben voor de weergavenaam en een ander DataItem-element voor de bijbehorende stationsletter.
Elementinformatie
Tabel 80 bevat informatie over het element DataItem .
Tabel 80. Gegevens van het element DataItem
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of meer binnen elk gegevenselement (dit element is optioneel.) |
Bovenliggende elementen | Data |
Inhoud | Gegevens, setter |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
Geen.
Standaard
Dit element geeft een standaardwaarde op voor het veld dat is opgegeven in het bovenliggende veld of radiogroepelement . De standaardwaarde wordt ingesteld op de waarde tussen haakjes van dit element.
Elementinformatie
Tabel 81 bevat informatie over het element Standaard .
Tabel 81. Standaardelementgegevens
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of meer in een veld - of radiogroepelement (dit element is optioneel.) |
Bovenliggende elementen | Veld, RadioGroup |
Inhoud | Kan elke goed opgemaakte XML-inhoud zijn, maar is meestal standaardtekst |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
In het volgende voorbeeld is de standaardwaarde voor het veld Tijdzone ingesteld op 'Pacific Standard Time':
<Field Name="TimeZone" Enabled="true" VarName="OSDTimeZone" Summary="Time Zone:">
<Default>Pacific Standard Time</Default>
DLL
Dit element geeft een DLL op voor de wizard UDI en de UDI-wizard Designer om te laden en ernaar te verwijzen.
Elementinformatie
Tabel 82 bevat informatie over het DLL-element .
Tabel 82. DLL-elementinformatie
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer binnen het DLL-element |
Bovenliggend element | DLL's |
Inhoud | Geen inhoud toegestaan voor dit element |
Elementkenmerken
Tabel 83 bevat de kenmerken van het DLL-element en een beschrijving van elk element.
Tabel 83. Kenmerken en bijbehorende waarden voor het DLL-element
Kenmerk | Beschrijving |
---|---|
Naam | Hiermee geeft u de naam van de DLL voor de UDI-wizard en de UDI-wizard Designer waarnaar moet worden verwezen |
Opmerkingen
Geen.
Voorbeeld
<DLLs>
<DLL Name="OSDRefreshWizard.dll" />
<DLL Name="SharedPages.dll" />
</DLLs>
DLL's
Met dit element worden de afzonderlijke DLL-elementen gegroepeerd.
Elementinformatie
Tabel 84 bevat informatie over het dll-element .
Tabel 84. Informatie over DLL-elementen
Kenmerk | Value |
---|---|
Aantal exemplaren | Een |
Bovenliggende elementen | Tovenaar |
Inhoud | DLL |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
<DLLs>
<DLL Name="OSDRefreshWizard.dll" />
<DLL Name="SharedPages.dll" />
</DLLs>
Error
Dit element geeft een mogelijke foutcode op die een taak kan retourneren. De waarde van de foutcode wordt geretourneerd en gevangen door de HRESULT van de taak om specifiekere foutinformatie op te geven.
Elementinformatie
Tabel 85 bevat informatie over het element Fout .
Tabel 85. Informatie over foutelement
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of meer binnen elk ExitCode-element (dit element is optioneel.) |
Bovenliggende elementen | ExitCodes |
Inhoud | Alle goed gevormde XML-inhoud |
Elementkenmerken
Tabel 86 bevat de kenmerken van het element Error en een beschrijving van elk element.
Tabel 86. Informatie over foutelement
Kenmerk | Beschrijving |
---|---|
Status | Hiermee geeft u de retourstatus op van een taak die een fout heeft opgetreden. De waarde voor dit kenmerk is doorgaans ingesteld op Fout. Deze waarde wordt weergegeven in de kolom Status op de wizardpagina in de UDI-wizard. |
Tekst | Hiermee geeft u de beschrijvende tekst op over de foutvoorwaarde die bij de taak is opgetreden. |
Type | Hiermee geeft u op of dit element een fout, waarschuwing of succes vertegenwoordigt. De waarde die is opgegeven inType moet uniek zijn binnen een ExitCodes-element . Hier volgen geldige waarden voor dit element: - **0.**Het element vertegenwoordigt een succes. - 1. Het element vertegenwoordigt een waarschuwing. - -1. Het element vertegenwoordigt een fout. |
Value | Hiermee geeft u de waarde op van de code die de taak als een numerieke waarde heeft geretourneerd. Als u de waarde van een sterretje (*) opgeeft, wordt het standaardelement aangegeven voor retourcodes die niet worden vermeld in andere foutelementen . |
Opmerkingen
Geen.
Voorbeeld
Geen.
ExitCode
Dit element geeft een mogelijke afsluitcode voor een taak op. De afsluitcodes zijn retourcodes die de taak verwacht. Maak een ExitCode-element voor elke mogelijke afsluitcode. Anders kunt u een sterretje (*) opgeven in het kenmerk Waarde om retourcodes te verwerken die niet worden vermeld in andere ExitCode-elementen .
Elementinformatie
Tabel 87 bevat informatie over het element ExitCode .
Tabel 87. Informatie over het element ExitCode
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of meer binnen elk ExitCodes-element (dit element is optioneel.) |
Bovenliggende elementen | ExitCodes |
Inhoud | Ten minste één ExitCode-element en nul of meer foutelementen |
Elementkenmerken
Tabel 88 bevat de kenmerken van het element ExitCode en een beschrijving van elk element.
Tabel 88. Kenmerken en bijbehorende waarden voor het element ExitCode
Kenmerk | Beschrijving |
---|---|
Status | Hiermee geeft u de retourstatus van een taak op. De waarde van dit kenmerk wordt weergegeven in de kolom Status op de bijbehorende wizardpagina in de UDI-wizard. U kunt alle waarden voor dit kenmerk gebruiken die zinvol zijn voor uw taak. Hier volgen typische waarden die voor dit kenmerk worden gebruikt: -Succes -Waarschuwing -Fout |
Tekst | Hiermee geeft u de beschrijvende tekst over de exist-code van de taak. |
Type | Hiermee geeft u op of dit element een fout, waarschuwing of succes vertegenwoordigt. De waarde die in het type is opgegeven, moet uniek zijn binnen een ExitCodes-element . Hier volgen geldige waarden voor dit element: - 0. Het element vertegenwoordigt een succes. - 1. Het element vertegenwoordigt een waarschuwing. - -1. Het element vertegenwoordigt een fout. |
Value | Hiermee geeft u de waarde op van de code die de taak als een numerieke waarde heeft geretourneerd. Als u de waarde van een sterretje (*) opgeeft, wordt het standaardelement aangegeven voor retourcodes die niet worden vermeld in andere ExitCode-elementen . |
Opmerkingen
Geen.
Voorbeeld
Geen.
ExitCodes
Met dit element wordt een set exitcode- en foutelementen voor een taak - of foutelement gegroepeerd.
Elementinformatie
Tabel 89 bevat informatie over het element ExitCodes .
Tabel 89. Informatie over het element ExitCodes
Kenmerk | Value |
---|---|
Aantal exemplaren | Eén binnen elk taakelement |
Bovenliggende elementen | Taak |
Inhoud | Fout, Afsluitcode |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
Geen.
Veld
Dit element geeft een exemplaar op van een besturingselement in een pagina-element dat wordt gebruikt voor aanpassing met XML. Niet alle besturingselementen staan aanpassing met XML toe, alleen besturingselementen die gebruikmaken van het element Veld .
Elementinformatie
Tabel 90 bevat informatie over het element Veld .
Tabel 90. Informatie over veldelementen
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of meer binnen elk veldelement (dit element is optioneel.) |
Bovenliggende elementen | Velden |
Inhoud | Standaard, validator |
Elementkenmerken
Tabel 91 bevat de kenmerken van het element Veld en een beschrijving van elk element.
Tabel 91. Kenmerken en bijbehorende waarden voor het element Veld
Kenmerk | Beschrijving |
---|---|
Ingeschakeld | Hiermee geeft u op of het veld is ingeschakeld voor gebruikersinvoer (het kenmerk kan worden ingesteld op Waar of Onwaar.) |
Naam | Hiermee geeft u de naam van het veld op |
Samenvatting | Hiermee geeft u de beschrijvende tekst op die wordt weergegeven op de pagina van de wizard Samenvatting voor de waarde die door dit veld wordt ingesteld |
VarName | Hiermee geeft u de naam van de takenreeksvariabele die wordt gelezen of geconfigureerd met behulp van het veld in het bovenliggende veldelement |
Opmerkingen
Dit element kan nul of meer standaardelementen en nul of meer Validator-elementen bevatten.
Voorbeeld
Geen.
Velden
Met dit element worden de afzonderlijke veldelementen binnen een pagina-element gegroepeerd.
Elementinformatie
Tabel 92 bevat informatie over het element Velden .
Tabel 92. Gegevens van veldenelement
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of meer binnen elk pagina-element (dit element is optioneel.) |
Bovenliggende elementen | Pagina |
Inhoud | Veld, RadioGroup |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
Geen.
Bestand
Dit element geeft de bron en bestemming op voor een bestandskopieerbewerking met behulp van het taaktype Microsoft.Wizard.CopyFilesTask . U kunt een afzonderlijk bestandselement opnemen om meer dan één bestand in één taak te kopiëren.
Elementinformatie
Tabel 93 bevat informatie over het element Bestand .
Tabel 93. Informatie over bestandselementen
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer voor elke taak met een taaktype Microsoft.Wizard.CopyFilesTask |
Bovenliggende elementen | Taak |
Inhoud | Geen |
Elementkenmerken
Tabel 94 bevat de kenmerken van het element Bestand en een beschrijving van elk element.
Tabel 94. Kenmerken en bijbehorende waarden voor het bestandselement
Kenmerk | Beschrijving |
---|---|
Dest | Hiermee geeft u het volledig gekwalificeerde of relatieve pad naar de doelmap voor het bestand dat is opgegeven in het kenmerk Bron . Omgevingsvariabelen zijn toegestaan als onderdeel van het pad. |
Source | Hiermee geeft u het volledig gekwalificeerde of relatieve pad naar het bronbestand dat het taaktype Microsoft.Wizard.CopyFilesTask kopieert . Dit kenmerk ondersteunt jokertekens, zodat meerdere bestanden kunnen worden gekopieerd met één bestandselement . Omgevingsvariabelen zijn toegestaan als onderdeel van het pad. |
Opmerkingen
Geen.
Voorbeeld
Geen.
Pagina
Dit element geeft een exemplaar van een pagina op en bevat alle configuratie-instellingen voor de pagina.
Elementinformatie
Tabel 95 bevat informatie over het element Pagina .
Tabel 95. Informatie over pagina-element
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer binnen elk pagina-element |
Bovenliggende elementen | Bladzijden |
Inhoud | Gegevens, velden, setter, taken |
Elementkenmerken
Tabel 96 bevat de kenmerken van het element Pagina en een beschrijving van elk element.
Tabel 96. Kenmerken en bijbehorende waarden voor het pagina-element
Kenmerk | Beschrijving |
---|---|
DisplayName | Hiermee geeft u de gebruiksvriendelijke naam van de wizardpagina die wordt weergegeven in de UDI-wizard Designer. Deze naam is meestal beschrijvender dan het kenmerk Naam . |
Naam | Hiermee geeft u de naam van de wizardpagina die wordt weergegeven in de UDI-wizard Designer. |
Type | Hiermee geeft u het type wizardpagina op dat rechtstreeks betrekking heeft op een specifieke wizardpagina in een DLL. |
Opmerkingen
Geen.
Voorbeeld
Geen.
PageRef
Dit element geeft een verwijzing naar een exemplaar van een pagina in een fase binnen een StageGroup.
Elementinformatie
Tabel 97 bevat informatie over het element PageRef .
Tabel 97. Informatie van het element PageRef
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer binnen een fase-element |
Bovenliggende elementen | Fase |
Inhoud | Geen |
Elementkenmerken
Tabel 98 bevat het kenmerk van het element PageRef en een beschrijving ervan.
Tabel 98. Kenmerken en bijbehorende waarden voor het element PageRef
Kenmerk | Beschrijving |
---|---|
Pagina | Hiermee geeft u het exemplaar van een pagina binnen een fase in een StageGroup. Stel deze waarde in op het kenmerk Naam van een pagina-element . |
Opmerkingen
Geen.
Voorbeeld
Geen.
Bladzijden
Met dit element worden de afzonderlijke pagina-elementen gegroepeerd.
Elementinformatie
Tabel 99 bevat informatie over het element Pagina's .
Tabel 99. Informatie over het element Pagina's
Kenmerk | Value |
---|---|
Aantal exemplaren | Een |
Bovenliggende elementen | Tovenaar |
Inhoud | Pagina |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
<Pages>
+ <Page Name="WelcomePage" DisplayName="Welcome" Type="Microsoft.SharedPages.WelcomePage">
+ <Page Name="ConfigScanPage" DisplayName="Deployment Readiness" Type="Microsoft.OSDRefresh.ConfigScanPage">
+ <Page Name="ConfigScanBareMetal" DisplayName="Deployment Readiness" Type="Microsoft.OSDRefresh.ConfigScanPage">
+ <Page Name="RebootPage" DisplayName="Reboot" Type="Microsoft.OSDRefresh.RebootPage">
+ <Page Name="WelcomePageReplace" DisplayName="Welcome" Type="Microsoft.SharedPages.WelcomePage">
+ <Page Name="VolumePage" DisplayName="Volume" Type="Microsoft.OSDRefresh.VolumePage">
+ <Page Name="UserRestorePage" DisplayName="Select Target" Type="Microsoft.OSDRefresh.UserStatePage">
+ <Page Name="ComputerPage" DisplayName="New Computer Details" Type="Microsoft.OSDRefresh.ComputerPage">
+ <Page Name="AdminAccounts" DisplayName="Administrator Password" Type="Microsoft.SharedPages.AdminAccountsPage">
+ <Page Name="UDAPage" DisplayName="User Device Affinity" Type="Microsoft.OSDRefresh.UDAPage">
+ <Page Name="LanguagePage" DisplayName="Language" Type="Microsoft.OSDRefresh.LanguagePage">
+ <Page Name="ApplicationPage" DisplayName="Install Programs" Type="Microsoft.OSDRefresh.ApplicationPage">
<Page Name="SummaryPage" DisplayName="Summary" Type="Microsoft.Shared.SummaryPage" />
+ <Page Name="UserCapturePageOldPC" DisplayName="Select Target" Type="Microsoft.OSDRefresh.UserStatePage">
+ <Page Name="ProgressPage" DisplayName="Capture Data" Type="Microsoft.OSDRefresh.ProgressPage">
+ <Page Name="RebootAfterCapture" DisplayName="Reboot" Type="Microsoft.OSDRefresh.RebootPage">
</Pages>
RadioGroup
Dit element geeft een groep keuzerondjes op met in een veldelement .
Elementinformatie
Tabel 100 bevat informatie over het element RadioGroup .
Tabel 100. Informatie over het RadioGroup-element
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of meer binnen een element Velden (dit element is optioneel.) |
Bovenliggende elementen | Velden |
Inhoud | Standaard |
Elementkenmerken
Tabel 101 bevat de kenmerken van het element RadioGroup en een beschrijving van elk element.
Tabel 101. Kenmerken en bijbehorende waarden voor het element RadioGroup
Kenmerk | Beschrijving |
---|---|
Vergrendeld | Hiermee geeft u op of de groep keuzerondjes is ingeschakeld voor gebruikersinvoer. Het kenmerk kan worden ingesteld op: - Waar. Hiermee geeft u op dat de keuzerondjes zijn uitgeschakeld en dat gebruikers geen keuzerondje in de groep kunnen selecteren. - Onwaar. Hiermee geeft u op dat de keuzerondjes zijn ingeschakeld en dat gebruikers een keuzerondje in de groep kunnen selecteren. |
Naam | Hiermee geeft u de naam van de keuzerondjeoptiegroep op. |
Opmerkingen
Geen.
Voorbeeld
Geen.
StageGroup
Met dit element wordt een implementatiefasegroep opgegeven.
Elementinformatie
Tabel 102 bevat informatie over het element StageGroup .
Tabel 102. Informatie over StageGroup-element
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer binnen een StageGroups-element |
Bovenliggende elementen | StageGroups |
Inhoud | Fase |
Elementkenmerken
Tabel 103 bevat de kenmerken van het element StageGroup en een beschrijving van het kenmerk.
Tabel 103. Kenmerken en bijbehorende waarden voor het element StageGroup
Kenmerk | Beschrijving |
---|---|
DisplayName | Hiermee geeft u de gebruiksvriendelijke naam van de fasegroep die wordt weergegeven in de UDI-wizard Designer. Deze naam is meestal beschrijvender dan het kenmerk Naam . |
Opmerkingen
Geen.
Voorbeeld
Geen.
StageGroups
Met dit element wordt een set fasegroepen in een configuratiebestand van de UDI-wizard gegroepeerd.
Elementinformatie
Tabel 104 bevat informatie over het element StageGroups .
Tabel 104. Informatie over stagegroups-elementen
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of één binnen een wizard-element |
Bovenliggende elementen | Tovenaar |
Inhoud | StageGroup |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
Geen.
Setter
Dit element geeft een eigenschapsinstelling op voor de waarde voor een eigenschap met de naam in de eigenschap Eigenschap .
Elementinformatie
Tabel 105 bevat informatie over het setter-element .
Tabel 105. Informatie over setter-elementen
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of meer binnen elk bovenliggend element (dit element is optioneel.) |
Bovenliggende elementen | Data, DataItem, Page, Style, Task, Validator |
Inhoud | Bevat een tekenreekswaarde in het kenmerk Eigenschap |
Elementkenmerken
Tabel 106 bevat het kenmerk van het element Setter en een beschrijving ervan.
Tabel 106. Kenmerken en bijbehorende waarden voor het setter-element
Kenmerk | Beschrijving |
---|---|
Eigenschap | Hiermee geeft u de eigenschapsnaam die wordt ingesteld. De naam van de eigenschap is ingesteld op de waarde tussen haakjes voor dit kenmerk. |
Opmerkingen
Geen.
Voorbeeld
Geen.
Fase
Dit element geeft een fase binnen een StageGroup en bevat een of meer PageRef-elementen .
Elementinformatie
Tabel 107 bevat informatie over het element Fase .
Tabel 107. Informatie over fase-element
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer binnen een StageGroup-element |
Bovenliggende elementen | StageGroup |
Inhoud | PageRef |
Elementkenmerken
Tabel 108 bevat de kenmerken van het element Fase en een beschrijving van elk element.
Tabel 108. Kenmerken en bijbehorende waarden voor het fase-element
Kenmerk | Beschrijving |
---|---|
DisplayName | Hiermee geeft u de gebruiksvriendelijke naam van de wizardpagina die wordt weergegeven in de UDI-wizard Designer. Deze naam is meestal beschrijvender dan het kenmerk Naam . |
Naam | Hiermee geeft u de naam van de fase op. De waarde van dit element wordt gebruikt bij het starten van de wizard UDI met de opdrachtregelparameter /stage: name . |
Opmerkingen
Geen.
Voorbeeld
Geen.
Stijl
Met dit element worden de afzonderlijke setter-elementen gegroepeerd waarmee het uiterlijk van de UDI-wizard wordt geconfigureerd, inclusief de titel die boven aan de wizard wordt weergegeven en de bannerafbeelding die wordt weergegeven in de UDI-wizard.
Elementinformatie
Tabel 109 bevat informatie over het element Stijl.
Tabel 109. Informatie over stijlelementen
Kenmerk | Value |
---|---|
Aantal exemplaren | Een |
Bovenliggende elementen | Tovenaar |
Inhoud | Setter |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
<Style>
<Setter Property="bannerFilename">UDI_Wizard_Banner.bmp</Setter>
<Setter Property="title">Operating System Deployment (OSD) Refresh Wizard</Setter>
</Style>
Taak
Dit element geeft een taak op die moet worden uitgevoerd op de pagina die is opgegeven in het bovenliggende pagina-element .
Elementinformatie
Tabel 110 bevat informatie over het element Taak .
Tabel 110. Informatie over taakelementen
Kenmerk | Value |
---|---|
Aantal exemplaren | Een of meer binnen een element Taken |
Bovenliggende elementen | Taken |
Inhoud | ExitCodes, Bestand, Setter |
Elementkenmerken
Tabel 111 bevat de kenmerken van het element Taak en een beschrijving van elk element.
Tabel 111. Kenmerken en bijbehorende waarden voor het taakelement
Kenmerk | Beschrijving |
---|---|
DependsOn | Hiermee geeft u op of de taak afhankelijk is van een andere taak. De waarde van dit kenmerk is ingesteld op het kenmerk Naam van een ander taakelement . Notitie: Dit kenmerk kan niet worden geconfigureerd met behulp van de wizard UDI Designer. U kunt dit kenmerk echter handmatig toevoegen aan een taakelement door het .xml-bestand rechtstreeks te wijzigen. |
DisplayName | Hiermee geeft u de gebruiksvriendelijke naam van de taak die wordt weergegeven in de UDI-wizard Designer. Deze naam is meestal beschrijvender dan het kenmerk Naam . |
Naam | Hiermee geeft u de naam van de taak. Deze naam moet uniek zijn. |
Type | Hiermee geeft u het taaktype op voor de taak die moet worden uitgevoerd, dat is gedefinieerd in het DLL-bestand dat de taak bevat. |
Opmerkingen
Geen.
Voorbeeld
Geen.
Taken
Met dit element wordt een set taken voor een pagina-element gegroepeerd.
Elementinformatie
Tabel 112 bevat informatie over het element Taken .
Tabel 112. Informatie over takenelement
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of één binnen elk pagina-element (dit element is optioneel.) |
Bovenliggende elementen | Pagina |
Inhoud | Taak |
Elementkenmerken
Tabel 113 bevat de kenmerken van het element Taken en een beschrijving van elk element.
Tabel 113. Kenmerken en bijbehorende waarden voor het element Taken
Kenmerk | Beschrijving |
---|---|
NameTitle | Hiermee geeft u de onderschrift die boven aan de kolom met de naam van de taken op de juiste wizardpagina wordt weergegeven. |
StatusTitle | Hiermee geeft u de onderschrift die boven aan de kolom met de status van de taken op de juiste wizardpagina wordt weergegeven. |
Opmerkingen
Geen.
Voorbeeld
Geen.
Validator
Dit element geeft een validator op voor het veld besturingselement dat is opgegeven in het bovenliggende veldelement .
Elementinformatie
Tabel 114 bevat informatie over het element Validator .
Tabel 114. Informatie over het validator-element
Kenmerk | Value |
---|---|
Aantal exemplaren | Nul of één binnen een veldelement |
Bovenliggende elementen | Veld |
Inhoud | Setter |
Elementkenmerken
Tabel 115 bevat het kenmerk van het element Validator en een beschrijving ervan.
Tabel 115. Kenmerken en bijbehorende waarden voor het validatie-element
Kenmerk | Beschrijving |
---|---|
Type | Hiermee geeft u het type voor de validator, dat is gedefinieerd in het DLL-bestand dat de validator bevat |
Opmerkingen
Geen.
Voorbeeld
Geen.
Tovenaar
Met dit element wordt de hoofdmap voor alle andere elementen opgegeven.
Elementinformatie
Tabel 116 bevat informatie over het element Wizard .
Tabel 116. Informatie over wizardelementen
Kenmerk | Value |
---|---|
Aantal exemplaren | Een |
Bovenliggende elementen | Geen |
Inhoud | DLL's, pagina's, fasegroepen, stijl |
Elementkenmerken
Dit element heeft geen kenmerken.
Opmerkingen
Geen.
Voorbeeld
<Wizard>
+ <DLLs>
+ <Style>
+ <Pages>
+ <StageGroups>
</Wizard>