Uživatelsky řízená instalace – příručka pro vývojáře

Uživatelsky řízená instalace (UDI) pomáhá zjednodušit nasazení klientských operačních systémů Windows®, například Windows 8.1, do počítačů používajících funkci nasazení operačního systému (OSD) v Configuration Manager Microsoft® System Center 2012 R2. UDI je součástí sady Microsoft Deployment Toolkit (MDT).

Úvod

Při nasazování operačních systémů pomocí funkce OSD je obvykle nutné zadat všechny potřebné informace pro nasazení operačního systému. Informace se konfigurují v konfiguračních souborech nebo databázích (například v souboru CustomSettings.ini nebo v databázi MDT [MDT DB]). Před zahájením nasazení musíte zadat všechna nastavení konfigurace.

UDI poskytuje rozhraní řízené průvodcem, které umožňuje poskytnout informace o konfiguraci bezprostředně před provedením nasazení. Toto chování umožňuje vytvářet obecná pořadí úkolů OSD a pak poskytovat informace specifické pro počítač v době nasazení, což poskytuje větší flexibilitu v procesu nasazení.

Cílovou skupinu

Tato příručka je určená pro vývojáře, kteří vytvářejí vlastní stránky průvodce pro UDI Wizard a vlastní editory stránek průvodce pro průvodce UDI Designer. Tato příručka předpokládá, že jste obeznámeni s vývojem aplikací pro Windows pomocí:

  • C++, který se používá k vytváření vlastních stránek průvodce

  • Microsoft .NET Framework, který slouží k vytváření vlastních editorů stránek průvodce

  • Windows Presentation Foundation (WPF), který slouží k vytváření vlastních editorů stránek průvodce

  • Jazyky, které WPF podporuje, například C#, C++ nebo Microsoft Visual Basic® .NET, které se používají k vytváření vlastních editorů stránek průvodce

O této příručce

Tato příručka obsahuje potřebné referenční informace, které vám pomůžou přizpůsobit UTI pro vaši organizaci. Tato příručka neprobírá témata týkající se správy nebo provozu, jako je instalace MDT (která zahrnuje UDI), konfigurace UDI pro nasazení operačních systémů a aplikací nebo provádění nasazení pomocí Průvodce UDI. Další informace o těchto tématech najdete v tématech UDI v tématu Použití sady Microsoft Deployment Toolkit, která je součástí MDT.

Přehled vývoje UDI

Vývoj UDI umožňuje rozšířit funkce, které UDI poskytuje. Vývoj UDI se obvykle vyžaduje, když chcete shromáždit další informace, které proces nasazení UDI využívá. Tyto další informace se obvykle ukládají jako proměnné pořadí úkolů, které kroky pořadí úkolů v pořadí úkolů UDI Configuration Manager číst.

Architektura UDI

Hlavním cílem vývoje UDI je vytvořit vlastní stránky průvodce, které lze zobrazit v průvodci UDI. Vytvořením vlastních stránek průvodce můžete rozšířit stávající funkce UDI tak, aby splňovaly obchodní a technické požadavky vaší organizace. Vlastní stránka průvodce shromažďuje informace vedle stránek průvodce, které poskytuje UDI, nebo místo těchto stránek.

Obrázek 1 znázorňuje vztah mezi UDI Wizard Designer a UDI Wizard.

Obrázek 1 Vztah mezi průvodcem UDI a Průvodcem UDI Designer Obrázek 1. Vztah mezi průvodcem UDI a Průvodcem UDI Designer

Obrázek 1 Vztah mezi průvodcem UDI a Průvodcem UDI Designer

Na koncepční úrovni zahrnuje vývoj UDI vytvoření:

  • Vlastní stránky průvodce. Stránky průvodce se zobrazují v průvodci UDI a shromažďují informace potřebné k dokončení procesu nasazení. Stránky průvodce vytvoříte pomocí jazyka C++ v sadě Microsoft Visual Studio®. Vlastní stránky průvodce jsou implementovány jako knihovny DLL, které čte Průvodce UDI. Sada UDI Software Development Kit (SDK) obsahuje příklad vytvoření vlastních stránek průvodce.

  • Vlastní editory stránek průvodce Pomocí editorů stránek průvodce můžete nakonfigurovat chování vlastní stránky průvodce. Vlastní editory stránek průvodce jsou implementovány jako knihovny DLL, které průvodce UDI Designer čte. Editory stránek průvodce vytvoříte pomocí:

    • WPF verze 4.0

    • Microsoft Prism verze 4.0

    • Microsoft Unity Application Block (Unity) verze 2.1

      MDT obsahuje všechna sestavení potřebná k vytvoření vlastního editoru stránek průvodce pro použití v průvodci UDI Designer. Sada UDI SDK obsahuje příklad vytváření vlastních editorů stránek průvodce.

    Kromě toho průvodce UDI Wizard Designer využívá podpůrné konfigurační soubory editoru stránek průvodce. Konfigurační soubory editoru stránek průvodce vytvoříte jako součást procesu vytváření vlastních stránek průvodce a editorů stránek vlastního průvodce. Průvodce UDI Designer vytvoří potřebné informace XML v konfiguračním souboru průvodce UDI a odpovídající .app souboru.

Příprava vývojového prostředí UDI

Než začnete vytvářet vlastní stránky průvodce a editory stránek průvodce, proveďte následující kroky a připravte vývojové prostředí UDI:

  1. Připravte požadavky na vývojové prostředí UDI, jak je popsáno v tématu Příprava požadavků vývojového prostředí UDI.

  2. Nakonfigurujte vývojové prostředí UDI, jak je popsáno v tématu Konfigurace vývojového prostředí UDI.

  3. Ověřte, že je vývojové prostředí UDI správně nakonfigurované, jak je popsáno v části Ověření vývojového prostředí UDI.

Příprava požadavků na vývojové prostředí UDI

Pokud chcete připravit požadavky na vývojové prostředí UDI, proveďte následující kroky:

  1. Připravte hardwarové požadavky vývojového prostředí UDI, jak je popsáno v tématu Příprava hardwarových požadavků vývojového prostředí UDI.

  2. Připravte si softwarové funkce vývojového prostředí UDI, jak je popsáno v tématu Příprava požadavků na software pro vývojové prostředí UDI.

Příprava hardwarových požadavků vývojového prostředí UDI

Požadavky na hardware vývojového prostředí UDI jsou stejné požadavky na hardware pro edici sady Microsoft Visual Studio, kterou používáte. Další informace o těchto požadavcích najdete v tématu Požadavky na systém pro jednotlivé edice v dokumentaci k sadě Visual Studio.

Příprava softwarových požadavků na vývojové prostředí UDI

Vývojové prostředí UDI má následující požadavky na software:

  • Všechny operační systémy Windows podporované sadou Visual Studio 2010 (doporučuje se Windows 7 nebo Windows Server® 2008 R2).

    Budete potřebovat operační systém Windows, který podporuje architekturu procesoru, pro kterou chcete vyvíjet. Vývoj 32bitového a 64bitového UDI můžete provádět pomocí 64bitového operačního systému. V 32bitových operačních systémech vyvíjíte pouze 32bitové UDI. Z tohoto důvodu byste měli použít 64bitový operační systém.

    Poznámka

    Verze IntelItanium (IA-64) operačního systému Windows nejsou podporovány pro vývojová prostředí UDI.

    Další informace o operačních systémech, které Visual Studio 2010 podporuje, najdete v dokumentaci k sadě Visual Studio v požadavcích na systém pro jednotlivé edice.

  • Microsoft .NET Framework verze 4.0 (vyžadováno sadou Visual Studio 2010)

  • Jazyk C++ (jazyk používaný při rozšiřování stránek Průvodce UDI)

  • Další jazyky, které WPF podporuje, například C#, Visual Basic .NET nebo C++/Common Language Infrastructure, které se používají k rozšíření průvodce UDI Designer editory stránek průvodce.

    Poznámka

    Ukázkový zdrojový kód editorů stránek průvodce UDI Wizard Designer je napsaný v jazyce C#. Pokud chcete použít ukázkový zdrojový kód, nainstalujte jazyk C#.

Konfigurace vývojového prostředí UDI

Po splnění požadavků na vývojové prostředí UDI proveďte následující kroky a nakonfigurujte vývojové prostředí UDI:

  1. Nainstalujte sadu Visual Studio 2010.

    Ujistěte se, že jste nainstalovali jazyk C++ a jakýkoli jiný jazyk, který WPF podporuje.

    Poznámka

    Ukázkový zdrojový kód průvodce UDI Designer stránkách editoru je napsaný v jazyce C#. Pokud chcete použít ukázkový zdrojový kód, nainstalujte jazyk C#.

    Další informace o instalaci sady Visual Studio 2010 najdete v tématu Instalace sady Visual Studio.

  2. Nainstalujte MDT.

    Další informace o tom, jak nainstalovat MDT, najdete v části Instalace nebo upgrade na MDT v dokumentu MDT Using the Microsoft Deployment Toolkit.

  3. V Průzkumníku Windows vytvořte local_folder (kde local_folder je libovolná složka umístěná na místní jednotce na vývojovém počítači).

  4. Zkopírujte složku installation_folder\SDK do local_folder (kde installation_folder je složka, do které jste nainstalovali MDT, a local_folder je libovolná složka umístěná na místní jednotce ve vývojovém počítači).

    Složku sady SDK zkopírujete do jiného umístění, protože mdt je nainstalován ve složce Program Files, do které nelze zapisovat bez zvýšených oprávnění. Kopírování složky sady SDK do jiného umístění umožňuje upravovat soubory ve složce SADY SDK bez nutnosti zvýšených oprávnění.

  5. Zkopírujte složku installation_folder\Templates\Distribution\Tools do local_folder (kde installation_folder je složka, do které jste nainstalovali MDT, a local_folder je složka, kterou jste vytvořili dříve v průběhu procesu).

  6. Přejmenujte složku local_folder\Tools na local_folder\OSDSetupWizard(kde local_folder je složka, kterou jste vytvořili dříve).

    Po dokončení by struktura složek pod local_folder měla vypadat podobně jako struktura složek znázorněná na obrázku 2 ( kde local_folder je složka, kterou jste vytvořili dříve v procesu a na obrázku se zobrazuje jako UDIDevelopment ).

    Obrázek 2 Struktura složek pro vývoj UDI Obrázek 2 Struktura složek pro vývoj UDI

    Obrázek 2 Struktura složek pro vývoj UDI

Ověření vývojového prostředí UDI

Při konfiguraci vývojového prostředí UDI ověřte, že je vývojové prostředí UDI správně nakonfigurované. Ujistěte se, že se ukázkové projekty v sadě Visual Studio 2010 správně sestavují.

Ověřte, že je vývojové prostředí UDI správně nakonfigurované, a to určením, jestli:

Ověřte, že se projekt SamplePage správně sestavuje.

Projekt SamplePage poskytuje příklad vytvoření vlastní stránky průvodce pro průvodce UDI. Další informace o projektu SamplePage najdete v tématu Kontrola řešení SamplePage v sadě Visual Studio.

Ověření správného sestavení projektu SamplePage

  1. Spusťte Visual Studio 2010.

  2. Otevřete projekt SamplePage.

    Projekt SamplePage se nachází ve složce local_folder\SDK\UDI\SamplePage (kde local_folder je složka, kterou jste vytvořili dříve v průběhu procesu).

  3. V sadě Visual Studio 2010 klikněte v Průzkumník řešení pravým tlačítkem na projekt SamplePage a pak vyberte Vlastnosti.

    Zobrazí se dialogové okno Stránky vlastností SamplePage .

  4. V dialogovém okně Stránky vlastností SamplePage přejděte na Vlastnosti konfigurace nebo ladění.

  5. Ve vlastnostech ladění v části Konfigurace vyberte Všechny konfigurace.

  6. Ve vlastnostech ladění v části Příkaz zadejte $(TargetDir)\OSDSetupWizard.exe.

  7. Ve vlastnostech ladění v části Pracovní adresář zadejte $(TargetDir).

  8. V dialogovém okně Stránky vlastností SamplePage přejděte na Vlastnosti konfigurace / Události sestavení / Událost po sestavení.

  9. Ve vlastnostech události po sestavení v části Příkazový řádek zadejte následující:

    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"
    
  10. V dialogovém okně Stránky vlastností SamplePage vyberte OK.

  11. Uložte projekt.

  12. V nabídce Debug (Ladit) vyberte Start Debugging (Spustit ladění).

    Zobrazí se dialogové okno Microsoft Visual Studio, které označuje, že zdroj je zastaralý, a zobrazí dotaz, jestli chcete projekt sestavit.

  13. V dialogovém okně Microsoft Visual Studio vyberte Ano.

    Zobrazí se dialogové okno Žádné informace o ladění s informací, že pro OSDSetupWizard.exe nejsou k dispozici žádné informace o ladění.

  14. V dialogovém okně Žádné informace o ladění vyberte Ano.

    Otevře se Průvodce UDI se zobrazenou stránkou vlastního průvodce.

  15. Ověřte, že můžete vybrat hodnotu v části Zvolte umístění.

  16. Ve formuláři Průvodce s ukázkovou stránkou vyberte Zrušit.

    Zobrazí se dialogové okno Zrušit průvodce .

  17. V dialogovém okně Zrušit průvodce vyberte Ano.

  18. Zavřete Visual Studio 2010.

Ověřte, že se projekt SampleEditor správně sestavuje.

Projekt SampleEditor poskytuje příklad vytvoření vlastního editoru stránky průvodce pro průvodce UDI wizard Designer. Další informace o projektu SampleEditor najdete v tématu Kontrola řešení SamplePage v sadě Visual Studio.

Ověření správného sestavení projektu SampleEditor

  1. Spusťte Visual Studio 2010.

  2. Otevřete projekt SampleEditor.

    Projekt SampleEditor se nachází ve složce local_folder\SDK\UDI\SampleEditor (kde local_folder je složka, kterou jste vytvořili dříve).

  3. V sadě Visual Studio 2010 vyberte v Průzkumník řešení projekt SampleEditor.

  4. V nabídce Projekt vyberte Přidat odkaz.

    Otevře se dialogové okno Přidat odkaz .

  5. V dialogovém okně Přidat odkaz vyberte kartu Procházet .

  6. Na kartě Procházet přejděte na installation_folder\Bin (kde installation_folder je složka, ve které jste nainstalovali MDT). Vyberte následující soubory a pak vyberte 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

    Poznámka

    Na kartě Procházet můžete vybrat více souborů tak, že při výběru souborů podržíte stisknutou klávesu CTRL.

  7. V Průzkumník řešení přejděte na SampleEditor/References.

  8. Ověřte, že žádný z odkazů nemá žádná upozornění nebo chyby.

  9. V Průzkumník řešení klikněte pravým tlačítkem na projekt SampleEditor a pak vyberte Vlastnosti.

    Zobrazí se dialogové okno Stránky vlastností SampleEditor .

  10. V dialogovém okně Stránky vlastností SampleEditor vyberte kartu Ladění .

  11. Na kartě Ladění vyberte Spustit externí program.

  12. Do pole Spustit externí program zadejte installation_folder\Bin\UDIDesigner.exe (kde installation_folder je složka, do které jste nainstalovali MDT) a pak vyberte OK.

    Tip

    Výběrem tlačítka se třemi tečky (...) přejděte do složky a vyberte UDIDesigner.exe.

  13. V nabídce Soubor vyberte Uložit vše.

  14. Zkopírujte soubor local_folder\SDK\SamplePage\SamplePage.dll.config do složky installation_folder\Bin\Config (kde local_folder je složka, kterou jste vytvořili na vývojovém počítači dříve v procesu konfigurace, ainstallation_folder je složka, do které jste nainstalovali MDT).

  15. V sadě Visual Studio 2010 vyberte v nabídce Debug (Ladit) možnost Start Debugging (Spustit ladění).

    Spustí se Designer Průvodce UDI.

  16. V Designer Průvodce UDI vyberte na pásu karet možnost Otevřít.

    Zobrazí se dialogové okno Otevřít .

  17. V dialogovém okně Otevřít otevřete soubor local_folder\SDK\SamplePage\SamplePage\Config.xml (kde local_folder je složka, kterou jste vytvořili na vývojovém počítači dříve v procesu konfigurace).

    Otevře se soubor Config.xml a v podokně podrobností se zobrazí vlastní skupina StageGroup .

  18. V podokně podrobností vyberte kartu Konfigurovat .

  19. Zkontrolujte informace o konfiguraci pro pole Umístění , včetně následujících:

    • Odemknuté tlačítko, kterým povolíte nebo zakážete pole Poloha

    • Pole Výchozí hodnota, ve kterém zadáte výchozí hodnotu, která se má zobrazit v poli Umístění

    • Popisný zobrazovaný název zobrazený na stránce souhrnu, ve kterém zadáte popis informací zobrazených na stránce Souhrn.

    • Seznam umístění, který obsahuje seznam možných umístění

  20. Zavřete Designer Průvodce UDI.

  21. Zavřete Visual Studio 2010.

Projděte si příklady sady UDI SDK.

Před zahájením vývoje si projděte příklady uvedené v SADĚ UDI SDK. Informace v této příručce a zdrojový kód v příkladech vám pomůžou vytvořit vlastní stránky průvodce UDI a editory stránek průvodce.

Projděte si příklady sady UDI SDK a projděte si následující:

Zkontrolujte obsah složky SDK.

Během konfigurace vývojového prostředí UDI jste zkopírovali složku SDK ze složky, ve které jste nainstalovali MDT, do jiné složky, kterou jste vytvořili. Tabulka 1 obsahuje seznam složek přímo pod složkou SDK a poskytuje stručný popis každé z nich.

Tabulka 1 Složky v SADĚ UDI SDK

Složka Tato složka obsahuje
Zahrnuje Soubory hlaviček jazyka C++ potřebné pro vytváření vlastních stránek průvodce pro průvodce UDI
Libs Soubory knihovny C++, které budou propojeny s vlastní stránkou; existuje 32bitová a 64bitová verze knihoven statických odkazů. Poznámka: Verze knihoven Itanium (IA-64) nejsou k dispozici.
SampleEditor Projekt sady Visual Studio pro vytvoření vlastního editoru sloužícího k úpravě stránky SamplePage v průvodci UDI wizard Designer, který je napsaný v jazyce C#
SamplePage Projekt sady Visual Studio pro vytvoření vlastní stránky průvodce UDI, která je napsaná v jazyce Visual C++

Projděte si řešení SamplePage v sadě Visual Studio.

Než začnete vytvářet vlastní stránky průvodce a editory stránek průvodce, proveďte následující úlohy a připravte vývojové prostředí UDI:

Kontrola životního cyklu stránky průvodce

Stránka průvodce UDI obsahuje metody, které odpovídají každé fázi (nebo fázi) životního cyklu stránky. Při vytváření vlastní stránky průvodce musíte tyto metody přepsat svým kódem. Tabulka 2 uvádí metody, které budete muset přepsat, a poskytuje stručný popis každé metody, včetně toho, kdy použít metodu v životním cyklu stránky průvodce.

Tabulka 2. Metody v životním cyklu stránky průvodce

Metoda Popis
OnWindowCreated Tato metoda je volána jednou, po vytvoření okna stránky.

Pro tuto metodu napište kód, který inicializuje stránku poprvé a je třeba ho provést pouze jednou. Tuto metodu můžete například použít k inicializaci polí nebo ke čtení informací o konfiguraci z elementů Setter v konfiguračním souboru průvodce UDI.
OnWindowShown Tato metoda je volána při každém zobrazení (zobrazení) stránky v průvodci UDI. Nazývá se při prvním zobrazení stránky a pokaždé, když na ni přejdete tak, že v průvodci vyberete Další nebo Zpět .

Pro tuto metodu napište kód, který připraví stránku k zobrazení – například čtení paměťových proměnných, proměnných pořadí úkolů nebo proměnných prostředí a potom aktualizuje stránku na základě všech změn těchto proměnných.
OnCommonControlEvent Tuto metodu lze volat vždy, když se zobrazí stránka průvodce a obdrží zprávu WM_NOTIFY od podřízené položky (obvykle se jedná o běžné ovládací prvky).

Pro tuto metodu napište kód, který zpracovává WM_NOTIFY na základě zprávy oznámení. Můžete například chtít reagovat na události z běžného ovládacího prvku, jako je například reakce na události výběru nebo poklikání u ovládacího prvku TreeView .
OnUnhandledEvent Tato metoda je volána vždy, když se na stránce průvodce zobrazí neošetřená zpráva okna. Tato metoda poskytuje příležitost zachytit a zpracovat tyto jinak neošetřené zprávy okna.

Pro tuto metodu napište kód, který zpracovává zprávy okna, které jsou relevantní pro stránku průvodce. Tuto metodu obvykle nebudete muset přepsat.
OnNextSelected Tato metoda je volána, když v průvodci vyberete Další .

Pro tuto metodu napište kód, který před přechodem na další stránku průvodce provede všechny potřebné akce– například provede ověření, které může trvat dlouho. Pokud se ověření nezdaří, můžete další požadavek zrušit a zobrazit zprávu.
OnWindowHidden Tato metoda je volána pokaždé, když je stránka skryta, pokud je zobrazena předchozí nebo další stránka průvodce.

Pro tuto metodu napište kód, který provede všechny akce před skrytou stránkou před zobrazením jiné stránky. Tuto metodu obvykle nebudete muset přepsat.

Projděte si příklad ukázkové stránky.

Zkontrolujte příklad SamplePage pomocí následujícího seznamu, který představuje posloupnost událostí během životního cyklu stránky průvodce příkladu SamplePage:

  1. Průvodce UDI, OSDSetupWizard.exe, načte informace o konfiguraci z konfiguračního souboru průvodce UDI v příkladu (soubor Config.xml), jak je popsáno v kroku 1: Průvodce UDI (OSDSetupWizard.exe) načte soubor Config.xml.

  2. Průvodce UDI načte knihovny DLL požadované pro každou stránku průvodce uvedené v konfiguračním souboru průvodce UDI, jak je popsáno v kroku 2: Průvodce UDI načte knihovnu DLL pro stránku vlastního průvodce.

  3. Průvodce UDI zobrazí stránku vlastního průvodce a umožňuje požadovanou interakci ovládacích prvků, jak je popsáno v kroku 3: Průvodce UDI Zobrazí stránku vlastního průvodce.

  4. Jakmile stránka vlastního průvodce shromáždila informace, proveďte všechny potřebné úkoly před výběrem možnosti Další a pokračujte k dalšímu průvodci, jak je popsáno v kroku 4: Tlačítko Další je vybrané na stránce vlastního průvodce.

Krok 1: Průvodce UDI (OSDSetupWizard.exe) přečte soubor Config.xml

Při spuštění Průvodce UDI (OSDSetupWizard.exe) načte ve výchozím nastavení konfigurační soubor průvodce UDI, což je UDIWizard_Config.xml soubor – primární konfigurační soubor průvodce UDI Wizard.

Poznámka

V příkladu se jako konfigurační soubor používá soubor Config.xml. V MDT je výchozím konfiguračním souborem UDIWizard_Config.xml soubor, který se nachází ve složce Scripts v balíčku Soubory MDT pro konfiguraci.

Výchozí konfigurační soubor, který UDI Wizard používá, můžete přepsat úpravou kroku pořadí úkolů UDI Wizard tak, aby používal parametr /definition . Další informace o přepsání výchozího konfiguračního souboru, který používá Průvodce UDI, najdete v tématu Přepsání konfiguračního souboru, který používá Průvodce UDI.

Prvky nejvyšší úrovně v souboru Config.xml jsou

  • Element knihoven DLL

  • Styl – element

  • Element Pages

  • StageGroups – element

    Další informace o schématu konfiguračního souboru průvodce UDI a každém z těchto prvků najdete v tématu Referenční informace o schématu konfiguračního souboru průvodce UDI Wizard.

    Průvodce UDI prohledává element knihoven DLL a hledá .dll soubory, které se mají načíst. V příkladu jsou uvedené dva soubory .dll: SamplePage.dll a SharedPages.dll. Tyto .dll soubory se musí nacházet ve stejné složce jako OSDSetupWizard.exe – ve složce Tools\platform (kde platforma je x86 pro 32bitovou verzi nebo x64 pro 64bitovou verzi).

    Průvodce UDI prohledá prvek Pages a hledá stránky, které jsou definovány. V příkladu jsou definovány dvě stránky: Vlastní a SummaryPage. Atribut Type prvku Page je definován v souboru PageClassIDs.h a jednoznačně definuje typ vlastní stránky.

    V příkladu je definovaný typ Microsoft.SamplePage.LocationPage. Pro vlastní stránku nahraďte následující, abyste se vyhnuli potenciálním konfliktům s jinými stránkami, které můžete v budoucnu vytvořit:

  • Název vaší organizace místo Microsoftu.

  • Název vašeho projektu na místě SamplePage.

  • Název stránky vlastního průvodce na místě LocationPage.

Krok 2: Průvodce UDI načte knihovnu DLL pro stránku vlastního průvodce

Když UDI Wizard načte knihovnu DLL, volá funkci RegisterFactories , která musí být implementována v souboru .dll. V příkladu je tato funkce implementována v souboru dllmain.ccp. Každá stránka průvodce, kterou vytvoříte, musí implementovat funkci RegisterFactories .

Funkce RegisterFactories slouží k registraci třídy factory stránky průvodce do registru objektu pro vytváření tříd pro UDI Wizard. Objekty pro vytváření tříd jsou třídy, které mohou vytvořit instanci jiné třídy. Funkce RegisterFactories vytvoří novou instanci třídy factory a předá tuto třídu do registru objektu pro vytváření tříd pro UDI Wizard, který zpřístupňuje tuto třídu továrny průvodci. Průvodce UDI hledá třídu továrny zaregistrovanou s ID, které odpovídá atributu Type prvku Page pro stránku vlastního průvodce.

V příkladu je ID definováno jako ID_Location v souboru PageClassIds.h jako Microsoft.SamplePage.LocationPage, který odpovídá atributu Type prvku Page v souboru Config.xml. ID_Location se předává jako parametr ve funkci RegisterFactories implementované v souboru dllmain.ccp.

Funkci můžete vytvořit pomocí šablony funkce Register_name , která zjednoduší vytvoření nové instance továrny a zaregistruje nově vytvořenou instanci. Hodnota názvu zadaná pomocí šablony funkce Register musí implementovat rozhraní iClassFactory . Třída ClassFactoryImpl zpracovává většinu podrobností pro implementaci objektu pro vytváření tříd.

Můžete také použít funkci RegisterFactories k registraci typů úloh a typů validátoru. Další informace najdete v těchto článcích:

Poznámka

Příklad obsahuje a registruje pouze jednu vlastní stránku průvodce. Příklad neobsahuje vlastní úlohy ani validátory, a proto neregistruje žádné vlastní úlohy ani validátory.

Krok 3: Průvodce UDI zobrazí stránku Vlastní průvodce

Stránka vlastního průvodce v příkladu je definována v souboru LocationPage.cpp. Stránky průvodce jsou odvozeny z tříd šablon, které poskytují velkou část funkcí stránky. Všechny stránky průvodce by měly být odvozeny z WizardPageImpl Třída šablony, která implementuje rozhraní IWizardPage. Každá stránka průvodce může implementovat další volitelné třídy šablon a odpovídající rozhraní na základě potřeb stránky.

Třída šablony WizardPageImpl má několik užitečných rozhraní, která vám mohou pomoci psát vlastní stránky průvodce. Implementujte Třídu šablony WizardPageImpl jako základní třídu pro stránku vlastního průvodce.

Seznam dostupných položek:

  • Třídy šablon pro stránky průvodce, viz Pomocné třídy stránek průvodce

  • Rozhraní pro třídy šablon stránky průvodce, viz Rozhraní stránky průvodce

    Vlastní stránka průvodce v příkladu je odvozena z WizardPageImpl Třída šablony a implementuje IWizardPage Rozhraní. Kromě toho vlastní stránka průvodce implementuje IFieldCallback rozhraní. Obě tyto možnosti jsou implementovány v souboru LocationPage.cpp.

    Ukázková stránka vlastního průvodce přepíše následující metody:

  • OnWindowCreated. Metoda OnWindowCreated na stránce průvodce s příkladem volá následující metody:

    • AddField. Tato metoda spojuje ovládací prvek IDC_COMBO_LOCATION box v prostředku IDD_LOCATION_PAGE s elementem Datas názvem Umístění v souboru Config.xml.

      Kromě metody AddField můžete použít metody AddRadioGroup a AddToGroup k podpoře dalších ovládacích prvků a chování.

      Poznámka

      Ujistěte se, že před voláním metody InitFields voláte metodu AddField, AddRadioGroup nebo AddToGroup.

    • InitFields. Tato metoda slouží k inicializaci polí (ovládacích prvků), které jste přidali do formuláře. Ukazatel stránky je parametr. V příkladu je předán tento ukazatel, který odkazuje na aktuální stránku.

      Poznámka

      Chcete-li podporovat použití tohoto ukazatele, musíte implementovat IFieldCallback rozhraní kromě rozhraní, které WizardPageImpl šablona třída podporuje.

      IFieldCallback rozhraní volá SetFieldDefault metoda, která se používá k nastavení výchozích hodnot pro ovládací prvky jiné než textové pole a zaškrtávací políčko ovládací prvky. V příkladu SetFieldDefault metoda nastaví počáteční index ovládacího prvku pole se seznamem na základě výchozí hodnoty zadané v elementu Defaultelementu Field v souboru Config.xml.

      OnWindowCreated Metoda nastaví formulář kontroleru pomocí IFormController rozhraní. Další informace o nastavení kontroleru formulářů najdete v tématu Nastavení formuláře.

  • InitLocations. Tato metoda naplní pole se seznamem ze seznamu umístění v souboru Config.xml. Element Data a podřízené elementy DataItem Confg.xml souboru poskytují seznam možných hodnot.

  • OnNextSelected. Tato metoda provádí následující úlohy:

    • Aktualizace proměnnou pořadí úkolů TSLocation s hodnotou vybranou v poli se seznamem pomocí metody SaveFields

    • Přidá informace, které se zobrazí na stránce Souhrn pomocí metody SaveFields .

Krok 4: Na stránce Vlastní průvodce je vybráno tlačítko Další

Když uživatel dokončí pole na stránce vlastního průvodce, vybere Další, což volá Metodu OnNextSelected . OnNextSelected Metoda provádí všechny nezbytné úlohy před pokračováním na další stránku průvodce, například zaznamenává všechny změny konfigurace provedené na stránce vlastního průvodce.

Pro příklad vlastní stránky průvodce přepsání OnNextSelected metoda je implementována v souboru LocationPage.ccp. V metodě OnNextSelected na stránce příkladu vlastního průvodce se volají následující metody:

  1. Initsection. Tato metoda inicializuje záhlaví (popisek popis) pro souhrnná data zobrazená na stránce Souhrn. Tuto hodnotu můžete obvykle nastavit pomocí funkce DisplayName(). Data přidružená k tomuto popis se ukládají pomocí metody SaveFields.

  2. SaveFields. Tato metoda ukládá hodnoty polí do proměnných pořadí úkolů a do dat zobrazených na stránce Souhrn .

Projděte si řešení SampleEditor pro Visual Studio.

Než začnete vytvářet vlastní stránky průvodce a editory stránek průvodce, proveďte následující kroky a připravte vývojové prostředí UDI:

Projděte si Designer architekturu průvodce UDI Wizard.

UDI Wizard Designer byl vyvinut pomocí WPF, Prism a Unity. UDI Designer slouží k úpravě konfiguračního souboru průvodce UDI (UDIWizard_Config.xml), který průvodce UDI (OSDSetupWizard.exe) čte za běhu. Element Pages v konfiguračním souboru průvodce UDI obsahuje seznam stránek, které mají samostatný prvek Page pro každou stránku průvodce.

Když upravíte nastavení konfigurace stránky průvodce, průvodce UDI Wizard Designer načte vlastní editor stránky, který odpovídá typu stránky průvodce. Vlastní editory stránek průvodce jsou vyvíjeny jako uživatelské ovládací prvky WPF. Stránky editoru stránek vlastního průvodce používají vzor návrhu Model-View-ViewModel (MVVM) pro WPF.

Vzor návrhu MVVM pomáhá oddělit uživatelské rozhraní (ui; prezentaci) od prezentovaných dat. Data jsou fasáda nad page element v konfiguračním souboru průvodce UDI (soubor Config.xml v příkladu), který je přístupný pomocí CurrentPage vlastnost IDataService rozhraní.

Průvodce UDI Designer používá DependencyAttribute k získání přístupu k třídě DataService na základě architektury injektáže závislostí v Unity. Další informace o architektuře závislostí v Unity najdete v tématu Vložení části životnosti do vašich aplikací – Seznámení s blokem aplikace Unity.

Kontrola konfigurovatelných komponent na stránce Průvodce UDI

Při vytváření vlastní stránky průvodce mohou být některá nastavení konfigurace nastavena v kódu a nelze je po kompilaci stránky změnit. U jiných nastavení konfigurace však budete muset povolit změnu těchto nastavení pomocí průvodce UDI Designer.

Nastavení konfigurace, které chcete nakonfigurovat pomocí průvodce UDI Designer, se obvykle ukládají do konfiguračního souboru průvodce UDI (soubor Config.xml v příkladu). V případě potřeby ale můžete také vytvořit vlastní samostatný konfigurační soubor. Jedním z příkladů použití samostatného konfiguračního souboru je soubor UDIWizard_Config.xml.app, který používá úloha Zjišťování aplikací a typ stránky průvodce ApplicationPage .

Následuje seznam typických nastavení konfigurace, která můžete spravovat pomocí průvodce UDI Designer:

  • Pole. Použití polí umožňuje uživatelům zadat vstup. Pole se zobrazí jako Elementy pole v konfiguračním souboru průvodce UDI (UDIWizard_Config.xml), který obsahuje nastavení konfigurace pro jednotlivá pole. Odpovídající editor stránek průvodce musí poskytnout metodu pro úpravu nastavení konfigurace pole pomocí FieldElementControl.

  • Vlastnosti. Setters pomáhá vytvářet vlastnosti pro entity na stránce, jako jsou stránky v elementu Page , pole v elementu Field nebo data v prvcích Data nebo DataItem . Vlastnosti se konfiguruje v elementech Setter . Přidejte samostatný element Setter pro každou vlastnost, kterou chcete definovat. Upravit vlastnosti pomocí SetterControl a konfigurovat další prvky Setter pomocí jiných ovládacích prvků.

  • Data. Data se používají k ukládání informací pro použití na stránce průvodce a dalších komponentách. Data pro stránky nebo pole můžete definovat pomocí prvků Data nebo DataItem . Data mohou být definována v ploché nebo hierarchické struktuře prostřednictvím správného použití dat nebo DataItem elementů. Config.xml v příkladu v sadě SDK ukazuje, jak vytvořit ploché datové struktury.

    Editor stránek vlastního průvodce, který vytvoříte, musí být schopen spravovat tato nastavení konfigurace.

Projděte si příklad stránky EditorPage.

Příklad EditorPage slouží ke konfiguraci nastavení konfigurace pro stránku průvodce SamplePage v konfiguračním souboru průvodce UDI Wizard. Příklad EditorPage má následující primární součásti:

  • Uživatelské rozhraní pro konfiguraci nastavení pole se seznamem Umístění

  • Uživatelské rozhraní pro přidání nebo úpravu umístění v seznamu možných umístění, která jsou zobrazená v poli se seznamem Umístění

  • Nastavení konfigurace načtené z konfiguračního souboru průvodce UDI a uložené do konfiguračního souboru UDI Wizard

  • Podpora kódu pro ostatní komponenty

    Projděte si příklad EditorPage v sadě Visual Studio provedením následujících kroků:

  1. Podívejte se, jak se editor stránky Průvodce SampleEditor načítá a inicializuje v průvodci UDI Designer, jak je popsáno v tématu Načtení a inicializace editoru stránek průvodce kontrolou.

  2. Zkontrolujte uživatelské rozhraní použité k úpravě pole se seznamem Umístění v souborech LocationPageEditor.xaml a LocationPageEditor.xaml.cs, jak je popsáno v části Kontrola uživatelského rozhraní použitého ke konfiguraci pole se seznamem Umístění.

  3. Zkontrolujte uživatelské rozhraní použité k přidání nebo úpravě umístění do seznamu v souborech AddEditLocationView.xaml a AddEditLocationView.xaml.cs, jak je popsáno v tématu Kontrola uživatelského rozhraní použitého k úpravě seznamu možných umístění.

  4. Zkontrolujte kód použitý ke správě konfiguračních informací uložených v konfiguračním souboru Průvodce UDI, jak je popsáno v tématu Kontrola kódu použitého ke správě informací o konfiguraci.

Kontrola načítání a inicializace editoru stránek průvodce

Vlastní editory stránek průvodce se načítají podle požadavků průvodce UDI Designer. UDI Wizard Designer konfigurační soubory jsou načteny při spuštění průvodce UDI Wizard Designer. Průvodce UDI Designer prohledá ve složce install_folder\Bin\Config (kde install_folder je název složky, ve které je nainstalována sada MDT) na soubory s příponou .config.

Během konfigurace vývojového prostředí UDI jste zkopírovali soubor SamplePage.dll.confg do složky install_folder\Bin\Config. Při spuštění průvodce UDI Designer se soubor SamplePage.dll.confg najde a načte.

Průvodce UDI Designer používá následující atributy prvku Page v souboru SamplePage.dll.confg k načtení a inicializaci příkladu EditorPage:

  • DesignerAssembly. Tento atribut určuje název knihovny DLL, která se má načíst. Tato knihovna DLL musí být umístěna ve stejné složce jako soubor UDIDesigner.exe, což je složka install_folder\Bin (kde install_folder je název složky, ve které je nainstalován MDT).

  • Typ návrháře. Tento atribut je název typu Microsoft .NET třídy, která obsahuje uživatelský ovládací prvek WPF.

  • Zadejte. Tento atribut slouží ke konfiguraci typu stránky vlastní stránky průvodce, kterou UDI Wizard načte. Průvodce UDI Designer používá tento atribut k vyhledání příslušného prvku Page v konfiguračním souboru průvodce UDI.

  • Dll. Tento atribut slouží ke konfiguraci elementu knihovny DLL v konfiguračním souboru průvodce UDI, který průvodce UDI Designer vytvoří.

  • Popis: Pomocí tohoto atributu můžete zadat informace o editoru stránek průvodce. Hodnota tohoto atributu je zobrazena v dialogovém okně Přidat novou stránku v průvodci UDI Designer, který se používá k přidání stránky průvodce do "Knihovna stránek".

  • DisplayName. Tento atribut slouží k zadání názvu vlastní stránky průvodce, která je zobrazena v průvodci UDI Designer. Hodnota tohoto atributu je zobrazena v dialogovém okně Přidat novou stránku v průvodci UDI Designer, který se používá k přidání stránky průvodce do "Knihovna stránek".

    V tomto příkladu je typ stránky vlastního průvodce SamplePageMicrosoft.SamplePage.LocationPage, který je uložen v souboru Config.xml. Soubor Config.xml se nachází ve složce local_folder\SDK\SamplePage\SamplePage do složky (kde local_folder je složka, kterou jste vytvořili na vývojovém počítači dříve v procesu konfigurace).

Kontrola uživatelského rozhraní použitého ke konfiguraci pole se seznamem Umístění

Při načtení a inicializaci editoru stránek průvodce SampleEditor editor stránky je načten při úpravě stránky s typem Microsoft.SamplePage.LocationPage . Uživatelské rozhraní editoru stránky je uloženo v souboru LocationPageEditor.xaml.

Pokud prozkoumáte uživatelské rozhraní na kartě Návrh a kód na kartě XAML , uvidíte relaci mezi grafickým uživatelským rozhraním a prvky a atributy v jazyce XAML (Extensible Application Markup Language).

Pokud například zkontrolujete element Controls:FieldElementControl v XAML, uvidíte, jak to souvisí s rozložením odpovídajícího uživatelského rozhraní. Použití Controls:FieldElementControl element definovat FieldElementControl ovládací prvek.

Parametry vazby v souboru XAML sváže pole v editoru ukázkové stránky s informacemi v konfiguračním souboru průvodce UDI. Například následující kód spojuje textové pole Výchozí hodnota s elementem Default v konfiguračním souboru průvodce UDI (Config.xml v příkladu):

<TextBox Text="{Binding FieldData.DefaultValue,
 UpdateSourceTrigger=PropertyChanged,
 Mode=TwoWay}"/>

Další informace najdete v tématu Postupy: Zpřístupnění dat pro vazbu v XAML.

Pomocí elementu Views:CollectionTControl.ColumnCollectionView v XAML upravte seznam dostupných umístění v zobrazení mřížky. Pomocí ovládacího prvku CollectionTControl zobrazíte zobrazení mřížky a svážete zobrazení mřížky s prvkem Data s názvem Umístění v konfiguračním souboru UDI.

Kontrola uživatelského rozhraní použitého k úpravě seznamu možných umístění

Uživatelské rozhraní pro úpravu seznamu možných umístění se skládá z:

Kontrola tlačítek kontextových nabídek a pásu karet pro úpravy seznamu umístění

Po kliknutí pravým tlačítkem myši do seznamu, který obsahuje seznam umístění, se zobrazí kontextová nabídka. Pás karet obsahuje odpovídající tlačítka, která umožňují provádět stejné úkoly. Ovládací prvek Views:CollectionsTControl v souboru LocationPageEditor.xaml definuje metody volané na základě prováděné akce a vlastnosti, které nastavíte následujícím způsobem:

  • SelectedItem. Tato vlastnost vázaná na data se aktivuje, když uživatel vybere položku ze seznamu. Tato vlastnost je vázaná na vlastnost CurrentLocation v modelu zobrazení, která je umístěna v souboru LocationPageEditorViewModel.cs a používá CollectionTControl ovládací prvek předat položku vybranou při úpravě nebo odebrání existující položky.

  • AddItemAction. Tato akce se provede, když uživatel vybere možnost Přidat položku z kontextové nabídky nebo odpovídajících tlačítek na pásu karet. V modelu zobrazení je datová vazba na vlastnost, která vrací objekt AddLocationAction . Tento objekt je AddLocationCallback metoda, která se nachází v souboru LocationPageEditorViewModel.cs a zobrazí dialogové okno v souboru AddEditLocationView.xaml.

  • EditItemAction. Tato akce se provede, když uživatel vybere možnost Upravit položku z kontextové nabídky. V modelu zobrazení je datová vazba na vlastnost, která vrací objekt EditLocationAction . Tento objekt je Metoda EditLocationCallback umístěná v souboru LocationPageEditorViewModel.cs a zobrazí dialogové okno v souboru AddEditLocationView.xaml.

  • RemoveAction. Tato akce se provede, když uživatel vybere možnost Odebrat položku z místní nabídky. V modelu zobrazení je datová vazba na vlastnost, která vrací objekt RemoveAction . Tento objekt je EditLocationCallback metoda, která se nachází v souboru LocationPageEditorViewModel.cs a zobrazuje zprávu, která potvrzuje odstranění umístění.

Kontrola dialogového okna pro přidání nebo úpravu umístění

Pokud do seznamu umístění přidáte nové umístění nebo upravíte existující umístění, zobrazí se zpráva, která je v souboru AddEditLocationView.xaml. Zpráva se zobrazí pomocí metody okna ShowDialogWindow v souboru LocationPageEditorViewModel.cs.

Uživatelské rozhraní v souboru AddEditLocationView.xaml se skládá z:

  • Rámeček dialogového okna s názvem DialogFrame, který obsahuje následující prvky:

    • Název, který nakonfigurujete pomocí atributu DialogTitle rámce dialogového okna.

    • Tlačítko OK , které nastaví stav vrácení jako pro vlastnost Approved na True (Stav vrácení je zaškrtnutý v metodě AddLocationCallback v souboru LocationPageEditorViewModel.cs, aby se zjistilo, jestli uživatel vybral OK.)

    • Tlačítko Zrušit , které nastaví stav vrácení jako pro vlastnost Approved na False (Stav vrácení je zaškrtnutý v metodě AddLocationCallback v souboru LocationPageEditorViewModel.cs, aby se zjistilo, jestli uživatel vybral Zrušit.)

  • Element WPF, který obsahuje:

    • Popisek, který nakonfigurujete pomocí atributu Content

    • Textové pole, které je vázáno na prvek Data s názvem Location v konfiguračním souboru UDI (soubor Config.xml v příkladu)

Kontrola kódu použitého ke správě konfiguračních informací

Informace o konfiguraci pro stránku vlastního průvodce jsou uložené v konfiguračním souboru průvodce UDI Wizard, což je:

  • Config.xml soubor v příkladu poskytnutém se sadou UDI SDK (Tento soubor obsahuje pouze nastavení konfigurace pro tento příklad.)

  • UDIWizard_Config.xml soubor poskytovaný s mdt, uložený ve složce installation_folder\Templates\Distribution\Scripts (kde installation_folder je složka, ve které jste nainstalovali MDT); Tento soubor obsahuje nastavení konfigurace pro všechny předdefinované stránky a fáze průvodce.

    V příkladu SampleEditor pomáhá rutina Umístění spravovat informace o konfiguraci a je umístěna v souboru LocationPageEditorViewModel.cs. Rutina Umístění vrátí seznam umístění z konfiguračního souboru průvodce UDI. Konkrétně vrácený seznam obsahuje položku pro každý prvek DataItem v konfiguračním souboru průvodce UDI.

Vytváření vlastních stránek průvodce UDI

Proces vysoké úrovně pro vytváření vlastních stránek průvodce UDI je následující:

  1. Jako výchozí bod vytvořte kopii řešení SamplePage.

  2. Umístěte požadované ovládací prvky (pole) do formuláře.

  3. Napište kód pro provádění příslušných úloh při načtení stránky průvodce (přepsání pro metodu OnWindowCreated ), včetně následujících kroků:

    1. Inicializuje formulář.

    2. Čtení paměťových proměnných, proměnných pořadí úkolů, proměnných prostředí nebo informací o souborech XML (například vlastnosti Setter ).

  4. Napište libovolný kód pro provedení příslušných úloh při zobrazení stránky (přepsání pro metodu OnWindowShown ), včetně následujících kroků:

    1. Povolte nebo zakažte ovládací prvky na základě informací načtených při načtení stránky v kroku 3.

    2. Aktualizujte ovládací prvky na základě informací přečtených při načtení stránky v kroku 3, například základní soubor ovládacích prvků na základě přečtených informací.

  5. Napište libovolný kód pro provádění příslušných úloh, když uživatel pracuje se stránkou průvodce.

  6. Napište libovolný kód, který provede příslušné úlohy, když uživatel v průvodci UDI vybere další (přepsání pro metodu OnNextSelected ), včetně následujících kroků:

    1. Aktualizujte všechny proměnné paměti, proměnné pořadí úkolů, proměnné prostředí nebo informace o souborech XML.

    2. Aktualizujte souhrnné informace o stránce (pokud je neprovádí pole na stránce).

  7. Sestavte řešení.

    Ujistěte se, že verze knihovny DLL, kterou vytvoříte, je stejná procesorová platforma jako instalace MDT – konkrétně procesorová platforma pro prostředí Windows PE (Předinstalační prostředí Windows). Průvodce UDI lze spustit v:

    • Existující operační systém v cílovém počítači. 32bitové verze stránky průvodce můžete spustit v 32bitových nebo 64bitových operačních systémech Windows. V 64bitových operačních systémech Windows však můžete spustit pouze 64bitové verze stránky průvodce.

    • Prostředí Windows PE na cílovém počítači. Prostředí Windows PE nepodporuje spouštění 32bitových aplikací v 64bitové verzi prostředí Windows PE. Proto musíte mít vytvořenou verzi stránky průvodce pro každou architekturu procesoru prostředí Windows PE, kterou plánujete používat.

  8. Zkopírujte knihovnu DLL pro stránku vlastního průvodce do složky installation_folder\Templates\Distribution\Tools\ platform (kde installation_folder je složka, ve které jste nainstalovali MDT a platforma je x86 pro 32bitovou verzi nebo x64 pro 64bitovou verzi).

  9. Dokončete kroky pro vytvoření vlastního editoru stránek.

Vytváření vlastních editorů stránek průvodce

Proces vysoké úrovně pro vytváření vlastních editorů stránek průvodce UDI je následující:

  1. Jako výchozí bod vytvořte kopii řešení SampleEditor.

  2. Vytvořte uživatelské rozhraní primárního editoru stránek v souboru .xaml.

  3. Přidejte instance ovládacího prvku FieldElementControl tak, jak to vyžaduje stránka průvodce, která má být nakonfigurována (v případě potřeby).

  4. Přidejte instance ovládacího prvku SetterControl podle požadavků stránky průvodce, která má být nakonfigurována (v případě potřeby).

  5. Přidejte instance ovládacího prvku CollectionTControl podle požadavků stránky průvodce, která se má nakonfigurovat (pokud je to potřeba).

  6. Přidejte rozhraní IDataService .

  7. Napište odpovídající kód pro aktualizaci konfiguračního souboru UDI Wizard na základě nastavení konfigurace, které se má nakonfigurovat pomocí vlastního editoru stránek průvodce.

  8. Vytvořte podřízená dialogová okna v souboru .xaml a volejte je z editoru primární stránky pomocí rozhraní IMessageBoxService , jak vyžaduje stránka průvodce, která má být nakonfigurována.

  9. Přidejte příslušná rozhraní do průvodce UDI Designer pásu karet na základě požadavků stránky průvodce, která se má nakonfigurovat.

  10. Sestavte řešení.

    Poznámka

    Ujistěte se, že verze knihovny DLL, kterou vytvoříte, je stejná procesorová platforma jako instalace MDT. Pokud například nainstalujete 64bitovou verzi MDT, sestavte 64bitovou verzi vlastního editoru stránek.

  11. Vytvořte UDI Wizard Designer konfigurační soubor pro načtení potřebných knihoven DLL a namapujte editor stránky průvodce na odpovídající stránku průvodce (soubor SamplePage.dll.config v příkladu).

    Další informace o prvcích potřebných k provedení mapování mezi stránkou průvodce a editorem stránky průvodce najdete v tématu DesignerMappings element, podřízené elementy a odpovídající atributy.

  12. Zkopírujte UDI Wizard Designer konfigurační soubor, který jste vytvořili v předchozím kroku, do složky installation_folder\Bin\Config (kde installation_folder je složka, do které jste nainstalovali verzi MDT).

  13. Zkopírujte knihovnu DLL pro editor stránek vlastního průvodce do složky installation_folder\Bin (kde installation_folder je složka, ve které jste nainstalovali MDT).

Vytváření vlastních úloh UDI

Úlohy UDI jsou knihovny DLL napsané v jazyce C++, které implementují rozhraní ITask. Knihovnu DLL zaregistrujete do knihovny úloh UDI Wizard Designer vytvořením konfiguračního souboru UDI Wizard Designer (soubor .config) a jeho umístěním do složky installation_folder\Bin\Config (kde installation_folder je složka, ve které jste nainstalovali MDT).

Poznámka

Můžete vytvořit knihovnu DLL, která obsahuje stránky průvodce, úlohy a validátory v rámci stejného souboru .dll. Můžete také vytvořit jeden UDI Wizard Designer konfigurační soubor (.config), který obsahuje nastavení konfigurace pro stránky průvodce, úlohy a validátory v knihovně DLL.

Vytvoření vlastních úloh UDI

  1. Napište kód, který implementuje rozhraní ITask a následující metody:

    • Init. Tato metoda je volána k inicializaci úkolu.

    • Spusťte příkaz . Tato metoda je volána ke spuštění úlohy.

  2. Napište kód, který zaregistruje vlastní objekt pro vytváření tříd úloh v registru továrny.

  3. Sestavte řešení pro vlastní úlohu.

    Poznámka

    Ujistěte se, že verze knihovny DLL, kterou vytvoříte, je stejná procesorová platforma jako instalace MDT. Pokud například nainstalujete 64bitovou verzi MDT, sestavte 64bitovou verzi vlastní úlohy UDI.

  4. Vytvořte element Task v elementu TaskLibrary v průvodci UDI Designer konfiguračního souboru podobnému následujícímu úryvku:

    <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>
    

    Poznámka

    Všechny elementy Task by měly obsahovat bitmapfilename parametr. Zadejte všechny ostatní parametry, které úloha vyžaduje. Například v předchozím úryvku se parametr protokolu používá k určení parametru pro umístění souboru protokolu.

  5. Zkopírujte UDI Wizard Designer konfigurační soubor vytvořený v předchozím kroku do složky installation_folder\Bin\Config (kde installation_folder je složka, do které jste nainstalovali MDT).

  6. Zkopírujte knihovnu DLL pro vlastní úlohu do složky installation_folder\Templates\Distribution\Tools\ platform (kde installation_folder je složka, ve které jste nainstalovali MDT a platforma je x86 pro 32bitovou verzi nebo x64 pro 64bitovou verzi).

Vytváření vlastních validátorů UDI

Validátory UDI jsou knihovny DLL napsané v jazyce C++, které implementují rozhraní IValidator . Knihovnu DLL zaregistrujete do knihovny validátoru UDI Wizard Designer vytvořením konfiguračního souboru průvodce UDI Designer (soubor .config) a jeho umístěním do složky installation_folder\Bin\Config (kde installation_folder je složka, ve které jste nainstalovali MDT).

Vytvoření vlastních validátorů UDI

  1. Napište kód, který vytvoří podtřídu třídy BaseValidator a implementuje následující metody:

    • Init(IControl *pControl, IWizardPageContainer *pContainer, IStringProperties *pVlastnosti). Kontroler formuláře zavolá člena Inicializace validátoru. Tato metoda musí volat Metodu Init pro BaseValidator třídy. Obvykle čte všechny vlastnosti nastavené pro validátor z konfiguračního souboru průvodce UDI. Například validátor InvalidCharactersValidator načte hodnotu vlastnosti InvalidChars pomocí této metody.

    • IsValid. Kontroler formulářů volá tuto metodu, aby zjistil, zda ovládací prvek obsahuje platný text. Následuje příklad metody IsValid pro validátor, který ověřuje, že pole není prázdné:

      BOOL IsValid(LPBSTR pMessage)
      {
          __super::IsValid(pMessage);
      
          _bstr_t text;
          m_pText->GetText(text.GetAddress());
          return (text.length() > 0);
      }
      
    • Init(IControl *pControl, zpráva LPCTSTR). Kontroler formuláře volá tohoto člena pro každé stisknutí klávesy a další události, aby validátor mohl ověřit obsah ovládacího prvku a aktualizované zprávy v dolní části stránky průvodce (nebo je vymazat).

      Obvykle se jedná o jediné metody, které je potřeba přepsat. V závislosti na validátoru však možná budete muset přepsat jiné metody v podtřídě BaseValidator třídy, kterou vytvoříte. Další informace o těchto dalších metodách naleznete BaseValidator třídy.

  2. Napište kód, který zaregistruje vlastní třídu úloh v objektu pro vytváření registru.

  3. Sestavte řešení pro vlastní úlohu.

    Poznámka

    Ujistěte se, že verze knihovny DLL, kterou vytvoříte, je stejná procesorová platforma jako instalace MDT. Pokud například nainstalujete 64bitovou verzi MDT, sestavte 64bitovou verzi vlastní úlohy UDI.

  4. Vytvořte element Validator v elementu ValidatorLibrary v Designer konfiguračním souboru průvodce UDI podobně jako v následujícím výňatku:

    <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>
    

    Upozornění

    Všechny prvky validátoru by měly obsahovat parametr Message . Zadejte všechny ostatní parametry podle požadavků validátoru. Například v předchozím výňatku se parametr NamedPattern používá k určení parametru pro název předdefinovaného vzoru regulárního výrazu.

  5. Zkopírujte UDI Wizard Designer konfigurační soubor vytvořený v předchozím kroku do složky installation_folder\Bin\Config (kde installation_folder je složka, do které jste nainstalovali MDT).

  6. Zkopírujte knihovnu DLL pro vlastní úlohu do složky installation_folder\Templates\Distribution\Tools\ platform (kde installation_folder je složka, ve které jste nainstalovali MDT a platforma je x86 pro 32bitovou verzi nebo x64 pro 64bitovou verzi).

Referenční informace k průvodci UDI

Součásti stránky průvodce

K vytvoření vlastních stránek můžete použít libovolnou z několika předem připravených komponent.

Vytváření instancí komponent

Průvodce UDI používá objekty pro vytváření nových instancí objektů. Tyto továrny jsou zaregistrované v registru továrny a jako klíč k továrně se používá řetězec. Například WmiRepository komponenta je identifikován řetězcem "Microsoft.Wizard.WmiRepository", který je k dispozici v hlavičkovém souboru IWmiRepository jako ID_WmiRepository.

Za předpokladu, že jste stránku napsali jako podtřídu WizardPageImpl, můžete vytvořit novou instanci WmiRepoistory takto:

PWmiRepository pWmi;
CreateInstance(Container(), ID_WmiRepository, &pWmi);

Funkce CreateInstance je typově bezpečná funkce šablony pro vytváření nových instancí komponent. PWmiRepository je inteligentní ukazatel, takže za vás zpracovává počítání odkazů.

Kreatable Components

Existuje sada komponent, které můžete zaregistrovat v registru. První sada komponent je vždy registrována, protože ji poskytuje hlavní spustitelný soubor průvodce UDI. Další dvě sady komponent jsou k dispozici v "volitelných" knihovnách DLL. Aby byly tyto komponenty k dispozici, musí být knihovna DLL uvedena v části knihovny DLL souboru XML .config. Váš kód nemusí vědět, který spustitelný soubor obsahuje konkrétní komponentu.

Seznam ID komponent pro komponenty (název komponenty je stejný jako ID, ale bez počátečního ID_) zaregistrovaných v registru továrny (definovaném v OSDSetupWizard) je uveden v tabulce 3.

Tabulka 3. ID komponent

ID Popis
ID_ACPowerTask (ITask, IWizardComponent) Předběžná úloha, která zajišťuje, že počítač neběží jenom na baterii
ID_AppDiscoveryTask (ITask, IWizardComponent) Specializovaná úloha pro zjišťování softwarových položek, které jste nainstalovali do počítače
ID_BackgroundTask (IBackgroundTask, IWizardComponent) Dá se použít ke spuštění úlohy v jiném vlákně.
ID_CopyFilesTask (ITask, IWizardComponent) Úkol pro zkopírování jednoho nebo více souborů
ID_FormController (IFormController) Pravděpodobně nebudete muset instanci vytvářet sami, protože vaše stránka obdrží vlastní instanci.
ID_InvalidCharactersValidator (IValidator) Zajišťuje, že žádné textové pole neobsahuje znaky ze seznamu zadaného validátoru.
ID_Logger (ILogger) Pravděpodobně nebudete muset instanci vytvářet sami, protože vaše stránka dostane ukazatel na sdílenou instanci.
ID_NonEmptyValidator (IValidator) Validátor, který zajišťuje, že žádné pole není prázdné
ID_PasswordValidator (IValidator) Validátor, který zajišťuje, že žádná dvě textová pole nemají stejný obsah
ID_Regex (IRegEx) Vyhodnocuje regulární výrazy a hledá shody.
ID_RegExValidator (IValidator) Validátor, který ověřuje regulární výraz nebo známý vzor
ID_SimpleStringProperties (IStringProperties, ISimpleStringProperties) Poskytuje jednoduchý způsob odesílání vlastností do úloh bez použití XML.
ID_ShellExecuteTask (ITask, IWizardComponent) Spuštění externího programu
ID_SummaryBag (ISummaryBag) K dispozici nepřímo ze stránky prostřednictvím metody Formulář
ID_TaskManager (ITaskManager, IBackgroundCallback, IWizardComponent) Spravuje spuštění sady úloh a uživatelského rozhraní.
ID_WmiRepository (IWmiRepository, IWizardComponent) Umožňuje spouštět dotazy WMI (Windows Management Instrumentation).
ID_IXmlDocument (IXmlDocument) Poskytuje fasádu pro čtení a psaní dokumentů XML.

Definované OSDRefreshWizard.dll, sdílené stránky a další komponenty ovládacích prvků jsou uvedeny v tabulce 4 a tabulce 5.

Tabulka 4. Ovládací prvky adresáře

ID Popis
ID_Directory (IDirectory) Fasáda pro získání informací o adresáři ze systému souborů

Tabulka 5. Definované SharedPages.dll

ID Popis
ID_ADHelper (IADHelper) Poskytuje fasádu pro omezenou sadu funkcí ve službě Active Directory® Doménové služby (AD DS).
ID_CpuInfo (ICpuInfo) Určuje, jestli je procesor 32 nebo 64bitový.
ID_DomainJoinValidator (IDomainJoinValidator) Obsahuje některé metody pro kontrolu, jestli je sada přihlašovacích údajů povolená pro připojení k doméně.
ID_DriveList (IDriveList, IBindableList, IWizardComponent) Pomocí rozhraní WMI získáte seznam jednotek v počítači.
ID_WiredNetworkTask (ITask) Úloha, která kontroluje, jestli jste připojení k síti pomocí pevně připojeného síťového adaptéru (místo bezdrátového připojení)

Ovládací součásti

S ovládacími prvky na stránce pracujete prostřednictvím funkce šablony GetControlWrapper , která poskytuje přístup k jednomu z typů komponent uvedených v tabulce 6.

Tabulka 6. Součásti

Typy ovládacích prvků dialogového okna Popis
CONTROL_CHECK_BOX (ICheckBox) Fasáda pro práci s ovládacími prvky zaškrtávacích políček
CONTROL_COMBO_BOX (IComboBox) Fasáda pro ovládací prvky pole se seznamem
CONTROL_GENERIC (IControl) Umožňuje pracovat s většinou typů ovládacích prvků pro řízení povoleného a viditelného stavu.
CONTROL_LIST_VIEW (IListView) Fasáda poskytující přístup k funkcím ovládacího prvku zobrazení seznamu
CONTROL_PROGRESS_BAR (IProgressBar) Fasáda pro práci s umístěním ovládacího prvku indikátoru průběhu
CONTROL_RADIO_BUTTON (IRadioButton) Fasáda pro práci s ovládacími prvky přepínačů
CONTROL_STATIC_TEXT (IStaticText) Fasáda, která poskytuje oprávnění ke čtení/zápisu textu ovládacího prvku, jako je popisek nebo textové pole
CONTROL_TREE_VIEW (ItreeView) Fasáda pro práci s ovládacím prvku stromového zobrazení

Komponenta Seznam obrázků

Tato komponenta je fasádou ovládacího prvku ImageList na vaší stránce. Seznam obrázků vytvoříte prostřednictvím rozhraní IListView nebo ITreeView .

Komponenta FormController

Průvodce vytvoří tuto komponentu za vás a předá ji na vaši stránku. Přístup z vaší stránky pomocí form metoda, kterou WizardPageImpl základní třída implementuje.

Komponenta InvalidCharacterValidator

Jedná se o typ validátoru, který můžete zahrnout na stránku. ID je ID_InvalidCharactersValidator (definované v souboru IValidator.h), který má textovou hodnotu Microsoft.Wizard.Validation.InvalidChars.

Tento validátor hledá jednu vlastnost (prvek Setter v souboru .config) s názvem InvalidChars, což je seznam znaků, které nejsou povoleny. Kontroluje znaky v textovém poli; Pokud text obsahuje nějaké znaky z tohoto seznamu, komponenta hlásí selhání.

Komponenta NonEmptyValidator

Jedná se o typ validátoru, který můžete zahrnout na stránku. ID je ID_NonEmptyValidator (definované v souboru IValidator.h), který má textovou hodnotu Microsoft.Wizard.Validation.NonEmpty.

Tento validátor hlásí selhání, pokud má textové pole (nebo jakýkoli jiný ovládací prvek, který podporuje IStaticText) hodnotu prázdného řetězce.

Komponenta PasswordValidator

Jedná se o typ validátoru, který můžete zahrnout na stránku. ID je ID_PasswordValidator (definované v souboru IValidator.h), který má textovou hodnotu Microsoft.Wizard.Validation.Password.

Tento validátor pracuje se dvěma různými textovými ovládacími prvky (ovládacími prvky, které podporují IStaticText) a hlásí selhání, pokud neobsahují stejné hodnoty. Jinými slovy, pokud se textová pole Heslo a Potvrzení hesla neshodují.

Vzhledem k tomu, že tento validátor vyžaduje dva ovládací prvky, potřebuje více nastavení než ostatní validátory. Nastavení může vypadat nějak takto:

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);

Nejprve definujete ovládací prvek Potvrdit heslo jako "podřízený" ovládací prvek Heslo . Pokud pak řadič formuláře zakáže ovládací prvek Heslo , zakáže také ovládací prvek Potvrdit heslo . Dále do formuláře přidejte validátor hesla. Nakonec zadejte validátor hesla s rozhraním pro ovládací prvek Potvrdit heslo .

Vzhledem k požadavku na dva ovládací prvky je nutné použít kód k nastavení tohoto validátoru místo souboru XML .config.

Součást RegExValidator

Jedná se o typ validátoru, který můžete zahrnout na stránku. ID je ID_RegExValidator (definované v souboru IValidator.h), jehož textová hodnota je Microsoft.Wizard.Validation.RegEx.

Tento validátor porovnává obsah textového ovládacího prvku (ten, který podporuje IStaticText) s regulárním výrazem a selže, pokud text neodpovídá regulárnímu výrazu.

Alternativně můžete tento validátor použít s předdefinovaným pojmenovaným vzorem. Chcete-li použít regulární výraz, xml musí obsahovat setter vlastnost s názvem Pattern. Pokud chcete místo toho použít pojmenovaný vzor, použijte setter s názvem NamedPattern nastavený na jednu z hodnot v tabulce 7.

Tabulka 7. Pojmenované settery vzorů

Vzor Popis
Uživatelské jméno Ověří, že text je ve formátu doména\uživatel nebo user@domain
Název_počítače Název musí mít délku 1 až 15 znaků a nesmí obsahovat sadu znaků (například : a ?).
Workgroup Název musí mít délku 1 až 15 znaků a nesmí obsahovat sadu znaků (například =, +a ?).

Komponenta FactoryRegistry

Tato komponenta sleduje všechny třídy továrny a služby. Implementuje rozhraní IFactoryRegistry a je k dispozici nepřímo prostřednictvím metody Container vaší stránky. Kromě toho registr načte rozšiřující knihovny DLL. Po načtení knihovny DLL registr vyhledá exportovanou funkci s názvem RegisterFactories. Musíte implementovat tuto funkci a zaregistrovat v ní objekty pro vytváření tříd pro vaše stránky, úkoly a validátory (a všechny další továrny tříd, které chcete zaregistrovat). Tady je příklad z ukázkového projektu:

extern "C" __declspec(dllexport) void RegisterFactories(IFactoryRegistry *factories)
{
Register<LocationPageFactory>(ID_LocationPage, factories);
}

Komponenta protokolovacího nástroje

Tato komponenta je k dispozici pro vaši stránku prostřednictvím metody Logger (implementované WizardPageImpl). Tuto metodu použijete k zápisu položek do souboru protokolu. Obsah souboru protokolu je užitečný při diagnostice problémů, které uživatelé můžou mít při spuštění Průvodce UDI.

Komponenta PropertyBag

Kontejner vlastností je kontejner pro paměťové proměnné. Je k dispozici na vaší stránce pomocí container()->Properties(). Proměnné paměti jsou užitečné pro předávání dočasných dat mezi různými stránkami.

TSVariableBag a TSRepository – komponenty

Komponenta TSVariableBag umožňuje číst a zapisovat proměnné pořadí úkolů. Udržuje hodnoty v paměti, dokud uživatel nevybere Možnost Dokončit (ve výchozím nastavení). K kontejneru TSVariable můžete přistupovat prostřednictvím metody TSVariables stránky (implementované základní třídou WizardPageImpl ). Tyto komponenty protokolují všechna čtení a zápisy proměnných pořadí úkolů.

Součást WmiRepository

Tato komponenta poskytuje fasádu pro práci s dotazy WMI. Pomocí ID_WmiRepository můžete volat pomocnou funkci CreateInstance a získat tak instanci této komponenty, která podporuje rozhraní IWmiRepository. Tato komponenta vrací záznamy výsledků prostřednictvím rozhraní IWmiIterator .

Pomocné třídy stránek průvodce

Vlastní stránky průvodce UDI můžete vytvořit pomocí předdefinovaných pomocných tříd, které jsou součástí sady UDI SDK. Tabulka 8 obsahuje pomocné třídy, které můžete použít k vytvoření vlastních stránek průvodce.

Tabulka 8. Pomocné třídy

Pomocná třída Popis
ClassFactoryImpl – třída Toto je užitečná základní třída pro vytvoření objektu pro vytváření tříd, kterou pak můžete zaregistrovat v registru továrny.
Třída šablony rozhraní Tuto třídu šablony použijte, pokud chcete vytvořit komponentu, která implementuje více než jedno rozhraní.
Path Helper – třída Tato třída poskytuje běžné operace se soubory a adresáři.
Třída šablony ukazatele Tato třída poskytuje počítání odkazů pro správu životnosti v komponentách modelu COM. Jakmile s nimi skončíte, je důležité rozhraní uvolnit. Tato třída šablony zpracovává životnost automaticky.
PUnknown – třída Tato třída je inteligentní ukazatel speciálně pro rozhraní IUnknown. Pro všechna ostatní rozhraní použijte třídu šablony Ukazatel.
Pomocná třída StringUtil Tato třída poskytuje pomocné metody, které usnadňují práci s řetězci.
Třída šablony SubInterface Tato základní třída usnadňuje implementaci komponenty, která podporuje rozhraní, které samotné dědí z jiného rozhraní.
Třída šablony UnknownImpl Tato třída zpracovává většinu podrobností o vytvoření komponenty modelu COM.
WizardComponent – třída šablony Tato základní třída se používá k vytváření komponent, které potřebují přístup ke službám průvodce, jako je vytváření a protokolování komponent.
WizardPageImpl – třída šablony Tato základní třída by se měla používat jako základní třída pro všechny vlastní stránky průvodce.

ClassFactoryImpl – třída

Toto je užitečná základní třída pro vytvoření objektu pro vytváření tříd, kterou pak můžete zaregistrovat v registru továrny.

Následuje výňatek ze souboru LocationPage.h v ukázkovém projektu, který definuje třídu ClassFactoryImpl .

#pragma once

#include "ClassFactoryImpl.h"

class LocationPageFactory :public ClassFactoryImpl
{
protected:
    IUnknown *CreateNewInstance();
};

Následuje výňatek ze souboru LocationPage.cpp na stránce průvodce ukázkou, která slouží k definování objektu pro vytváření tříd pro stránku.

IUnknown *LocationPageFactory::CreateNewInstance()
{
    return static_cast<IWizardPage *>(new LocationPage);
}

Třída šablony rozhraní

Tuto třídu šablony použijte, pokud chcete vytvořit komponentu, která implementuje více než jedno rozhraní – například:

classLocationPage :public Interface<IFieldCallback, WizardPageImpl<IDD_LOCATION_PAGE>>

Tento kód vytvoří řetězec základních tříd, který podporuje IFieldCalback i rozhraní, která podporuje WizardPageImpl (což je IWizardPage).

Path Helper – třída

Tato třída poskytuje běžné operace se soubory a adresáři:

static inline std::wstring GetModulePath(HINSTANCE hModule)

Vrátí také úplnou cestu k souboru .exe nebo .dll s popisovačem instance, který poskytnete této metodě:

static inline std::wstring GetModuleFilename(HINSTANCE hModule)

Třída vrátí úplnou cestu a název souboru .exe a .dll souboru s popisovačem instance, který poskytnete této metodě:

static inline std::wstring GetDirectoryName(LPCWSTR fullName)

. . . nebo jenom cestu při odebírání názvu souboru:

static inline std::wstring GetFileName(LPCWSTR fullName)

Vzhledem k cestě s názvem souboru vrátí pomocná třída cesty pouze název souboru:

static inline std::wstring Combine(LPCWSTR path, LPCWSTR name)

Nakonec třída vrátí nový řetězec, který představuje kombinovanou cestu a název souboru (nebo jinou cestu).

Třída šablony ukazatele

Tato třída je definována v souboru Pointer.h. Vzhledem k tomu, že komponenty modelu COM používají počítání referencí pro správu životnosti, je důležité, abyste rozhraní vždy uvolnili, jakmile s nimi skončíte. Microsoft poskytuje třídu šablony, která automaticky zpracovává dobu života. Pokud například chcete inteligentní ukazatel pro rozhraní XML, můžete napsat něco podobného:

Pointer<IXMLDOMNode> pNewChild
pXmlDom->CreateNode(NODE_ELEMENT, L"MyElement", L"", &pNewChild);

První řádek definuje inteligentní ukazatel. Druhý řádek ukazuje načtení inteligentního ukazatele prostřednictvím jiného volání. Operátor & vždy uvolní existující rozhraní, pokud ho obsahuje, a vrátí adresu interního ukazatele. Jakmile načtete ukazatel, jako je tento, instance ukazatele zavolá release za vás, když proměnná překročí rozsah. Microsoft doporučuje, abyste místo ručního volání addRef a Release použili inteligentní ukazatele.

Kromě toho , ukazatel inteligentní ukazatel volá QueryInterface načíst další rozhraní za vás. Když například registr továrny vytvoří novou instanci komponenty, má kód podobný tomuto:

PWizardComponent pComp = pUnknown;
if (pComp != nullptr)
    pComp->SetContainer(m_pContainer);

První řádek volá QueryInterface na pozadí pro vyžádání IWizardComponent rozhraní. Výsledný inteligentní ukazatel se rovná hodnotě nullptr , pokud komponenta nepodporuje toto rozhraní.

PUnknown – třída

Tato třída je inteligentní ukazatel speciálně pro rozhraní IUnknown . Pro všechna ostatní rozhraní použijte třídu šablony Ukazatel .

Pomocná třída StringUtil

Tato třída je definována v Utilities.h a poskytuje pomocné metody, které usnadňují práci s řetězci:

static inline int CompareIgnore(LPCWSTR first, LPCWSTR second)

Tato metoda porovnává dva řetězce a ignoruje velká písmena (viz tabulka 9).

Tabulka 9. Pomocná třída StringUtil

Vrátí Popis
0 Řetězce se shodují a ignorují se malá a velká písmena.
<0 První sekunda <
>0 První sekunda >

Tady je příklad:

static inline std::wstring Format(LPCWSTR input, int index, LPCWSTR value)
static inline std::wstring Format(LPCWSTR input, int index, DWORD value)

Tyto metody se trochu podobají metodám Microsoft .NET Format v tom smyslu, že parametry jsou ve tvaru {0}. Neprovádějí ale žádné formátování vstupu – pouze nahrazení:

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)

Jedná se o obálky kolem StringCchPrintf , které vrací wstring , takže nemusíte přidělovat paměť pro řetězce nebo vyrovnávací paměti sami.

Třída šablony SubInterface

Tato základní třída usnadňuje implementaci komponenty, která podporuje rozhraní, které samotné dědí z jiného rozhraní. Například ICheckBox rozhraní dědí z IControl. Tady je postup, jak se tato třída používá k definování CheckBoxWrapper:

classCheckBoxWrapper :public SubInterface<IControl, UnknownImpl<ICheckBox> >

Základní rozhraní je prvním parametrem, zatímco odvozené rozhraní je druhým parametrem.

Třída šablony UnknownImpl

Tato třída je definována v UnknownImpl.h a zpracovává většinu podrobností o vytvoření komponenty MODELU COM. Tady je příklad použití této základní třídy:

classDirectory :public UnknownImpl<IDirectory>

Tento kód definuje třídu, která podporuje rozhraní IDirectory .

WizardComponent – třída šablony

Tato třída je definována v IWizardComponent.h a je užitečnou základní třídou pro vytváření komponent, které potřebují přístup ke službám průvodce, jako je vytváření a protokolování komponent.

Tady je příklad, jak je definována komponenta CopyFilesTask :

classCopyFilesTask :public WizardComponent<ITask>
{
    ...

Parametrem pro tuto třídu šablony je "main" rozhraní, které chcete použít pro vaši komponentu, což je v případě úloh ITask. Použití WizardComponent znamená, že vaše komponenta podporuje rozhraní, které poskytujete (V tomto příkladu ITask ) i IWizardComponent.

Kdykoli použijete registr objektu pro vytváření tříd k vytvoření nové komponenty, registr volá komponentu IWizardComponent-SetContainer> metoda poskytnout komponentě přístup ke službám průvodce.

WizardPageImpl – třída šablony

Tuto třídu použijte jako základní třídu pro vlastní stránky – například:

class LocationPage :public WizardPageImpl<IDD_LOCATION_PAGE>

Parametr je ID prostředku pro šablonu dialogového okna.

Rozhraní stránky průvodce

Průvodce UDI používá rozhraní pro přístup k různým ovládacím prvkům na stránce. Na stránce můžete pomocí funkce GetControlWrapper načíst obálku ovládacího prvku. Tady je příklad:

PStaticText pFormat;
GetControlWrapper(View(), IDC_CHECK_PARTITION, CONTROL_STATIC_TEXT, &pFormat);

Zde PStaticText je inteligentní ukazatel na IStaticText rozhraní. Inteligentní ukazatele automaticky volají metodu COM Release(), když se dostanou mimo rozsah nebo předáte adresu proměnné (například &pFormat) metodě.

IADHelper – rozhraní

__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)

Inicializuje tuto komponentu a předá ji protokolovacímu nástroji, aby mohl protokolovat informace.

HRESULTValidLogon(uživatelské jméno LPCTSTR, heslo LPCTSTR, doména LPCTSTR)

Tato metoda ověřuje, zda je sada přihlašovacích údajů platná, jak je znázorněno v tabulce 10.

Tabulka 10. HResultValidLogon

Hresult Popis
S_OK Přihlašovací údaje jsou platné.
S_FALSE Přihlašovací údaje nejsou platné.
E_FAIL Nelze najít řadič domény. Kontrola podrobností v protokolech
HRESULT HasAccess(uživatelské jméno LPCTSTR, heslo LPCTSTR, doména LPCTSTR, název počítače LPCTSTR, doména účtu LPCTSTR)

Tato metoda ověřuje, jestli má sada přihlašovacích údajů přístup pro čtení a zápis k objektu počítače ve službě AD DS, jak je znázorněno v tabulce 11.

Tabulka 11. HResult HasAccess

HRESULT Popis
S_OK Uživatel má přístup
E_FAIL Uživatel nemá přístup. Další informace najdete v souboru protokolu.

IBackgroundTask – rozhraní

__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);
};
Přehled

Stránka Průběh používá tuto třídu ke spouštění úloh v samostatném vlákně. Tuto třídu můžete také použít, kdykoli chcete provádět operace v samostatném vlákně. Úkoly jsou všechny třídy, které podporují rozhraní ITask .

Toto rozhraní je implementováno komponentou ID_BackgroundTask ("Microsoft.Wizard.BackgroundTask") definovanou v rozhraní IBackgroundTask.h.

HRESULT Init(ITask *pTask, id int, IBackgroundCallback *pCallback)

Toto rozhraní inicializuje komponentu, jak je znázorněno v tabulce 12.

Tabulka 12. HRESULT Init

Parametr Popis
pTask Ukazatel na třídu obsahující kód, který chcete spustit v jiném vlákně
Id Číslo, které můžete použít v metodě zpětného volání Finished k určení, která úloha skončila spuštěna; užitečné, pokud spustíte několik úloh se stejnou metodou zpětného volání.
pCallback Třída, která implementuje metodu Finished , která je volána vždy, když úkol dokončí spuštění; volání metody Finished bude ve vlákně na pozadí, ne ve vlákně uživatelského rozhraní.
void Start(void)

Tato metoda spustí úlohu na pozadí vlákna a vrátí prvky uvedené v tabulce 13.

Tabulka 13. Vrátit vlákno na pozadí

Vrátí Popis
E_INVALIDARG Úloha je již spuštěná, takže ji teď nemůžete spustit.
E_FAIL Při spuštění vlákna došlo k potížím.
S_OK Vlákno bylo spuštěno.
BOOL Running()

Tato metoda vrátí hodnotu TRUE, pokud je úloha na pozadí aktuálně spuštěná, a NEPRAVDA, pokud není spuštěná.

HRESULT Wait(DWORD waitMilliseconds)

Tato metoda počká, dokud vlákno nepřestane běžet nebo než uplynou počet milisekund.

HRESULT Terminate(DWORD exitCode)

Tato metoda ukončí spuštěné vlákno (viz Tabulka 14 a Tabulka 15). Dokončení tohoto procesu může po vrácení této metody trvat krátkou dobu.

Tabulka 14. Ukončovací kód UKONČENÍ HRESULT

Parametr Popis
Exitcode Ukončovací kód, který se odešle do metody zpětného volání Finished, která bude také k dispozici z GetExitCode metoda.

Tabulka 15. Kódy ukončení

Vrátí Popis
E_FAIL Volání k ukončení se nezdařilo.
S_OK Žádost o ukončení vlákna byla úspěšná.
HRESULT GetExitCode(LPDWORD pCode, HRESULT *pHresult)

Pomocí této metody získáte výsledky spuštění úlohy na vlákně na pozadí (viz tabulka 16).

Tabulka 16. Kódy výsledků

Parametr Popis
pCode Ukazatel na hodnotu DWORD , která se nastaví při návratu nebo nullptr , pokud návratovou hodnotu nepotřebujete. Při ukončení je tento parametr nastaven na STILL_ACTIVE pokud je vlákno spuštěno, kód vrácený metodou Execute úlohy nebo hodnotu předanou metodě Terminate , pokud jste volali tuto metodu.
pHresult Ukazatel na hodnotu HRESULT , která bude nastavena na return nebo nullptr , pokud nepotřebujete hodnotu HRESULT .
HRESULT Close(void)

Tato metoda uvolní vlákno na pozadí. Vrátí E_INVALIDARG , pokud je vlákno aktuálně spuštěné a S_OK jinak.

ICheckBox – rozhraní

__interface ICheckBox : IControl
{
    void Check(BOOL check);
    BOOL IsButtonChecked();
};
void Check(bool check)

Nastavte zaškrtnutý stav zaškrtávacího políčka. Pokud je metoda TRUE, zaškrtávací políčko je zaškrtnuto; pokud je metoda NEPRAVDA, políčko není zaškrtnuté.

BOOL IsButtonChecked()

Tato metoda hlásí aktuální stav zaškrtávacího políčka.

IComboBox – rozhraní

__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();
};
Přehled

Toto rozhraní je implementováno pomocí komponenty CheckBoxWrapper . Instanci této komponenty načtete pomocí pomocné funkce GetControlWrapper s typem CONTROL_COMBO_BOX.

HRESULT Bind([in] IBindableList *pList)

Tuto metodu použijte, pokud máte zdroj dat, který implementuje rozhraní IBindableList . Seznam inicializuje obsah s titulky z tohoto seznamu.

HRESULT Select(index int)

Vyberte položku v poli se seznamem v indexu.

int Selected(void)

Tato metoda vrátí index vybrané položky nebo -1 , pokud není vybrána žádná položka.

void Add([in] LPCTSTR popis)

Ručně přidejte položku do pole se seznamem.

HRESULT GetText([out, retval] LPBSTR pText)

Načtěte řetězec aktuálně vybrané položky v poli se seznamem.

void Clear()

Odeberte všechny položky z pole se seznamem.

IControl – rozhraní

__interface IControl : IUnknown
{
    HRESULT SetEnable(BOOL enable);
    BOOL IsEnabled(void);
    HRESULT SetVisible(BOOL visible);
};
Přehled

Toto rozhraní je implementováno controlWrapper komponenta. Instanci této komponenty načtete pomocí pomocné funkce GetControlWrapper s typem CONTROL_GENERIC.

HRESULT SetEnable (povolení BOOL)

Povolte nebo zakažte ovládací prvek.

BOOL IsEnabled(void)

Vrátí hodnotu TRUE, pokud je ovládací prvek povolený, false, pokud není povolený.

HRESULT SetVisible (bool visible)

Zobrazí nebo skryje ovládací prvek.

ICpuInfo – rozhraní

__interface ICpuInfo : IUnknown
{
    BOOL Is64Bit(void);
};
Přehled

Toto rozhraní získáte vytvořením nové komponenty ID_CpuInfo . Jedna metoda hlásí, jestli je procesor 32 nebo 64 bitů. Všimněte si, že pokud máte 32bitový operační systém v 64bitovém počítači, vrátí tato metoda hodnotu PRAVDA, protože hlásí pouze šířku procesoru (ne operačního systému).

IDirectory – rozhraní
__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);
};
Přehled

Komponenta Directory , kterou vytvoříte pomocí ID_Directory, poskytuje fasádu pro práci s adresáři v systému souborů.

BOOL FileExists(název LPCWSTR)

Tato metoda vrátí hodnotu TRUE, pokud existuje soubor s názvem, který zadáte.

BOOL FindFirst([in] Název LPCWSTR)

Tato metoda najde první shodu pro zadaný název. Podporuje zástupné znaky a vrací názvy souborů i adresářů. Metoda vrátí hodnotu TRUE, pokud byla nalezena shoda, v opačném případě false.

HRESULT FoundName([out, retval] Název LPBSTR)

Tato metoda načte název nalezeného souboru s voláním FindFirst nebo FindNext.

DWORD FoundAttributes(void)

Tato metoda vrátí atribut pro naposledy nalezený soubor nebo adresář. Pomocí následujícího kódu můžete otestovat, jestli se jedná o adresář:

pDirectory->FoundAttributes() & FILE_ATTRIBUTE_DIRECTORY
BOOL FindNext(void)

Najděte další. Tato metoda vrátí hodnotu TRUE, pokud byla nalezena jiná shoda, jinak NEPRAVDA.

void FinishFind(void)

Tato metoda uvolní prostředky používané pro operaci Najít.

IDomainJoinValidator – rozhraní

__interface IDomainJoinValidator : IUnknown
{
    HRESULT Init(ILogger *pLogger, IWizardPageContainer *pContainer, IStaticText *pUsername, IStaticText *pPassword, IStaticText *pComputerName);
    HRESULT IsUsernameValid(LPCWSTR domainName);
    BOOL CanModifyComputerAdEntry(LPCWSTR domainName);
};
Přehled

Instanci tohoto rozhraní získáte pomocí hodnoty ID_DomainJoinValidator do funkce šablony CreateInstance .

HRESULT Init(ILogger *pLogger, IWizardPageContainer *pContainer, IStaticText *pUsername, IStaticText *pPassword, IStaticText *pComputerName)

Inicializace instance, jak je znázorněno v tabulce 17.

Tabulka 17. HRESULT Init – inicializace instance

Parametr Popis
pLogger Instance protokolovacího nástroje, která je k dispozici pro vaši stránku prostřednictvím metody Logger stránky
pKontejner Předá výsledky z metody kontejneru vaší stránky.
pUsername Textové pole obsahující uživatelské jméno, které se má ověřit
pPassword Textové pole obsahující heslo, které se má ověřit
PComputerName Textové pole obsahující název počítače, který se nakonec připojí k doméně
HRESULT IsUsernameValid(LPCWSTR domainName)

Tato metoda používá metodu IADHelper-ValidLogon> k provedení práce. Podrobnosti najdete v této metodě.

BOOL CanModifyComputerAdEntry(LPCWSTR domainName)

Ověřte, jestli má uživatel oprávnění k úpravě položky počítače. Většinu práce provádí IADHelper-HasAccess>. Pokud tato metoda vrátí hodnotu FALSE, zkontrolujte podrobnosti v souboru protokolu.

IDriveList – rozhraní

__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)

Volejte tuto metodu před voláním jakýchkoli jiných komponent. Před voláním této metody budete muset vytvořit novou WmiRepository .

HRESULT SetWhereClause(LPCTSTR whereClause)

Tato metoda umožňuje přidat text, který se v dotazu zobrazí jako klauzule "where". Například následující řádek vrátí pouze jednotky USB:

pDrives->SetWhereClause(L"WHERE InterfaceType='USB'");
HRESULT SetMinimumDriveSize(__int64 velikost)

Nastavte minimální velikost jednotky v bajtech pro jednotky, které budou vráceny z dotazu.

Aktualizace HRESULT(void)

Spusťte dotaz. Seznam jednotek, který je k dispozici po volání této metody, je seřazen podle písmen jednotky.

HRESULT AddProperty(ENUM_DISK_QUERY_SECTION section, LPCTSTR propName, LPCTSTR propNameReturned)

Tato metoda přidá názvy dalších vlastností, které chcete zpřístupnit ve výsledcích dotazu. Volejte tuto metodu před voláním update. V tabulce 18 jsou tři užitečné vlastnosti.

Tabulka 18. HRESULT AddProperty: Užitečné vlastnosti

Oddíl Vlastnost Popis
DISKQUERY_LOGICALDISK Velikost Velikost v bajtech reprezentovaná jako řetězec
DISKQUERY_DISKPARTITION DiskIndex Číslo disku jako celé číslo začínající na 0
DISKQUERY_LOGICALDISK Název svazku Popisek svazku
size_t Count(void)

Počet záznamů, které dotaz vrátí. Před voláním této metody volejte update .

HRESULT GetProperty(index size_t, LPCTSTR propName, hodnota LPVARIANT)

Tato metoda načte hodnotu vlastnosti z výsledků dotazu, jak je znázorněno v tabulce 19.

Tabulka 19. HRESULT GetProperty

Parametr Popis
Index Nulový index záznamu výsledku
propName Název vlastnosti, například Velikost
Hodnota Při vrácení obsahuje tento parametr hodnotu varianty vlastnosti.
HRESULT GetCaption(index size_t, LPBSTR pCaption)

Tato metoda načte popis záznamu, který je stejný jako vlastnost Caption.

IImageList – rozhraní

__interface IImageList
{
    HRESULT CreateImageList(int width, int height, UINT flags);
    HImageList GetImageList(void);
    int AddImage(HInstance hInstance, int resourceId);
};
Přehled

Toto rozhraní je implementováno imageList komponenta. Načtete instanci této komponenty z rozhraní IListView .

HRESULT CreateImageList(šířka int, výška int, příznaky UINT)

Vytvořte nový seznam imagí, který tato komponenta spravuje. Volejte tuto metodu pouze jednou.

HImageList GetImageList(void)

Tato metoda vrátí popisovač pro seznam imagí v případě, že potřebujete v seznamu imagí provést jiné operace.

int AddImage(HInstance hInstance, int resourceId)

Přidejte do seznamu obrázků nový obrázek z prostředku, jak je znázorněno v tabulce 20.

Tabulka 20. HRESULT IImageList – rozhraní

Parametr Popis
hInstance Obslužný rutina instance modulu, který obsahuje prostředek rastrového obrázku
Resourceid ID prostředku, který se má načíst do seznamu imagí

IListView – rozhraní

__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);
};
Přehled

Toto rozhraní je implementováno controlWrapper komponenta. Instanci této komponenty načtete pomocí pomocné funkce GetControlWrapper s typem CONTROL_LIST_VIEW.

int AddItem([in] Text LPCTSTR)

Přidejte do seznamu nový řádek. Metoda vrátí index právě přidané položky.

int AddColumn(šířka int, [in] Text LPCTSTR)

Přidejte nový sloupec do zobrazení seznamu.

HRESULT SetSubItem(index int, sloupec int, [in] text LPCTSTR)

Nastavte text v jiném než prvním sloupci seznamu, jak je znázorněno v tabulce 21.

Tabulka 21. HRESULT SetSubItem

Parametr Popis
Index Index položky seznamu, kterou chcete upravit
Sloupec Index sloupce, který chcete aktualizovat; první sloupec je nastaven pomocí AddItem, sloupce dva a následující jsou nastaveny pomocí této metody
Text Řetězec, který se má zobrazit ve sloupci
int GetWidth(void)

Tato metoda vrátí šířku celého textového pole.

void SetExtendedStyle(styl DWORD)

Tato metoda umožňuje nastavit rozšířené styly v seznamu, například:

m_pList->SetExtendedStyle(LVS_EX_FULLROWSELECT);
int GetSelectedItem(void)

Tato metoda vrátí index aktuálně vybrané položky zobrazení seznamu.

HRESULT SelectItem(index int)

Nastavte vybranou položku v seznamu na tento index.

BOOL IsItemChecked(index int)

Tato metoda vrátí hodnotu TRUE, pokud je vybrána položka v seznamu. Tato metoda vyžaduje volání SetExtendedStyle nastavit styl zaškrtávacího políčka.

int GetItemCount(void)

Tato metoda vrátí počet položek v zobrazení seznamu.

HRESULT CreateImageList(šířka int, výška int, příznaky UINT)

Vytvořte nový seznam obrázků a připojte ho k zobrazení seznamu.

int AddImage(HINSTANCE hInstance, int resourceId)

Přidejte obrázek do seznamu obrázků v zobrazení seznamu. Nejdřív je potřeba zavolat CreateImageList.

HRESULT SetImage(index int, int imageIndex)

Nastavte obrázek, který se zobrazí na levé straně pro konkrétní položku zobrazení seznamu.

HRESULT Clear(void)

Odeberte všechny položky ze zobrazení seznamu.

IProgressBar – rozhraní

__interface IProgressBar : IControl
{
    HRESULT SetPercentage(int position);
    int GetPercentage(void);
};
Přehled

Toto rozhraní je implementováno ProgressBarWrapper komponenta . Instanci této komponenty načtete pomocí pomocné funkce GetControlWrapper s typem CONTROL_PROGRESS_BAR.

HRESULT SetPercentage(pozice int)

Nastavte pozici indikátoru průběhu pomocí čísla mezi 0 a 100. Ve výchozím nastavení mají nové indikátory průběhu Win32® maximální rozsah 100.

int GetPercentage(void)

Tato metoda vrátí aktuální pozici indikátoru průběhu.

IRadioButton – rozhraní

__interface IRadioButton : IControl
{
public:
    void SetGroup(int firstId, int lastId);
    void CheckRadio(int id);
    BOOL IsButtonChecked(int id);
    void EnableRadio(int id, BOOL enable);
};
Přehled

Toto rozhraní je implementováno RadioButtonWrapper komponenta . Instanci této komponenty načtete pomocí pomocné funkce GetControlWrapper s typem CONTROL_RADIO_BUTTON.

void SetGroup(int firstId, int lastId)

Zadejte do obálky rozsah přepínačů, která by měla být považována za skupinu. Volejte tuto metodu před voláním CheckRadio.

void CheckRadio(id int)

Nastavte konkrétní přepínač na jedno tlačítko ve skupině vybraných přepínačů. Před voláním této metody volejte SetGroup .

BOOL IsButtonChecked(id int)

Tato metoda vrátí hodnotu TRUE, pokud je přepínač aktuálně vybraný, v opačném případě false.

void EnableRadio(id int, bool enable)

Tato metoda povolí nebo zakáže přepínač.

IStaticText – rozhraní

__interface IStaticText : IControl
{
    HRESULT SetText([in] LPCTSTR pText);
    HRESULT GetText([out, retval] LPBSTR pText);
};
Přehled

Toto rozhraní je implementováno StaticTextWrapper komponenta . Instanci této komponenty načtete pomocí pomocné funkce GetControlWrapper s typem CONTROL_STATIC_TEXT.

HRESULT SetText([in] LPCTSTR pText)

Nastavte text ovládacího prvku.

HRESULT GetText([out, retval] LPBSTR pText)

Tato metoda vrátí aktuální hodnotu textu ovládacího prvku.

ITask – rozhraní

__interface IControl : IUnknown
{
    HRESULT Init(IStringProperties *pProperties, ISettingsProperties *pTaskSettings);
    HRESULT Execute(LPDWORD pReturnCode);
};

Toto rozhraní implementujte, pokud chcete, aby vaše komponenta byla k dispozici jako úloha na stránce před výstupem nebo pokud chcete použít backgroundTask komponentu k provádění práce na vlákně na pozadí.

Tady jsou komponenty, které implementují rozhraní ITask :

  • 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)

Pokud píšete úkol pro předběžnou stránku, voláním této metody inicializujete úkol. Soubor .config obsahuje soubor XML, který může vypadat nějak takto:

<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>

Parametr pProperties poskytuje přístup ke třem hodnotám setter, zatímco parametr pTaskSettings poskytuje přístup k elementu Task a podřízeným položkám. Většina úloh potřebuje číst data jenom z parametru pProperties .

Provést
HRESULT Execute(LPDWORD pReturnCode)

Tady je místo, kde napíšete kód, který provádí úlohu. Tato metoda by měla vrátit S_OK , pokud nedošlo k žádným chybám, a může vrátit další hodnotu HRESULT , pokud došlo k chybě během běhu úlohy. Jiné hodnoty než S_OK , které tato metoda vrací, jsou porovnány s <prvky Error> v <části ExitCodes> , pokud používáte předběžnou stránku.

Parametr pReturnCode musí být aktualizován číslem, které hlásí stav úlohy. Tyto hodnoty jsou spárovány předběžnou stránkou s <prvky ExitCode> .

ITreeView – rozhraní

__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);
};
Přehled

Toto rozhraní je implementováno TreeViewWrapper komponenta . Instanci této komponenty načtete pomocí pomocné funkce GetControlWrapper s typem CONTROL_TREE_VIEW.

void EnableCheckboxes(void)

Tato metoda zapne zaškrtávací políčka v ovládacím prvku stromového zobrazení nastavením stylu TVS_CHECKBOXES .

HRESULT CreateImageList(šířka int, výška int, příznaky UINT)

Přidejte nový seznam obrázků do ovládacího prvku stromové zobrazení. Parametr flags se předává ve volání funkce ImageList_Create Win32.

int AddImage(HINSTANCE hInstance, int resourceId)

Přidejte do seznamu imagí image z prostředku (resourceId) v modulu s popisovačem instance hInstance.

HTREEITEM AddItem(LPCTSTR text, HTREEITEM hParent = NULL)

Přidejte uzel do stromového zobrazení. Pokud má hParent hodnotu NULL, přidá se nový uzel na nejvyšší úrovni. V opačném případě zadejte popisovač nadřazené položky, kam chcete novou položku přidat. Tato metoda vrátí popisovač nové položky.

void SetImage(HTREEITEM item, int image, int expandImage)

Nastavte obrázek, který se má použít pro položku stromového zobrazení. Můžete nastavit normální i rozbalený obrázek.

void Clear(void)

Odeberte všechny položky ze stromového zobrazení.

BOOL SetFirstVisible(položka HTREEITEM)

Ujistěte se, že je položka stromového zobrazení viditelná. Stromové zobrazení se v případě potřeby posune, aby byla tato položka viditelná.

BOOL SelectItem(položka HTREEITEM)

Nastavte aktuálně vybranou položku na položku, kterou zadáte. Potom můžete volat SetFirstVisible , abyste zajistili, že je nově vybraná položka viditelná.

void CheckItem(položka HTREEITEM, UINT checkState)

Metoda v podstatě nastaví obrázek, který se zobrazí pro zaškrtávací políčko ve stromovém zobrazení. Tyto obrázky jsou v samostatném ovládacím prvku ImageList , který spravuje stromové zobrazení. Ve výchozím nastavení obsahuje tento seznam obrázků tři obrázky, které jsou znázorněny v tabulce 22.

Tabulka 22.void CheckItem – výchozí nastavení seznamu obrázků

Checkstate Popis
0 Prázdné
1 Vymazány
2 Vybrané
HTREEITEM SelectedItem(void)

Tato metoda vrátí popisovač aktuálně vybrané položky stromového zobrazení.

int SetItemHeight(KRÁTKÁ výška)

Tato metoda nastaví výšku všech položek v ovládacím prvku stromového zobrazení v pixelech. Vrátí předchozí výšku v pixelech.

HRESULT EnableItem(HTREEITEM item, BOOL enable)

Tato metoda povolí nebo zakáže jednu položku ve stromu. Zakázáním položky s podřízenými položkami se podřízené položky nezakážou.

void Expand(HTREEITEM hItem, BOOL expand)

Tato metoda rozbalí nebo sbalí uzel ve stromu.

HTREEITEM GetChild(HTREEITEM hParent)

Tato metoda vrátí první podřízený prvek položky stromového zobrazení nebo hodnotu NULL, pokud neexistují žádné podřízené položky.

HTREEITEM GetParent(HTREEITEM hNode)

Tato metoda vrátí popisovač nadřazeného uzlu ve stromovém zobrazení nebo NULL, pokud je uzel na nejvyšší úrovni.

HTREEITEM GetNextItem(HTREEITEM hPrevious)

Tuto metodu můžete volat s popisovačem, který GetChild vrátí k iteraci prostřednictvím všech podřízených položek uzlu. Tato metoda vrátí další sourozenec ve stromu, který sdílí stejný nadřazený objekt.

UINT IsChecked (položka HTREEITEM)

Tato metoda vrátí hodnotu 0 , pokud není vybrán uzel stromového zobrazení, a 1 , pokud ano.

BOOL IsEnabled(HTREEITEM item)

Tato metoda vrátí hodnotu TRUE, pokud je povolen uzel stromového zobrazení, v opačném případě FALSE.

INT_PTR CommonControlEvent(WORD controlId, void* pInfo, BOOL *pCancel)

Tato metoda je určena pouze pro interní použití.

HRESULT SetEventHandler(ITreeViewEvent *pEventHandler)

Tuto metodu volejte, pokud chcete dostávat oznámení, když se změní vybraná položka nebo když uživatel změní stav kontroly položky stromového zobrazení. Musíte implementovat ITreeViewEvent v komponentě přijímat tato zpětná volání.

void SetSelectedBackColor(barva COLORREF)

Nastavte barvu pozadí použitou pro vybranou položku.

IWmiIteration – rozhraní

__interface IWmiIterator : IUnknown
{
    HRESULT Next(void);
    HRESULT GetProperty(LPCTSTR propertyName, [out] LPVARIANT pValue);
};
Přehled

Toto rozhraní se obvykle používá společně s IWmiRepository při práci s voláními rozhraní WMI. Rozhraní IWmiIteration umožňuje iterovat hodnoty, které dotaz vrací.

HRESULT Next(void)

Přejděte na další položku ve výsledcích dotazu, jak je znázorněno v tabulce 23.

Tabulka 23. HrESULT – Další (void) – vrácení dotazu

HRRESULT Popis
S_OK Přesunuto na další výsledek; Pomocí funkce GetProperty můžete načíst vlastnosti tohoto výsledku.
S_FALSE V seznamu nejsou žádné další položky.
E_NOT_SET Neexistují žádné výsledky dotazu.
HRESULT GetProperty(LPCTSTR propertyName; [out] LPVARIANT pValue)

Tato metoda načte hodnotu vlastnosti z aktuálního záznamu výsledku, jak je znázorněno v tabulce 24 a tabulce 25.

Tabulka 24. HRESULT GetProperty

Parametr Popis
Propertyname Název vlastnosti, kterou chcete načíst
pValue Odkazuje na strukturu VARIANT, která při návratu obsahuje hodnotu vlastnosti.

Tabulka 25. HRESULT GetProperty Result

HRESULT Popis
S_OK Byla načtena hodnota vlastnosti.
WBEM_E_NOT_FOUND Neexistuje žádná vlastnost s názvem.
E_NOT_VALID_STATE Neexistuje žádný aktuální záznam.

Poznámka

Metoda GetProperty může vrátit jiné kódy chyb rozhraní WMI, než jsou uvedeny v tabulce 25. Uvedené hodnoty jsou běžné výsledky, které se vrácené.

IWmiRepository – rozhraní

__interface IWmiRepository : IUnknown
{
    HRESULT SetNamespace(LPCWSTR namespaceName);
    HRESULT ExecQuery(LPCWSTR query, [out] IWmiIterator **ppIterator);
};
Přehled

Toto rozhraní je implementováno komponentou WmiRepository (ID_WmiRepository).

HRESULT SetNamespace(LPCWSTR namespaceName)

Tato metoda nastaví obor názvů rozhraní WMI, který se použije pro dotaz. Volejte tuto metodu před voláním ExecQuery. Pokud tuto metodu nezavoláte, obor názvů bude root\cimv2. Tato metoda vždy vrátí S_OK.

HRESULT ExecQuery(dotaz LPCWSTR, [out] IWmiIterator **ppIterator)

Spusťte dotaz na nastavený obor názvů rozhraní WMI s voláním setNamespace, jak je znázorněno v tabulce 26 a tabulce 27.

Tabulka 26. HRESULT ExecQuery

Parametr Popis
Dotazu Řetězec dotazu WMI, který chcete spustit
ppIterator Předání ukazatele na ukazatel rozhraní, který se při návratu vyplní rozhraním, což vám umožní přístup k výsledkům dotazu.

Tabulka 27. Výsledek dotazu HRESULT

HRESULT Popis
S_OK Dotaz byl úspěšný.
Další Pokud dotaz neprošel úspěšně, vrátí hodnotu WMI HRESULT.

IFormController – rozhraní

__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);
 };
Přehled

Každá stránka v průvodci UDI má vlastní kontroler formulářů, který implementuje toto rozhraní. Tento kontroler slouží k připojení dat pole v souboru XML .config k ovládacím prvkům na stránce. Kontroler formulářů pak spoustu podrobností zpracuje za vás.

Nastavení formuláře

Obecně nastavte kontroler formuláře v metodě OnWindowCreated stránky. To obvykle zahrnuje volání metod uvedených v tabulce 28.

Tabulka 28. OnWindowCreated – metoda

Metoda Popis
Init Inicializuje kontroler formulářů.
Přidat pole Poskytuje propojení mezi polem v souboru XML .config, který je názvem řetězce, a ovládacím prvku v dialogovém okně stránky, který je ID.
PřidatRadioGroup Slouží k připojení přepínače ke skupině i ovládacímu prvku v dialogovém okně.
PřidatToGroup Umožňuje "podřízené" ovládací prvky, které jsou povoleny nebo zakázány spolu s jejich nadřazeným nebo na základě toho, které přepínač je vybráno.
InitFields Volání po volání všech metod Add pro nastavení formuláře
Ověřit Provede počáteční ověření.
Zpracování událostí formuláře

Přidejte následující volání metody OnControlEvent :

Form()->ControlEvent(eventId, controlId);

Toto volání předává události kontroleru formuláře, aby mohl zpracovávat události související s formulářem.

Uložit data formuláře

V Metodě OnNextSelected volejte metody formuláře uvedené v tabulce 29.

Tabulka 29. OnNextSelected – metoda

Metoda Popis
InitSection Poskytuje název oddílu, který se zobrazí na stránce Souhrn pro tuto stránku.
SaveFields Uložení hodnot polí do proměnných pořadí úkolů a na stránku Souhrn
Init
HRESULT Init(IWizardPageView *pView, IWizardPageContainer *pContainer)

Tuto metodu obvykle voláte na začátku stránky OnWindowCreated metody. Příkaz by měl vypadat nějak takto:

Form()->Init(View(), Container());
SetPageInfo
HRESULT SetPageInfo(ISettingsProperties *pPageInfo)

Tato metoda se nazývá interně a neměli byste ji volat sami. Poskytuje kód XML stránky kontroleru formuláře.

Ověřit
HRESULT Validate(void)

Tato metoda spustí všechny validátory připojené k ovládacím prvkům. Pokud validátor neprojde, řadič formuláře zobrazí zprávu s upozorněním a zakáže tlačítko Další a pak zastaví zpracování validátorů. Obvykle stačí volat pouze tuto metodu na konci metody OnWindowCreated ; vždy vrátí S_OK.

PřidatToGroup
AddToGroup(int groupControlId, int controlId)

Tato metoda přidá ovládací prvek jako "podřízený" zaškrtávací políčko nebo přepínač, jak je znázorněno v tabulce 30. Všechny takové podřízené ovládací prvky budou zakázány, pokud nadřazený ovládací prvek nebude vybraný. Metoda vždy vrátí S_OK.

Tabulka 30. PřidatToGroup

Parametr Popis
groupControlId ID zaškrtávacího políčka nebo přepínače, které bude řídit stav povolení podřízeného ovládacího prvku
Controlld ID ovládacího prvku, který chcete přidat jako podřízenou
UpdateCheckGroup
HRESULT UpdateCheckGroup(int groupControlId)

Tato metoda aktualizuje stav povolení nebo zakázání podřízených ovládacích prvků skupiny na základě stavu nadřazeného ovládacího prvku. Obecně platí, že tuto metodu nemusíte volat sami, protože ovladač formuláře ji volá za vás.

AddValidator
HRESULT AddValidator(int controlId, IValidator *pValidator, IControl *pControl = 0)

Volejte tuto metodu pouze v případě, že máte validátor, který chcete vytvořit v kódu místo pomocí XML. Tato metoda vždy vrátí S_OK.

AddValidator
HRESULT AddValidator(int controlId, LPCWSTR validatorId, LPCWSTR message, IValidator **ppValidator = nullptr)

Volejte tuto metodu pouze v případě, že máte validátor, který chcete vytvořit v kódu místo pomocí XML.

DisableValidation
HRESULT DisableValidation(int controlId, BOOL disable)

Voláním této metody buď explicitně zakážete validátor pro ovládací prvek, nebo obnovíte normální ověření, jak je znázorněno v tabulce 31. Tato metoda je užitečná, například pokud máte pravidla povolení nebo zakázání ovládacích prvků, které nejsou pokryty ověřováním formulářů, a potřebujete zakázat ověřování ovládacího prvku. Jinými slovy, normálně byste tuto metodu nevolali. Tato metoda vždy vrátí S_OK.

Tabulka 31. HRESULT DisableValidation

Parametr Popis
Controlid Ovládací prvek, pro který chcete povolit nebo zakázat ověřování
Zakázat Pokud chcete zakázat ověřování, nastavte na HODNOTU PRAVDA a na HODNOTU NEPRAVDA, pokud chcete obnovit normální ověřování.
Přidat pole
HRESULT AddField(LPCWSTR fieldName, int controlId, BOOL suppressLog, DialogControlTypes type)

Přidejte mapování ovládacího prvku mezi název v elementu Pole souboru XML .config a ID ovládacího prvku v dialogovém okně stránky, jak je znázorněno v tabulce 32. Tuto metodu je nutné volat před voláním InitFields, protože InitFields používá tyto informace. Tato metoda vždy vrátí S_OK.

Tabulka 32. HRESULT AddField

Parametr Popis
Fieldname Název pole zobrazeného v KÓDU XML stránky
Controlid ID ovládacího prvku v šabloně dialogového okna stránky
suppressLog Pokud nechcete, aby se hodnoty z tohoto pole zapisují do souboru protokolu, nastavte na hodnotu TRUE. Pro pole s heslem nebo PIN kódem vždy nastavte tento parametr na HODNOTU TRUE.
Typ Typ ovládacího prvku, který je jeden z následujících:

- CONTROL_STATIC_TEXT
- CONTROL_COMBO_BOX
- CONTROL_LIST_VIEW
- CONTROL_PROGRESS_BAR
- CONTROL_GENERIC
- CONTROL_RADIO_BUTTON
- CONTROL_CHECK_BOX
- CONTROL_TREE_VIEW
PřidatRadioGroup
HRESULT AddRadioGroup(LPCWSTR groupName, int radioControlId)

Tato metoda přidá ovládací prvek do pojmenované skupiny přepínačů, jak je znázorněno v tabulce 33. Je nutné volat před InitFields metoda, protože tato metoda používá atributy v RadioGroup elementu k řízení nastavení pro všechny přepínače ovládací prvky ve skupině. Skupiny přepínačů je možné například uzamknout tak, aby byla zakázána všechna přepínače, ale podřízené ovládací prvky jsou povolené nebo zakázané jenom na základě vybraného přepínače. Tato metoda vždy vrátí S_OK.

Tabulka 33. HRESULT AddRadioGroup

Parametr Popis
Groupname Řetězec, který definuje skupinu přepínačů na této stránce
radioControlId ID jednoho přepínače, které se má přidat do této skupiny
EnableRadioGroup
HRESULT EnableRadioGroup(LPCWSTR groupName, BOOL enable)

Tato metoda umožňuje povolit nebo zakázat celou skupinu přepínačů. Zakázání skupiny přepínačů zakáže všechny ovládací prvky přepínačů ve skupině a také všechny podřízené položky přepínačů, které byly přidány pomocí funkce AddToGroup. Viz tabulka 34 a tabulka 35.

Tabulka 34. EnableRadioGroup

Parametr Popis
Groupname Název skupiny přepínačů, kterou jste už definovali voláním AddRadioGroup
Povolit Pokud chcete povolit skupinu přepínačů, nastavte hodnotu PRAVDA a nastavte hodnotu FALSE, pokud chcete tuto skupinu zakázat.

Tabulka 35. HRESULT EnableRadioGroup

HRESULT Popis
S_OK Povolená nebo zakázaná skupina
E_INVALIDARG Neexistuje žádná skupina přepínačů s názvem, který jste zadali.
InitFields
HRESULT InitFields(IFieldCallback *pFieldCallback = nullptr)

Před voláním této metody volejte AddField pro každé pole, které xml může řídit. Tato metoda vždy vrátí S_OK.

Parametr pFieldCallback je volitelný. Pokud ho zadáte, ovladač formuláře volá SetFieldDefault pro ovládací prvky, které nejsou CONTROL_STATIC_TEXT nebo CONTROL_CHECK_BOX. Toto chování umožňuje načíst výchozí hodnotu z XML a nastavit ji v ovládacím prvku sami.

SaveFields
HRESULT SaveFields(IFieldCallback *pFieldCallback = nullptr)

Tato metoda ukládá hodnoty polí do proměnných pořadí úkolů a do souhrnných dat, která se zobrazí na stránce Souhrn . Poskytnutí ukazatele v pFieldCallback umožňuje zpracovat ukládání hodnot pro ovládací prvky, které nepodporují CONTROL_STATIC_TEXT.

IsFieldDisabled
BOOL IsFieldDisabled(int controlId)

Tato metoda umožňuje určit, zda bylo pole v XML zakázáno.

InitSection
HRESULT InitSection(LPCWSTR key, LPCWSTR sectionCaption)

Tato metoda inicializuje souhrnná data, která se zobrazí na stránce Souhrn , jak je znázorněno v tabulce 36. Volejte tuto metodu v metodě OnNextSelected před voláním SaveFields. Tato metoda vždy vrátí S_OK.

Tabulka 36. HRESULT InitSection

Parametr Popis
Klíč Tento parametr by měl být pro vaši stránku jedinečný. Používá se k zajištění, aby každá stránka měl své vlastní souhrnné informace.
sectionCaption Záhlaví, které se zobrazí na stránce Souhrn souhrnných informací této stránky. Obvykle se jako hodnota tohoto parametru používá DisplayName().
AddSummaryItem
HRESULT AddSummaryItem(LPCWSTR first, LPCWSTR second)

Tato metoda umožňuje přidat souhrnné položky na stránku Souhrn nad a nad ty položky nastavené pomocí XML. Viz tabulka 37.

Tabulka 37. HRESULT AddSummaryItem

Parametr Popis
První Popis souhrnné položky, která se zobrazuje na levé straně
Druhé Hodnota, která se zobrazí na pravé straně
SuppressLogValue
HRESULT SuppressLogValue(LPCWSTR tsVariableName)

Volání této metody pro proměnné pořadí úkolů, pro které nechcete, aby hodnoty byly zapsány do souboru protokolu. Volání této metody pro proměnné pořadí úkolů, které ukládají hesla, PIN kódy nebo jiné citlivé hodnoty, které může uživatel zadat.

Uložit Text
HRESULT SaveText(int controlId, LPCWSTR tsVariableName, LPCWSTR summaryCaption)

Tato metoda uloží hodnotu textového ovládacího prvku jak do proměnné pořadí úkolů, tak do souhrnného oddílu. Obvykle nebudete muset volat tuto metodu sami, protože kontroler formuláře to dělá pro všechna pole. Viz tabulka 38.

Tabulka 38. HRESULT SaveText

Parametr Popis
Controlid ID textového pole obsahujícího hodnotu, kterou chcete uložit (nebo jakýkoli jiný ovládací prvek, který může vrátit text)
tsVariableName Název proměnné pořadí úkolů, kterou chcete upravit
summaryCaption Popis na stránce Souhrn pro tuto hodnotu
Načíst text
HRESULT LoadText(int controlId, LPCWSTR tsVariableName)

Tato metoda načte hodnotu proměnné pořadí úkolů a nastaví textové pole na tuto hodnotu.

ControlEvent
void ControlEvent(WORD eventId, WORD controlId)

Volejte tuto metodu na metodu OnControlEvent , abyste zajistili, že kontroler formuláře může zpracovávat řídicí události, které musí provést, aby fungoval správně. Hodnoty, které předáte této metodě, jsou stejné hodnoty předané OnControlEvent metoda.

Isvalid
BOOL IsValid(void)

Tato metoda vrátí stav posledního ověření formuláře. Pokud některý z validátorů ovládacích prvků ohlásil chybu, vrátí tato metoda hodnotu FALSE. Jinými slovy, vrátí hodnotu PRAVDA pouze v případě, že jsou všechny ovládací prvky na stránce platné.

IValidator – rozhraní

__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);
};
Přehled

Validátory jsou komponenty, které můžou ověřit jeden ovládací prvek na stránce. Nejjednodušší způsob, jak implementovat validátor, je vytvořit z něj podtřídu Třídy BaseValidator , která je definována v souboru hlavičky BaseValidator.h.

HRESULT Init(IControl *pControl, zpráva LPCTSTR)

Pokud vytvoříte validátor v kódu, můžete voláním této metody inicializovat validátor. Viz tabulka 39.

Tabulka 39. HRESULT Init

Parametr Popis
pControl Ovládací prvek, který musí validátor ověřit
Zpráva Zpráva, která se má zobrazit na stránce, pokud ovládací prvek není platný
HRESULT Init(IControl *pControl, IWizardPageContainer *pContainer, IStringProperties *pVlastnosti)

Kontroler formulářů volá tuto metodu k inicializaci validátorů, které vytvoří na základě xml stránky. Viz tabulka 40.

Tabulka 40. HRESULT Init – metoda

Parametr Popis
pControl Ovládací prvek, který musí validátor ověřit
pKontejner V případě, že validátor potřebuje přístup k protokolovacímu nástroji nebo potřebuje vytvořit další komponenty
pVlastnosti Poskytuje přístup k vlastnostem (elementům setter) pro validátor.
BOOL, IsValid(LPBSTR pMessage)

Tato metoda vrátí hodnotu TRUE, pokud je ovládací prvek platný, nebo NEPRAVDA, pokud je ovládací prvek neplatný. Při návratu by měla být pMessage vyplněna novým BSTR , který obsahuje zprávu, která se má zobrazit, když ovládací prvek není platný.

HRESULT SetProperty(int propertyId, LPVARIANT pValue)

Tuto metodu můžete implementovat, pokud potřebujete další hodnoty, které nejsou k dispozici v XML.

HRESULT SetProperty(int propertyId, IUnknown *pUnknown)

Tuto metodu můžete implementovat, pokud potřebujete další hodnoty, které nejsou k dispozici v XML.

HRESULT SetProperty)(int propertyId, LPCTSTR pValue)

Tuto metodu můžete implementovat, pokud potřebujete další hodnoty, které nejsou k dispozici v XML.

IRegEx – rozhraní

__interface IRegEx : IUnknown
{
    BOOL MatchesRegex(LPCTSTR input, LPCTSTR regex);
    HRESULT GetMatch(size_t index, LPBSTR pValue);
};

Tato metoda je implementována komponentou ID_Regex (IRegex.h) a poskytuje podporu pro zpracování regulárních výrazů.

BOOL MatchesRegex(vstup LPCTSTR, regex LPCTSTR)

Tato metoda spustí regulární výraz pro vstupní text. K provedení skutečné práce používá funkci regex_match standardní knihovny jazyka C++. Metoda vrátí hodnotu TRUE, pokud byly nalezeny shody, v opačném případě NEPRAVDA.

HRESULT GetMatch(index size_t, LPBSTR pValue)

Tato metoda umožňuje načíst shody z nejnovějšího volání MatchesRegex . Všimněte si, že tato metoda neobsahuje žádné zpracování chyb a buď vrátí S_OK , nebo vyvolá výjimku.

ISummaryInfo – rozhraní

__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);
};

Toto rozhraní byste neměli používat přímo. Místo toho použijte IFormController.

ISummaryBag

__interface ISummaryBag : IUnknown
{
    size_t Count(void);
    HRESULT GetInfoByIndex(size_t index, [out] ISummaryInfo **ppSummary);
    HRESULT GetInfoByKey(LPCTSTR key, [out] ISummaryInfo **ppSummary);
};

Toto rozhraní byste neměli používat přímo. Místo toho použijte IFormController.

ITSVariableBag – rozhraní

__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);
};

Toto rozhraní poskytuje přístup k proměnným pořadí úkolů. K tomuto rozhraní můžete přistupovat pomocí metody TSVariables() vaší stránky.

void GetValue([in] LPCTSTR variableName, [out] LPBSTR pValue)

Tato metoda načte hodnotu proměnné pořadí úkolů.

Poznámka

Hodnoty se ukládají do mezipaměti po prvním přečtení.

void SetValue([in] LPCTSTR variableName, [in] LPCTSTR pValue)

Tato metoda nastaví hodnotu proměnné pořadí úkolů. Tato hodnota je uložena v paměti. Hodnoty pořadí úkolů se zapíšou, jakmile v Průvodci UDI vyberete Dokončit .

void Clear(void)

Tato metoda odebere všechny hodnoty pořadí úkolů, které byly uloženy v paměti.

HRESULT Remove([in] LPCTSTR variableName)

Tato metoda odebere konkrétní hodnotu pořadí úkolů z paměti. Při příštím volání GetValue se stejným názvem pořadí úkolů se metoda pokusí načíst z pořadí úkolů.

HRESULT SuppressLogValue([in] LPCTSTR variableName)

Při každém zápisu proměnných pořadí úkolů, například při výběru možnosti Dokončit v průvodci UDI, se názvy a hodnoty zapíšou do souboru protokolu. Voláním této metody potlačíte protokolování citlivých hodnot, jako jsou hesla nebo PIN kódy, pro konkrétní proměnnou pořadí úkolů.

void Save(void)

Tato metoda uloží všechny hodnoty pořadí úkolů, které byly nastaveny s voláním SetValue.

ITSVariableRepository – rozhraní

__interface ITSVariableRepository : IUnknown
{
    void GetValue([in] LPCTSTR variableName, BOOL logValue, [out] LPBSTR pValue);
    void SetValue([in] LPCTSTR variableName, BOOL logValue, [in] LPCTSTR value);
};

Toto rozhraní je pro interní použití TSVariableBag pro čtení a zápis proměnných pořadí úkolů.

IWizardFinish – rozhraní

__interface IWizardFinish : IUnknown
{
    HRESULT Canceled(void);
    HRESULT Finished(void);
};

Toto rozhraní je užitečné v pokročilých scénářích, kdy chcete provést další zpracování, když v Průvodci UDI vyberete Dokončit nebo Zrušit . Průvodce UDI obsahuje úlohu Dokončit , která ukládá proměnné pořadí úkolů, když vyberete Dokončit. Pokud průvodce zrušíte, úloha pouze nastaví proměnnou pořadí úkolů OSDSetupWizCancelled na hodnotu TRUE a neuloží změny žádné jiné proměnné pořadí úkolů.

Pokud vytvoříte vlastní komponentu pro dokončení, musíte ji zaregistrovat s kódem následujícím způsobem:

Register<MyFinishTaskFactory>(ID_MyFinishTask, pRegistry);

PWizardFinish pFinish;
CreateInstance(pRegistry, ID_MyFinishTask, &pFinish);

PWizardFinishService pService;
GetService<IWizardFinishService>(pRegistry, &pService);

pService->Register(pFinish);

IBindableList – rozhraní

__interface IBindableList : IUnknown
{
    size_t Count(void);
    HRESULT GetCaption(size_t index, LPBSTR pCaption);
};

Toto rozhraní implementujte, pokud máte komponentu zdroje dat, kterou chcete svázat s polem se seznamem voláním jeho metody Bind .

size_t Count(void)

Tato metoda vrátí počet položek v seznamu.

HRESULT GetCaption(index size_t, LPBSTR pCaption)

Tato metoda vrátí popis položky v určitém indexu.

IDataNodes – rozhraní

__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);
};

Toto rozhraní poskytuje přístup k hierarchickým datům, která lze uložit na stránku. Toto rozhraní získáte prostřednictvím metod na rozhraní ISettingsProperties , které je k dispozici pro vaši stránku prostřednictvím metody Settings .

Data v SOUBORU XML stránky můžou vypadat přibližně takto.

      <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>

Volání Settings()->GetDataNode(L"Network", &pData) vám poskytne instanci IDataNodes se dvěma datovými položkami (z nichž každá má zase dvě vlastnosti).

size_t Count()

Tato metoda vrátí počet prvků DataItem .

HRESULT SetCaptionProperty(LPCTSTR captionProperty)

Komponenta, která podporuje toto rozhraní, podporuje také IBindableList, což usnadňuje naplnění pole se seznamem daty z XML stránky. Tato metoda určuje, která vlastnost (setter) v každém prvku DataItem se použije pro tuto vazbu. Můžete například volat tuto metodu pomocí DisplayName a použít tuto vlastnost setter pro datovou vazbu. Pole se seznamem pak bude obsahovat položky Public a Dev Team .

HRESULT GetProperty(index size_t, LPCTSTR propertyName, [out] LPBSTR propertyValue)

Tato metoda získá vlastnost z jednoho z prvků DataItem . Viz tabulka 41 a tabulka 42.

Tabulka 41. DataItem GetProperty

Parametr Popis
Index Hodnota indexu (počínaje 0) datového objektu, pro který chcete načíst hodnotu vlastnosti
Propertyname Název vlastnosti setter, pro kterou chcete načíst hodnotu
Propertyvalue Při vrácení obsahuje řetězcovou hodnotu vlastnosti.

Tabulka 42. HRESULT GetProperty

HRESULT Popis
S_OK Vlastnost byla načtena.
E_INVALIDARG Index je za koncem pole.
HRESULT GetNode(index size_t; [out] ISettingsProperties **ppNode)

Tato metoda je podobná GetProperty, ale místo vrácení jedné hodnoty z DataItem, vrátí celý DataItem zabalený v ISettingsProperties rozhraní. Viz tabulka 43 a tabulka 44.

Tabulka 43. HRESULT GetNode

Parametr Popis
Index Hodnota indexu (počínaje 0) datového objektu, pro který chcete načíst hodnotu vlastnosti
ppNode Při ukončení rozhraní ISettingsProperties, které zabalí uzel DataItem

Tabulka 44. HRESULT – výsledky GetNode

HRESULT Popis
S_OK Uzel se načetl.
E_INVALIDARG Index je za koncem pole.

IFactoryRegistry – rozhraní

__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);
};
Přehled

Když vytváříte novou vlastní stránku, musíte vytvořit minimálně objekt pro vytváření stránek – třídu, která implementuje IClassFactory. (Jako základní třídu pro vaši továrnu můžete použít ClassFactoryImpl .)

void Register(typ LPCTSTR, IClassFactory *pFactory)

Tato metoda zaregistruje objekt pro vytváření tříd v registru. Viz tabulka 45.

Tabulka 45. Registr virtuálníchoidŮ IClassFactory

Parametr Popis
Typ Řetězec, který identifikuje továrnu, kterou registrujete; Obecně platí, že tento parametr by měl mít v řetězci název vaší společnosti, aby se zajistilo, že je jedinečný.
pFactory Ukazatel na instanci objektu pro vytváření tříd
HRESULT LoadAndRegister(LPCTSTR dllName, ILogger *pLogger)

Tato metoda je určena pouze pro interní použití.

BOOL Contains(typ LPCTSTR)

Tato metoda je obecně určena pro interní použití. Zkontroluje, jestli je objekt pro vytváření tříd zaregistrovaný pro určitý typ.

HRESULT GetFactory(typ LPCTSTR, IClassFactory **ppFactory)

Tato metoda umožňuje načíst objekt pro vytváření tříd. Obvykle byste volali CreateInstance. Pokud se však chystáte vytvořit velký počet stejných komponent, je efektivnější načíst továrnu a pak ji požádat o vytvoření instancí za vás.

HRESULT CreateInstance(typ LPCTSTR, IUnknown **ppInstance)

Tato metoda vytvoří novou instanci komponenty vzhledem k jejímu typu. Místo toho použijte metodu šablony CreateInstance , která umožňuje vytváření objektů bezpečných typů.

HRESULT SetContainer(IWizardPageContainer *pContainer)

Tato metoda je určena pouze pro interní použití.

HRESULT RegisterService(REFGUID iid, IUnknown *pService)

Služby jsou jednotlivé instance komponenty, které lze použít na více místech. Tuto metodu můžete použít k registraci služby na jedné stránce a načtení stejné instance z jiné stránky.

HRESULT GetService(REFGUID iid, IUnknown **ppService)

Tato metoda načte službu, která byla dříve registrována s voláním RegisterService.

HRESULT SetLanguage(LANGID languageId)

Tato metoda nastaví jazyk průvodce UDI na identifikátor jazyka, který jste zadali v parametru languageId .

LANGID GetLanguage()

Tato metoda vrátí hodnotu identifikátoru jazyka, který jste zadali s parametrem příkazového řádku /locale průvodce UDI. Metoda vrátí jednu z následujících hodnot:

  • Hodnota identifikátoru jazyka poskytnutého s parametrem příkazového řádku /locale

  • 0, pokud jste nezadali parametr příkazového řádku /locale

ILogger – rozhraní

__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);
};
Přehled

Průvodce UDI zaznamenává informace do souboru protokolu, což pomáhá při řešení problémů zjištěných v terénu. Je vhodné, aby vaše stránky protokolovat informace. Ukazatel na toto rozhraní můžete získat ze stránky pomocí metody Logger() stránky. Řádky v souboru protokolu obsahují číslo úrovně, které představuje chybové, normální, podrobné nebo ladicí zprávy.

Poznámka

Zprávy ladění se neukládají do souboru protokolu, pokud není zapnutá podpora ladění. Podporu ladění můžete zapnout přidáním následujícího řádku do elementu Style v souboru .config:

<Setter Property="debug">true</Setter>
Init
HRESULT Init(LPCWSTR logFilename)

Tato metoda je určena pouze pro interní použití.

MoveLog
HRESULT MoveLog(LPCWSTR logFilename)

Tato metoda je určena pouze pro interní použití.

LogBase
HRESULT LogBase(EMessageType messageType, LPCTSTR component, SYSTEMTIME eventTime, LPCTSTR message)

Tato metoda je určena pouze pro interní použití.

Protokolu
HRESULT Log(EMessageType messageType, LPCTSTR component, LPCTSTR message)

Tato metoda je určena pouze pro interní použití.

Error
HRESULT Error(HRESULT error, LPCTSTR component, LPCTSTR message)

Voláním této metody zaznamenáte informace o chybě. Viz tabulka 46.

Tabulka 46. Chyba HRESULT

Parametr Popis
Chyba Kód chyby vrácený voláním (Tento kód se zobrazí v položce protokolu jako číslo.)
Součást Řetězec, který identifikuje zdroj chyby, kterým je obecně vaše stránka nebo součást, kterou jste napsali.
Zpráva Zpráva, která vysvětluje, co chybu způsobilo
Chyba 2
HRESULT Error2(HRESULT error, LPCTSTR component, LPCTSTR message, LPCTSTR message2)

Tato metoda se podobá metodě Error , ale umožňuje poskytnout zprávu se dvěma částmi. Konečná zpráva bude mít ve výstupním souboru "message" a pak "message2". Toto je jednoduše pohodlná metoda.

Normální
HRESULT Normal(LPCTSTR component, LPCTSTR message)

Tato metoda protokoluje normální zprávu. Viz popis metody Error pro parametry.

Normální 2
HRESULT Normal2(LPCTSTR component, LPCTSTR message, LPCTSTR message2)

Tato metoda protokoluje normální zprávu. Projděte si popis metody Error2 pro parametry.

Podrobné
HRESULT Verbose(LPCTSTR component, LPCTSTR message)

Tato metoda protokoluje podrobnou zprávu. Viz popis metody Error pro parametry.

Podrobné 2
HRESULT Verbose2(LPCTSTR component, LPCTSTR message, LPCTSTR message2)

Tato metoda protokoluje podrobnou zprávu. Projděte si popis metody Error2 pro parametry.

Ladění
HRESULT Debug(LPCWSTR component, LPCWSTR message)

Tato metoda protokoluje zprávu ladění. Viz popis metody Error pro parametry. Zprávy ladění se do souboru neukládají, pokud nejsou povolené. Podrobnosti najdete v části Přehled.

EnableDebug
HRESULT EnableDebug(BOOL debug)

Tato metoda je určena pouze pro interní použití.

Zavřete
HRESULT Close(void)

Tato metoda je určena pouze pro interní použití.

GetLogFilename
HRESULT GetLogFilename(LPBSTR pFilename)

Tato metoda načte název souboru protokolu.

Rozhraní IOrientation

__interface IOrientation : IUnknown
{
    void SetController(IWizardDialogController *pController);
    int AddPage(LPCTSTR name);
    void SelectPage(int index);
};

Toto rozhraní je pouze pro interní použití.

ISettings – rozhraní

__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);
};

Toto rozhraní je pouze pro interní použití.

ISettingsProperties – rozhraní

__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);
};
Přehled

Toto rozhraní poskytuje přístup k datům stránky. Pokud se chcete dostat na nejvyšší úroveň dat stránky, použijte metodu Settings() stránky.

HRESULT GetAttribute(LPCTSTR attributeName, LPBSTR attributeValue)

Tato metoda umožňuje načíst hodnoty atributů na hlavním uzlu, což je uzel Page , když používáte metodu Settings() stránky.

IStringProperties * Properties()

Tato metoda poskytuje přístup k hodnotám vlastností setter pod hlavním uzlem. U stránky se jedná o vlastnosti nejvyšší úrovně.

HRESULT SelectNodes(LPCTSTR xPath, IXMLDOMNodeList **ppList)

Volejte tuto metodu, pokud chcete získat přímo seznam uzlů XML pomocí výrazu XPath. Pokud je to možné, je lepší použít jednu z dalších metod. Tuto metodu použijte pouze v případě, že se k uzlům nemůžete dostat jiným způsobem.

HRESULT SelectSingleNode(LPCTSTR xPath, IXMLDOMNode **ppNode)

Volejte tuto metodu, pokud chcete přímo získat jeden uzel XML pomocí výrazu XPath. Pokud je to možné, je lepší použít jednu z dalších metod. Tuto metodu použijte pouze v případě, že se k uzlu nemůžete dostat jiným způsobem.

HRESULT GetDataNode(název LPCTSTR, ISettingsProperties **ppNode)

Načte prvek Data na základě atributu Name daného elementu.

HRESULT GetDataNodes(IDataNodes **ppNodes)

Tato metoda načte seznam prvků DataItem pod aktuálním uzlem. Na úrovni stránky volejte GetDataNode pro načtení rozhraní ISettingsProperty pro data. Pak v této instanci volejte GetDataNodes a načtěte seznam záznamů. Například s tímto kódem 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)

Tato metoda poskytuje rychlý způsob, jak se dostat k sadě uzlů DataItem v rámci konkrétního datového uzlu. Při použití kódu XML z příkladu GetDataNodes provede následující kód přesně totéž jako čtyři řádky kódu v příkladu v části GetDataNodes , ale s kontrolou chyb:

ISimpleStringProperties Interface

ISimpleStringProperties – rozhraní

__interface ISimpleStringProperties : IStringProperties
{
void Add(LPCTSTR propertyName, LPCTSTR value);
};

Toto rozhraní samo o sobě nemusí být užitečné. Je však implementováno komponentou ID_SimpleStringProperties , která také implementuje rozhraní IStringProperties . Tuto komponentu můžete použít v případech, kdy potřebujete předat sadu vlastností jiné komponentě, například úkolu, ale chcete místo použití hodnot z XML přidat hodnoty programově. Tady je příklad použití tohoto rozhraní:

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

Toto rozhraní poskytuje jednoduchý přístup k sadě elementů setter, které pocházejí z XML. Toto rozhraní je k dispozici pro vlastnosti stránky pomocí Nastavení()->Vlastnosti().

HRESULT Get(LPCTSTR propertyName, [out] LPBSTR pPropValue)

Tato metoda načte jednu hodnotu vlastnosti. Viz tabulka 47 a tabulka 48.

Tabulka 47. IHRESULT – Získání hodnoty vlastnosti

Parametr Popis
Propertyname Název vlastnosti, kterou chcete přečíst
pPropValue Při ukončení obsahuje hodnotu vlastnosti jako řetězec (Tato hodnota bude nullptr , pokud taková vlastnost neexistuje.)

Tabulka 48. IHRESULT – Získání výsledků hodnoty vlastnosti

HRESULT Popis
S_OK Načte se hodnota vlastnosti.
E_INVALIDARG Neexistuje žádná vlastnost s názvem, který jste zadali.

ITaskManager – rozhraní

__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);
}

Toto rozhraní je implementováno komponentou TaskManager (ID_TaskManager v ITaskManager.h), což je komponenta, která spouští úlohy na předběžné stránce. Můžete buď použít přímo předběžnou stránku, což je to, co děláte většinu času, nebo vytvořit vlastní stránku, aby tato komponenta dělala většinu práce.

HRESULT Init(IWizardPageView *pPageView, int idListView, int idMessage, int idRetryButton, ISettingsProperties *pPageInfo, ITaskManagerCallback *pCallback)

Tuto metodu je nutné volat před voláním jakékoli jiné metody. Inicializuje komponentu TaskManager . Viz tabulka 49.

Tabulka 49. HRESULT Init

Parametr Popis
pPageView Poskytuje přístup ke stránce, na které budou spuštěné úlohy (Tato stránka musí mít specifickou sadu ovládacích prvků, které jsou popsané v několika dalších parametrech.)
idListView ID ovládacího prvku ListView , který zobrazí seznam úkolů a stav těchto úkolů
idMessage ID ovládacího prvku textového pole, které se použije k zobrazení zprávy pro vybraný úkol
idRetryButton ID ovládacího prvku tlačítka, které můžete vybrat pro opětovné spuštění úloh
pPageInfo Obálka kolem xml stránky (TaskManager načte sadu úloh, které se mají z tohoto XML spustit.)
pCallback Může být null (Pokud tento parametr nemá hodnotu null, TaskManager zavolá metodu Started při spuštění úlohy a metodu Finished pro každý úkol, který se dokončí.)
HRESULT SetFailMessage(zpráva LPCWSTR)

Tato metoda nastaví zprávu, která se zobrazí, pokud jeden nebo více úkolů selže.

HRESULT Start(void)

Tato metoda spustí všechny úlohy. Každá úloha se spouští v samostatném vlákně.

HRESULT GetTaskMessage(index size_t, zpráva LPBSTR)

Tato metoda je určena pouze pro interní použití. Načte aktuální zprávu úkolu na základě jeho indexu v seznamu úkolů.

HRESULT GetResultType)(index size_t, typ LPBSTR)

Tato metoda načte aktuální typ úkolu. Dostupné typy jsou uvedeny v tabulce 50.

Tabulka 50. HRESULT GetResultType

Typ Popis
0 Představuje úkol, který byl úspěšný.
1 Představuje úkoly, které vrátily upozornění.
-1 Představuje neúspěšný úkol.

Typ se načte tak, že se podíváte na kód ukončení nebo chyby úlohy a najde shodu v elementu EXITCodes> XML úlohy<.

HRESULT GetProperty(index size_t, název vlastnosti LPCTSTR, hodnota LPBSTR)

Tato metoda se používá na stránkách průběhu a před výstupem k načtení BitmapFilename setter vlastnost, aby mohl zobrazit obrázek vedle zprávy pro úkol, který zvýrazníte. Jinými slovy, můžete přidat vlastní setter do XML úkolu a pak ho načíst pomocí této metody.

int GetSelectedIndex(void)

Tato metoda načte index aktuálně vybraného úkolu, což je užitečné, pokud chcete načíst další informace o úkolu (viz Metoda GetProperty ), které se mají zobrazit pro vybraný úkol. Stránky průběhu a předběžné kontroly používají tuto metodu k zobrazení obrázku pro vybraný úkol.

HRESULT Wait(DWORD waitMilliseconds)

Tato metoda pomáhá hlavně s testy jednotek, aby test mohl zajistit dokončení úkolů před ukončením testu jednotek. Tuto metodu byste normálně nevolali. Vrátí se buď po dokončení všech úkolů, nebo po uplynutí doby čekání.

size_t FailedCount(void)

Tato metoda vrátí počet úkolů aktuálně označených jako neúspěšné.

size_t WarningCount(void)

Tato metoda vrátí počet úkolů aktuálně označených jako upozornění.

size_t SucceedCount(void)

Tato metoda vrátí počet úkolů, které jsou aktuálně označené jako úspěšné.

size_t RunningCount(void)

Tato metoda vrátí počet aktuálně spuštěných úloh.

void OnCommonControlEvent(WORD controlId, LPNMHDR pInfo)

Volejte tuto metodu z OnCommonControlEvent vaší stránky, aby TaskManager mohl zpracovávat události, které potřebuje.

void OnControlEvent(ID události WORD, ID ovládacího prvku WORD)

Volejte tuto metodu z OnControlEvent vaší stránky, aby TaskManager mohl zpracovávat události, které potřebuje.

void EnableButtons (bool enable)

Tato metoda je určena pouze pro interní použití.

IWizardComponent – rozhraní

__interface IWizardComponent : IUnknown
{
    HRESULT SetContainer(IWizardPageContainer *pContainer);
};
Přehled

Obvykle nebudete implementovat toto rozhraní přímo, ale místo toho prostřednictvím WizardComponent třídy šablony. Pokud vaše komponenta implementuje toto rozhraní a zaregistrovali jste objekt pro vytváření tříd v registru, vaše komponenta obdrží ukazatel na instanci IWizardPageContainer při jejím vytvoření. To vám například pomůže získat přístup k protokolovacímu nástroji nebo registru pro vytváření dalších komponent, které vaše komponenta může potřebovat.

IWizardDialogController – rozhraní

__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);
};

Toto rozhraní je pouze pro interní použití.

IWizardDialogView – rozhraní

__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);
};

Toto rozhraní je pouze pro interní použití.

IWizardPage – rozhraní

__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);
};
Přehled

Toto rozhraní je implementováno WizardPageImpl, takže to obvykle nebudete muset implementovat sami. Průvodce volá všechny tyto metody za vás při interakci s vašimi vlastními stránkami.

IWizardPageContainer – rozhraní

__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);
};
Přehled

Toto rozhraní je k dispozici pro vaši stránku prostřednictvím metody Container (implementované wizardPageImpl) a poskytuje přístup k různým službám průvodce.

ILogger * Logger(void)

Tato metoda slouží k zápisu zpráv do souboru protokolu, například:

Logger()->Verbose(s_component, L"Message for log file");
IPropertyBag * Properties(void)

Tato metoda poskytuje přístup k "memory" proměnným, což jsou vlastnosti, které jsou v paměti pouze v době, kdy je spuštěn průvodce UDI. Tyto vlastnosti jsou k dispozici pro jiné stránky buď v kódu, nebo v XML pomocí syntaxe $memoryVarName$ .

HRESULT CreateInstance(typ LPCTSTR, [out] IUnknown **ppInstance)

Tato metoda umožňuje vytvořit novou instanci jakékoli součásti, která byla zaregistrována. Je však lepší použít funkci šablony CreateInstance, protože je silného typu.

HRESULT GetService(REFIID iid, [out] IUnknown **ppInstance)

Tato metoda umožňuje načíst službu, která byla zaregistrována. Je však lepší volat funkci šablony GetService , která je silného typu (místo použití funkce IUnknown).

HRESULT ReplaceVariables(zdroj LPCTSTR, [out] LPBSTR pDest)

Tato metoda zpracovává práci s proměnnými uvnitř řetězcových hodnot. Podporuje formáty uvedené v tabulce 51 a Tabulce 52.

Tabulka 51. HRESULT ReplaceVariables

Formát Popis
$Name$ Nahradí hodnotu paměťové proměnné tímto názvem (Pokud neexistuje žádná paměťová proměnná s názvem, odebere se token.)
%Name% Proměnná pořadí úkolů nebo proměnná prostředí. Pořadí je následující:

1. Použijte hodnotu proměnné pořadí úkolů, pokud je k dispozici.
2. Použijte hodnotu proměnné prostředí, pokud je k dispozici.
3. V opačném případě odeberte tento text z řetězce.

Tabulka 52. Parametr HRESULT

Parametr Popis
Source (Zdroj) Vstupní řetězec, který může obsahovat libovolnou kombinaci proměnných $ a % nebo vůbec žádnou.
pDest Při vrácení obsahuje nový řetězec, který má všechny tokeny nahrazené podle tabulky 51.
HRESULT GotoPage(LPCTSTR pageName)

Tato metoda nebyla plně testována. Myšlenka je taková, že můžete přepnout přímo na konkrétní stránku na základě názvu stránky definovaného v souboru XML .config. Volání této metody obchází OnNextSelected na vaší stránce. Kromě toho se může změnit chování této metody, takže ji používejte na vlastní nebezpečí.

int ShowMessageBox(zpráva LPCTSTR, LPCTSTR lpCaption, UINT uType)

Tato metoda zobrazí pole se zprávou s textem a popis, které zadáte. Parametr uType je libovolná hodnota, kterou můžete zadat funkci MessageBox Win32.

BOOL InPreview(void)

Tato metoda vrátí hodnotu TRUE, pokud jste průvodce spustili v režimu preview zadáním přepínače /preview . V režimu náhledu není tlačítko Další nikdy zakázané. Tato metoda například umožňuje obejít kód v režimu náhledu, který může způsobit problémy, když na stránce nemáte platná data.

HWND GetHwnd(void)

Tato metoda vrátí HWND pro hlavní dialogové okno. Tuto metodu používejte opatrně. Obecně platí, že aplikační programovací rozhraní UDI Wizard je navrženo tak, že nikdy nepracujete přímo s úchyty okna.

IWizardPageView – rozhraní

__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);
};

Toto rozhraní je dostupné pro kód na stránce prostřednictvím metody View (implementované wizardPageImpl).

HRESULT GetControlWrapper(int itemId, DialogControlTypes controlType, IUnknown *ppControl)

Průvodce UDI používá obálky, které jsou ve skutečnosti fasádami pro interakci s ovládacími prvky na stránce. Použití těchto fasád místo skutečných ovládacích prvků značně usnadňuje psaní testů pro stránku, protože můžete poskytnout napodobení ze svých testů.

Místo použití této metody přímo je lepší použít metodu šablony GetControlWrapper , která je silného typu – například:

PComboBox m_pLanguagePackCombo;
GetControlWrapper(View(), IDC_MY_COMBO, CONTROL_COMBO_BOX, &m_pCombo);
HWND GetHwnd(void)

Tato metoda vrátí popisovač okna pro vaši stránku. Obecně byste k tomuto popisovači okna neměli potřebovat přístup.

HWND GetControl(int itemId)

Pokud je to nutné, můžete voláním této metody získat popisovač okna ovládacího prvku na stránce. (Je lepší volat funkci šablony GetControlWrapper .)

HRESULT Show (void)

Tato metoda je určena pouze pro interní použití.

HRESULT Hide(void)

Tato metoda je určena pouze pro interní použití.

HRESULT Focus(int itemId)

Nastavte fokus vstupu na konkrétní ovládací prvek.

IWizardPage * Page(void)

Tato metoda je určena pouze pro interní použití.

IFormController * Form(void)

Tato metoda je určena pouze pro interní použití.

HRESULT FocusWizardButton(WizardButtons button)

Nastaví fokus na jedno z tlačítek průvodce. WizardButtons má dvě hodnoty: BackButton a NextButton.

HRESULT SetEnable(WizardButtons button, BOOL enable)

Požádejte o povolení nebo zakázání jednoho z tlačítek průvodce. Tlačítko nemusí odpovídat požadovanému stavu. Pokud například spustíte UDI Wizard s přepínačem /preview , tlačítka budou vždy povolena. WizardButtons má dvě hodnoty: BackButton a NextButton.

void ShowWarningMessage (zpráva LPCTSTR)

Tato metoda zobrazí zprávu upozornění v dolní části oblasti obsahu stránky. Tato zpráva může být libovolný text.

void HideWarningMessage(void)

Skryjte zprávu upozornění, která se zobrazila s voláním ShowWarningMessage.

IXmlDocument – rozhraní

__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);
};
Přehled

Toto rozhraní je implementováno komponentou ID_IXmlDocument , což je fasáda navržená tak, aby usnadnila práci s dokumenty XML v jazyce C++.

HRESULT Load (název souboru LPCTSTR)

Tato metoda načte dokument XML z externího souboru. Vrátí S_OK , pokud byl soubor načten bez chyb nebo S_FALSE , pokud došlo k chybě. Pokud dojde k chybě, můžete chybovou zprávu zobrazit voláním GetParseErrorMessage.

HRESULT LoadXml(LPCTSTR xml)

Tato metoda načte dokument XML z řetězce místo z externího souboru. Kromě zdroje pro čtení XML je chování stejné jako metoda Load .

HRESULT Save(LPCWSTR filename)

Tato metoda uloží dokument XML, který je v paměti do externího souboru.

HRESULT GetParseErrorMessage(LPBSTR pMessage)

Tato metoda vrátí nový řetězec s chybovou zprávou z načtení dokumentu XML, pokud existuje. Vždy se vrátí S_OK.

HRESULT SelectNodes(LPCTSTR xpath, IXMLDOMNodeList **ppNodes)

Tato metoda umožňuje použít výraz XPath k načtení kolekce uzlů z dokumentu. Vždy se vrátí S_OK.

HRESULT SelectSingleNode(xpath LPCTSTR, IXMLDOMNode **ppNode)

Tato metoda umožňuje použít výraz XPath k načtení jednoho uzlu z dokumentu. Vždy se vrátí S_OK.

HRESULT AddSchema(LPCTSTR název souboru, LPCTSTR ns)

Tato metoda přidá název externího souboru schématu, který se použije k ověření schématu dokumentu XML při jeho načtení. Zadaný obor názvů je řetězec, který můžete použít v dotazech XPath, i když nebyl otestován.

HRESULT AddAttribute(IXMLDOMNode *pNode, název LPCWSTR, hodnota LPCWSTR)

Tato metoda přidá nový atribut do existujícího uzlu v dokumentu XML. Viz tabulka 53.

Tabulka 53. HRESULT AddAttribute

Parametr Popis
pNode Uzel, ke kterému chcete přidat atribut
Název Název nového atributu
Hodnota Hodnota nového atributu
HRESULT CreateNode(typ DOMNodeType, název LPCWSTR, LPCWSTR ns, IXMLDOMNode **ppNode)

Voláním této metody vytvořte nový uzel:

Pointer<IXMLDOMNode> pNewChild
pXmlDom->CreateNode(NODE_ELEMENT, L"MyElement", L"", &pNewChild);

Jakmile vytvoříte nový uzel, můžete ho přidat jako podřízený uzel do jiného uzlu voláním metody appendChild nadřazeného objektu.

Pomocné funkce

CreateInstance – funkce šablony

HRESULT CreateInstance(IWizardPageContainer *pContainer, LPCTSTR type, I **ppObject)

Tato funkce je definována v souboru IWizardPageContainer.h a poskytuje typově bezpečnou obálku přes metodu IWizardPageContainer-CreateInstance> – například:

CreateInstance<IDirectory>(Container(), ID_Directory, &pDirectory);

Tento kód vytvoří novou komponentu ID_Directory pro načtení rozhraní IDirectory této komponenty.

Funkce šablony GetService

void GetService(IWizardPageContainer *pContainer, I **ppService)

Tato funkce je definovaná v souboru IWizardPageContainer.h a poskytuje typově bezpečnou obálku přes metodu IWizardPageContainer-GetService>, například:

GetService<ITSVariableBag>(Container(), &pTsBag);

Tato funkce načte komponentu pořadí úkolů, která podporuje rozhraní ITSVariableBag . (Pro ITSVariableBag můžete místo toho použít metodu TSVariables třídy WizardPageImpl .)

Průvodce UDI Designer referenční dokumentace schématu konfiguračního souboru

Tento soubor využívá průvodce UDI Designer. Pro každý vlastní soubor .dll se vytvoří samostatný soubor, který může obsahovat vlastní editory stránek průvodce, vlastní úlohy nebo vlastní validátory. Soubor musí končit .config a nacházet se ve složce installation_folder\Bin\Config (kde installation_folder je složka, do které jste nainstalovali MDT).

Tabulka 54 obsahuje prvky v průvodci UDI Designer konfiguračního souboru a jejich popisy. Element DesignerConfig je kořenový uzel pro tento odkaz.

Tabulka 54. Prvky v průvodci UDI Designer konfigurační soubor a jejich popisy

Název elementu Popis
DesignerConfig Určuje kořen pro všechny ostatní prvky.
DesignerMappings Seskupí sadu prvků stránky.
Stránka Určuje editor stránek průvodce, který se má načíst do Designer Průvodce UDI, který slouží k úpravě nastavení konfigurace stránky průvodce.
Param Určuje parametr, který se předá nadřazené elementu Task nebo Validator a odpovídá elementu Setter v konfiguračním souboru průvodce UDI Poznámka: Atributy tohoto prvku se liší, pokud je nadřazený element Task nebo Validator element.
Úkol Určuje úkol v knihovně úloh.
TaskItem Určuje skupinu parametrů, které se předají úkolu.
Knihovna úkolů Seskupí sadu prvků úkolu .
Validátor Určuje validátor v knihovně validátoru.
ValidatorLibrary Seskupí sadu prvků validátoru .

DesignerConfig

Tento element určuje kořen pro všechny ostatní prvky.

Informace o prvku

Tabulka 55 obsahuje informace o elementu DesignerConfig .

Tabulka 55. Informace o elementu DesignerConfig

Atribut Hodnota
Počet výskytů Jedna: Tento prvek je povinný.
Nadřazené prvky Žádné
Obsah DesignerMappings, TaskLibrary, ValidatorLibrary
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad
<DesignerConfig>
   + <TaskLibrary>
   + <ValidatorLibrary>
   + <DesignerMappings>
</DesignerConfig>

DesignerMappings

Tento prvek seskupí sadu prvků stránky .

Informace o prvku

Tabulka 56 obsahuje informace o elementu DesignerMappings .

Tabulka 56. Informace o elementu DesignerMappings

Atribut Hodnota
Počet výskytů Nula nebo jedna v elementu DesignerConfig (Tento element je volitelný, pokud v knihovně DLL není žádná vlastní stránka průvodce, která odpovídá tomuto průvodci UDI průvodce Designer konfiguračním souboru.)
Nadřazené prvky DesignerConfig
Obsah Stránka
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad
<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>

Stránka

Tento prvek určuje editor stránky průvodce, který se má načíst do průvodce UDI Designer, který se používá k úpravě nastavení konfigurace stránky průvodce.

Informace o prvku

Tabulka 57 obsahuje informace o prvku Page .

Tabulka 57. Informace o prvku stránky

Atribut Hodnota
Počet výskytů Jedna nebo více stránek průvodce definované v elementu DesignerMappings
Nadřazené prvky DesignerMappings
Obsah Jakýkoli obsah XML ve správném formátu
Atributy elementu

Tabulka 58 obsahuje atributy elementu Page a jejich popis.

Tabulka 58. Atributy a odpovídající hodnoty prvku Page

Atribut Popis
Popis Určuje text, který poskytuje informace o parametru, který se zobrazí v průvodci UDI Designer
DesignerAssembly Určuje název .dll souboru přidruženého k editoru stránek průvodce (soubor .dll musí existovat ve složce installation_folder\Bin (kde installation_folder je složka, do které jste nainstalovali MDT.)
Typ návrháře Určuje název editoru stránek průvodce v souboru .dll zadaném v atributu DesignerAssembly (Typ Microsoft .NET pro editor stránky průvodce s plně kvalifikovaným oborem názvů Microsoft .NET.)
Displayname Určuje popisný název editoru stránky, který se zobrazí v průvodci UDI Designer
Knihovny dll Určuje název souboru .dll přidruženého ke stránce průvodce (soubor .dll musí existovat ve složce installation_folder\Templates\Distribution\Tools\platform (kde installation_folder je složka, do které jste nainstalovali MDT, a pro 32bitovou verzi je x86 nebo x64 pro 64bitovou verzi.)Poznámka: Ujistěte se, že architektura procesoru DLL odpovídá nainstalované architektuře procesoru MDT. Pokud jste například nainstalovali 32bitovou verzi MDT, ujistěte se, že pro stránku průvodce používáte 32bitovou knihovnu DLL.
Obrázek Určuje název obrázku stránky ve formátu PNG (Portable Network Graphics) (Soubor .png musí existovat ve složce installation_folder\Bin\Images (kde installation_folder je složka, ve které jste nainstalovali MDT.)
Typ Určuje editor stránky průvodce a musí odpovídat názvu použitému při registraci vlastní stránky.
Poznámky

Průvodce UDI Designer používá element Page jako šablonu k vytvoření počátečního XML pro nového průvodce. Průvodce UDI Designer provádí ověření schématu, aby zajistil, že stránka a podřízené elementy mají platný formát. Tento prvek poskytuje mapování mezi typem stránky Průvodce UDI a informacemi, které průvodce UDI Wizard Designer potřebuje upravit a vytvořit stránky tohoto typu pomocí vlastního editoru stránek.

Příklad

Žádný.

Param

Tento element určuje parametr, který je předán nadřazené Task nebo Validator element a odpovídá elementu Setter v konfiguračním souboru průvodce UDI.

Poznámka

Atributy pro tento prvek se liší, pokud nadřazený je Task nebo Validator element.

Informace o prvku

Tabulka 59 obsahuje informace o elementu Param .

Tabulka 59. Informace o elementu param

Atribut Hodnota
Počet výskytů Jeden nebo více pro každý nadřazený element TaskItem nebo Validator
Nadřazené prvky TaskItem, Validator
Obsah Jakýkoli obsah XML ve správném formátu
Atributy elementu

Tabulka 60 obsahuje seznam atributů elementu Param a jejich popis.

Tabulka 60. Atributy a odpovídající hodnoty elementu Param

Atribut Popis
Popis Určuje text, který poskytuje informace o parametru, který se zobrazí v průvodci UDI Designer Poznámka: Tento atribut je platný pouze pro element Validator.
Displayname Určuje popisný název parametru validátoru, který se zobrazí pro příslušnou stránku Průvodce UDI v průvodci UDI Designer (Tento název je obvykle popisnější než atribut Name.) Poznámka: Tento atribut je platný pouze pro element Validator.
Název Určuje název parametru, který je předán úkolu nebo validátoru v závislosti na nadřazeném prvku (Tento atribut se stane atributem Vlastnosti v elementu Setter v konfiguračním souboru Průvodce UDI.) Poznámka: Tento parametr se používá pro nadřazené elementy TaskItem i Validator .
Poznámky

Žádný.

Příklad

Žádný.

Úloha

Tento prvek určuje úkol v knihovně úloh.

Informace o prvku

Tabulka 61 obsahuje informace o elementu Task .

Tabulka 61. Informace o prvku úkolu

Atribut Hodnota
Počet výskytů Jeden nebo více prvků v elementu TaskLibrary (Tento element není volitelný, pokud je zadaný element TaskLibrary .)
Nadřazené prvky Knihovna úkolů
Obsah TaskItem
Atributy elementu

Tabulka 62 obsahuje seznam atributů elementu Task a jejich popis.

Tabulka 62. Atributy a odpovídající hodnoty elementu Task

Atribut Popis
Popis Určuje text, který poskytuje informace o úkolu, který se zobrazí v průvodci UDI Designer
Knihovny dll Určuje název .dll souboru přidruženého k úloze (soubor .dll musí existovat ve složce installation_folder\Templates\Distribution\Tools\platform (kde installation_folder je složka, do které jste nainstalovali MDT, a pro 32bitovou verzi musí být x86 nebo pro 64bitovou verzi x64.)
Název Určuje název úlohy, který se zobrazí na příslušné stránce průvodce UDI a v průvodci UDI Designer
Typ Určuje typ úlohy, který se zaregistruje v registru továrny a použije se k volání konkrétní úlohy v souboru .dll.
Poznámky

Žádný.

Příklad

Žádný.

TaskItem

Tento prvek určuje skupinu parametrů, které jsou předány úkolu.

Informace o prvku

Tabulka 63 obsahuje informace o elementu TaskItem .

Tabulka 63. TaskItem – informace o elementu

Atribut Hodnota
Počet výskytů Jeden nebo více prvků úkolu
Nadřazené prvky Úkol
Obsah Param
Atributy elementu

Tabulka 64 uvádí atributy elementu TaskItem a obsahuje popis každého prvku.

Tabulka 64. Atribut a odpovídající hodnoty elementu TaskItem

Atribut Popis
Typ Určuje typ prvku, který bude vytvořen v konfiguračním souboru průvodce UDI. Vytvoří se element XML, který odpovídá hodnotě tohoto atributu. Pokud je například hodnota tohoto atributu File, vytvoří se element File v konfiguračním souboru průvodce UDI.

V současné době jsou podporovány pouze tyto hodnoty:

- Soubor, který vyžaduje dva podřízené elementy Param (jeden podřízený element Param s atributem Name nastaveným na Source a druhý podřízený element Param s atributem Name nastaveným na Dest)
- Setter, který vyžaduje jeden podřízený element Param .
Poznámky

Žádný.

Příklad

Žádný.

Knihovna úkolů

Tento prvek seskupí sadu prvků úkolu .

Informace o prvku

Tabulka 65 obsahuje informace o elementu TaskLibrary .

Tabulka 65. TaskLibrary – informace o elementu

Atribut Hodnota
Počet výskytů Nula nebo jedna v elementu DesignerConfig (Tento element je volitelný, pokud v knihovně DLL nejsou žádné vlastní úlohy, které odpovídají tomuto průvodci UDI Designer konfiguračním souboru.)
Nadřazené prvky DesignerConfig
Obsah Úkol
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad
<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>

Validátor

Tento prvek určuje validátor v knihovně validátoru.

Informace o prvku

Tabulka 66 obsahuje informace o elementu Validator .

Tabulka 66. Informace o elementu validátoru

Atribut Hodnota
Počet výskytů Nula nebo více v elementu ValidatorLibrary (Tento prvek je volitelný.)
Nadřazené prvky ValidatorLibrary
Obsah Param
Atributy elementu

Tabulka 67 obsahuje seznam atributů elementu Validator a jejich popis.

Tabulka 67. Atributy a odpovídající hodnoty pro element Validator

Atribut Popis
Popis Určuje text, který poskytuje informace o validátoru, který se zobrazí v průvodci UDI Designer
Displayname Určuje popisný název validátoru zobrazený v průvodci UDI Designer (Tento název je obvykle popisnější než atribut Name.)
Knihovny dll Určuje název souboru .dll přidruženého k validátoru (soubor .dll musí existovat ve složce installation_folder\Templates\Distribution\Tools\platform (kde installation_folder je složka, ve které jste nainstalovali MDT, a platform je x86 pro 32bitovou verzi nebo x64 pro 64bitovou verzi.)
Název Určuje název validátoru, který se zobrazí na příslušné stránce průvodce UDI a v průvodci UDI Designer
Typ Určuje typ validátoru, který se zaregistruje pomocí faktoru registru a použije se k volání konkrétního validátoru v souboru .dll.
Poznámky

Žádný.

Příklad

Žádný.

ValidatorLibrary

Tento element seskupí sadu elementů Validator .

Informace o prvku

Tabulka 68 obsahuje informace o elementu ValidatorLibrary .

Tabulka 68. Informace o elementu ValidatorLibrary

Atribut Hodnota
Počet výskytů Nula nebo jedna v elementu DesignerConfig (Tento element je volitelný, pokud v knihovně DLL nejsou žádné vlastní validátory, které odpovídají tomuto průvodci UDI průvodce Designer konfiguračním souboru.)
Nadřazené prvky DesignerConfig
Obsah Validátor
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad

<DesignerConfig> + <TaskLibrary> - <ValidatorLibrary> +<Validator DLL="" Description="Vyžaduje text v poli" Type="Microsoft.Wizard.Validation.NonEmpty" Name="NonEmpty"> +<Validator DLL="" Description="Doesn't povolit, aby určité znaky byly v poli" Type="Microsoft.Wizard.Validation.InvalidChars" Name="InvalidChars"> +<Validator DLL="" Description="Musí dodržovat předdefinovaný vzor" Type="Microsoft.Wizard.Validation.RegEx" Name=" NamedPattern"> +<Validator DLL="" Description="Vyžadovat, aby obsah odpovídal regulárnímu výrazu" Type="Microsoft.Wizard.Validation.RegEx" Name="RegEx"></ValidatorLibrary> + <DesignerMappings></DesignerConfig>

Designer Průvodce UDI

Ovládací prvky

Ovládací prvky používané k vytvoření vlastních editorů stránek průvodce pro použití v UDI Wizard Designer jsou WPF UserControl instance. Tabulka 69 uvádí ovládací prvky, které můžete použít k vytvoření vlastních editorů stránek průvodce.

Tabulka 69. Ovládací prvky, které lze použít k vytvoření vlastních editorů stránek průvodce

Ovládací prvek Popis
CollectionTControl Tento ovládací prvek slouží k úpravě dat uložených v prvku Data v elementu Page .
FieldElementControl Tento ovládací prvek se používá k úpravě pole, které je obvykle propojeno s ovládacím prvku TextBox na stránce .xaml.
SetterControl Tento ovládací prvek se používá ke změně hodnoty elementu setter v konfiguračním souboru průvodce UDI.

CollectionTControl

Tento ovládací prvek poskytuje mnoho možností pro úpravy dat. Nejlepší způsob, jak se naučit používat tento ovládací prvek, je podívat se na ukázku, která ukazuje, jak upravit data v elementu Data na stránce. Ukázka konkrétně ukazuje, jak přidávat, odebírat a upravovat položky v tomto ovládacím prvku.

FieldElementControl

Tento ovládací prvek slouží k úpravě pole, které je obvykle propojeno s ovládacím prvku TextBox na stránce .xaml.

Příklad

Následující úryvek ze souboru .xaml ukazuje použití FieldElementControl ke konfiguraci výchozí hodnoty pole na stránce průvodce pomocí podřízeného ovládacího prvku TextBox :

<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>
Vlastnosti
FieldData

Tento řetězec vlastnost obsahuje informace pro připojení FieldElementControl k podkladové XML pole. Připojení se vytvoří k vlastnosti rozhraní editoru stránek. Následující výňatek ze souboru .xaml znázorňuje použití vlastnosti FieldData :

FieldData="{Binding DataContext.Location, ElementName=ControlRoot}"

V tomto výňatku se rozhraní editoru stránek nazývá ControlRoot a je zadáno v parametru ElementName . Vazba se provádí na Vlastnost DataContext.Location rozhraní editoru stránek ControlRoot . DataContext je model zobrazení, který odkazuje na prvek Page v konfiguračním souboru průvodce UDI. Umístění je vlastnost zobrazení, která vrací seznam možných umístění a je definována elementem Data v konfiguračním souboru průvodce UDI. Každé umístění je definováno elementem DataItem v konfiguračním souboru průvodce UDI.

Headertext

Tato řetězcová vlastnost umožňuje zadat hlavičku pro FieldElementControl ovládací prvek. Záhlaví funguje jako název ovládacího prvku a je naformátované jako tučný oranžový text zobrazený přímo nad ovládacím prvku.

Instructiontext

Tato vlastnost řetězce umožňuje zadat informační text pro FieldElementControl ovládací prvek. Text se obvykle používá k poskytnutí stručného popisu pole a vysvětlení, jak konfigurace pole ovlivňuje odpovídající stránku průvodce.

HideEnableButton

Tato logická vlastnost umožňuje řídit viditelnost tlačítka, které mění stav mezi Odemknuté a Uzamčeno (povoleno nebo zakázáno). Pokud je nastavená hodnota:

  • Ano, tlačítko se nezobrazuje

  • False, tlačítko je viditelné (jedná se o výchozí hodnotu.)

HideDefaultTab

Tato logická vlastnost umožňuje řídit viditelnost oddílu, který obsahuje ovládací prvek použitý k nastavení výchozí hodnoty. I když vlastnost odkazuje na kartu, není na FieldElementControl žádná karta, ale spíše část, která může být skryta. Pokud je nastavená hodnota:

  • Pravda, oddíl není viditelný.

  • Nepravda, oddíl je viditelný (Toto je výchozí hodnota.)

Skrýtobjednávku

Tato logická vlastnost umožňuje řídit viditelnost ohraničení kolem ovládacího prvku pole. Pokud je nastavená hodnota:

  • Pravda, ohraničení není viditelné

  • False, ohraničení je viditelné (Toto je výchozí hodnota.)

SkrýtImage

Tato logická vlastnost umožňuje řídit viditelnost obrázku, který FieldImageSource vlastnost konfiguruje. Pokud je nastavená hodnota:

  • Pravda, obrázek není viditelný.

  • False, obrázek je viditelný (jedná se o výchozí hodnotu.)

HideValidationTab

Tato logická vlastnost umožňuje řídit viditelnost oddílu, ve kterém se spravuje seznam validátorů. I když vlastnost odkazuje na kartu, není na FieldElementControl žádná karta, ale spíše část, která může být skryta. Pokud je nastavená hodnota:

  • Pravda, oddíl není viditelný.

  • Nepravda, oddíl je viditelný (Toto je výchozí hodnota.)

HideSummaryTab

Tato logická vlastnost umožňuje řídit viditelnost oddílu, ve kterém konfigurujete souhrnné pole popis. Popis a odpovídající hodnota z pole jsou zobrazeny na stránce průvodce SummaryPage v toku fáze. I když vlastnost odkazuje na kartu, není na FieldElementControl žádná karta, ale spíše část, která může být skryta. Pokud je nastavená hodnota:

  • Pravda, oddíl není viditelný.

  • Nepravda, oddíl je viditelný (Toto je výchozí hodnota.)

HideTaskSequenceTab

Tato logická vlastnost umožňuje řídit viditelnost oddílu, ve kterém konfigurujete proměnnou pořadí úkolů odpovídající danému poli. I když vlastnost odkazuje na kartu, není na FieldElementControl žádná karta, ale spíše část, která může být skryta. Pokud je nastavená hodnota:

  • Pravda, oddíl není viditelný.

  • Nepravda, oddíl je viditelný (Toto je výchozí hodnota.)

SetterControl

Pomocí tohoto ovládacího prvku můžete upravit hodnotu elementu Setter v konfiguračním souboru průvodce UDI. Tento ovládací prvek obsahuje podřízený ovládací prvek použitý k úpravě hodnoty elementu setter .

Příklad

Následující výňatek ze souboru .xaml ilustruje použití SetterControl k úpravě elementu Setters názvem KeyLocationSetter pomocí podřízeného ovládacího prvku TextBox .

<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>
Vlastnosti
SetterData

Je potřeba vytvořit vazbu k vlastnosti zobrazení nebo modelu zobrazení, který se připojuje k setter. Je to podobné, jako byste naváže na pole, jak je popsáno pro FieldElementControl.

Headertext

Tato vlastnost umožňuje nastavit text, který se zobrazí v záhlaví ovládacího prvku. Tuto vlastnost si můžete představit jako název pro ovládací prvek; ve výchozím nastavení se zobrazuje jako tučný oranžový text.

Instructiontext

Nastavte tuto vlastnost na text, který se má zobrazit pod záhlavím – obvykle se jedná o instruktážní text, který uživateli vlastního editoru řekne, kdy a proč by chtěl změnit chování pole.

Rozhraní

Tabulka 70 uvádí rozhraní, která můžete použít k vytvoření vlastních editorů stránek průvodce.

Tabulka 70. Rozhraní, která lze použít k vytvoření vlastních editorů stránek průvodce

Rozhraní Popis
IDataService Toto rozhraní slouží k připojení polí k datovým prvkům v konfiguračním souboru průvodce UDI.
IMessageBoxService Toto rozhraní poskytuje přístup k metodám, které můžete použít k zobrazení polí zpráv.

IDataService

Toto rozhraní obsahuje několik vlastností a metod, ale existuje pouze jedna vlastnost, kterou chcete potřebovat. Tato vlastnost je jediná zde zdokumentovaná.

Injektáž závislostí můžete použít k získání ukazatele na toto rozhraní pomocí kódu podobného tomuto ve vaší třídě:

[Dependency]
public IDataService DataService { get; set; }
Vlastnosti

Tabulka 71 uvádí vlastnosti rozhraní IDataService .

Tabulka 71. Vlastnosti rozhraní IDataService

Rozhraní Popis
Aktuální stránka Tato vlastnost poskytuje přístup k elementům XML, atributům a hodnotám pod kontextem aktuální stránky, která se upravuje v konfiguračním souboru Průvodce UDI.
Aktuální stránka
XElement CurrentPage { get; set; }

Tato vlastnost poskytuje přístup k souboru XML pro aktuální stránku. Tuto vlastnost byste nikdy neměli nastavovat, ale máte možnost upravit kód XML pro vaši stránku. V ukázkovém editoru stránek jsou uvedeny příklady úprav XML. Tuto vlastnost používáte především v případě, že máte vlastní data. Pro pole a vlastnosti (settery) můžete použít předem připravené ovládací prvky, které se starají o všechny podrobnosti.

IMessageBoxService

Toto rozhraní poskytuje přístup k metodám, které můžete použít k zobrazení polí zpráv. Možná vás zajímá, proč potřebujete rozhraní pro zobrazení okna se zprávou. Skutečností je, že ne: Microsoft používá toto rozhraní v kódu, protože pomáhá při psaní automatizovaných testů pro stránky návrháře.

Použití těchto metod však poskytuje jednu užitečnou výhodu: Dialogová okna mají vždy "vlastníka" nastavený na UDI Průvodce, který zajišťuje, že dialogové okno je seskupeno správně s hlavním oknem.

Injektáž závislostí můžete použít k získání ukazatele na toto rozhraní pomocí kódu podobného tomuto ve vaší třídě:

[Dependency]
public IMessageBoxService MessageBoxes { get; set; }
Metody

Tabulka 72 uvádí metody pro rozhraní IMessageBoxService .

Tabulka 72. Metody pro rozhraní IMessageBoxService

Metoda Popis
ZobrazitMessageBox Tato přetížená metoda se používá k zobrazení okna se zprávou s následujícími členy:

- ShowMessageBox(řetězcová zpráva, řetězcová popis, ikona MessageBoxImage)
- ShowMessageBox(řetězcová zpráva, řetězec popis, tlačítko MessageBoxButton, ikona MessageBoxImage)
- ShowMessageBox(výjimka výjimky)
ZobrazitDialogWindow Tato metoda slouží k vytvoření nového dialogového okna.
ZobrazitWizardWindow Tato metoda slouží k zobrazení vlastního editoru uvnitř dialogového okna, které obsahuje tlačítka Další a Zpět pro navigaci.
ZobrazitMessageBox

Tato metoda zobrazí okno se zprávou, které je podřízeným objektem editoru stránek vlastního průvodce. Tento člen je přetížen: Tabulka 73 obsahuje seznam členů a stručný popis každého člena. Úplné informace o jednotlivých členech (včetně syntaxe, použití a příkladů) najdete v části, která odpovídá jednotlivým členům.

Tabulka 73. Přetížené členy pro metodu ShowMessagBox

Členské Popis
ShowMessageBox(řetězcová zpráva, řetězcová popis, ikona MessageBoxImage) Zobrazí okno se zprávou s ikonou a tlačítkem OK .
ShowMessageBox(řetězcová zpráva, řetězec popis, tlačítko MessageBoxButton, ikona MessageBoxImage) Zobrazí okno se zprávou s ikonou a různými možnými kombinacemi tlačítek.
ShowMessageBox(výjimka výjimky) Zobrazí okno se zprávou, které obsahuje informace o výjimce a obsahuje tlačítko OK .
ShowMessageBox(řetězcová zpráva, řetězcová popis, ikona MessageBoxImage)
void ShowMessageBox(String message, String caption, MessageBoxImage icon);

Tato metoda zobrazí okno se zprávou s tlačítkem OK . Viz tabulka 74.

Tabulka 74. Parametry pro metodu ShowMessageBox(String message, String popis, MessageBoxImage icon)

Parametr Popis
Zprávu Zpráva, která se má zobrazit v oblasti obsahu okna zprávy
popis Text, který se má zobrazit v záhlaví dialogového okna
Ikonu Typ ikony, která se má zobrazit v okně zprávy
ShowMessageBox(řetězcová zpráva, řetězec popis, tlačítko MessageBoxButton, ikona MessageBoxImage)
MessageBoxResult ShowMessageBox(string message, string caption, MessageBoxButton button, MessageBoxImage icon);

Tato metoda zobrazí okno se zprávou se sadou tlačítek, která chcete zobrazit, a sestavy, které tlačítko jste vybrali. Viz tabulka 75.

Tabulka 75. Parametry pro metodu ShowMessageBox(řetězcová zpráva, řetězec popis, tlačítko MessageBoxButton, ikona MessageBoxImage)

Parametr Popis
Zprávu Zpráva, která se má zobrazit v oblasti obsahu okna zprávy
popis Text, který se má zobrazit v záhlaví dialogového okna
Tlačítko Která tlačítka se mají zobrazit
Ikonu Typ ikony, která se má zobrazit v okně zprávy
ShowMessageBox(výjimka výjimky)
void ShowMessageBox(Exception exception);

Tato metoda zobrazí okno se zprávou, které hlásí informace o výjimce. Toto okno se zprávou obsahuje jediné tlačítko OK . Viz tabulka 76.

Tabulka 76. Parametry pro metodu ShowMessageBox(Výjimka výjimky)

Parametr Popis
Výjimka Výjimka, kterou chcete nahlásit (Dialogové okno používá výjimku. Zpráva jako obsah.)
ZobrazitDialogWindow
void ShowDialogWindow(Type viewType, DialogInteraction dialogPayload);

Tato metoda vytvoří nové dialogové okno, jehož obsahem je text, který zadáte v parametru viewType . UDI Designer vytvoří novou instanci tohoto typu a zabalí ji do dialogového okna, které má tlačítka OK a Zrušit.

Data předáváte ovládacímu prvku pomocí parametru dialogPayload. Řešení SampleEditor v adresáři sady SDK obsahuje příklad použití této funkce.

ZobrazitWizardWindow
void ShowWizardWindow(Type viewType, DialogInteraction dialogPayload);

Tato metoda umožňuje zobrazit vlastní editor v dialogovém okně, které obsahuje tlačítka Další a Zpět pro navigaci. Společnost Microsoft neposkytla ukázku použití této metody.

Referenční informace ke schématu konfiguračního souboru průvodce UDI

Tento soubor je využíván průvodcem UDI a nakonfigurován průvodcem UDI Designer. Tento soubor slouží ke konfiguraci:

  • Stránky průvodce zobrazené v průvodci UDI

  • Pořadí stránek průvodce v Průvodci UDI

  • Nastavení polí na každé stránce průvodce

  • Dostupné skupiny StageGroup v průvodci UDI Designer

  • Dostupné fáze v rámci každého průvodce nasazením v průvodci UDI Wizard Designer

    77 obsahuje seznam prvků v konfiguračním souboru průvodce UDI a jejich popisy. Element Wizard je kořenovým uzlem pro tento odkaz.

Tabulka 77. Prvky v konfiguračním souboru průvodce UDI a jejich popisy

Název elementu Popis
Data Seskupí jednotlivé prvky DataItem v elementu Page a je pojmenovaná atributem Name .
Dataitem Seskupí jednotlivé prvky Setter v elementu Page . Hierarchická data můžete vytvořit tak, že do elementu DataItem zahrnete jeden nebo více datových prvků. Každý prvek DataItem představuje jednotlivé položky. Například seznam dostupných jednotek může mít hodnotu DataItem pro zobrazovaný název a jiný prvek DataItem pro odpovídající písmeno jednotky.
Výchozí Určuje výchozí hodnotu pole zadaného v nadřazené části Pole nebo RadioGroup . Výchozí hodnota je nastavena na hodnotu v hranaté závorce tímto prvkem.
Knihovny dll Určuje knihovnu DLL, která má být načtena a odkazována průvodcem UDI a průvodcem UDI Designer.
Knihovny dll Seskupí jednotlivé prvky knihovny DLL .
Chyba Určuje možný kód chyby, který může úkol vrátit. Hodnota kódu chyby je vrácena hresult úlohy a je zachycena tímto prvkem, aby poskytovala konkrétnější informace o chybě.
Exitcode Určuje možný ukončovací kód úkolu. Ukončovací kódy jsou návratové kódy, které úloha očekává. Pro každý možný ukončovací kód vytvořte element ExitCode . V opačném případě můžete v atributu Value zadat hvězdičku (*) pro zpracování návratových kódů, které nejsou uvedeny v jiných elementech ExitCode .
Ukončovací kódy Seskupí sadu elementů ExitCode a Error pro element Task nebo Error element.
:----- Určuje instanci ovládacího prvku v elementu Page , který se používá k přizpůsobení pomocí XML. Ne všechny ovládací prvky umožňují přizpůsobení pomocí XML – pouze ovládací prvky, které používají element Field .
Pole Seskupí jednotlivé elementy Pole v elementu Page .
Soubor Určuje zdroj a cíl operace kopírování souborů pomocí typu úlohy Microsoft.Wizard.CopyFilesTask . Můžete zahrnout samostatný element File pro zkopírování více než jednoho souboru v jedné úloze.
Stránka Určuje instanci stránky a zahrnuje všechna nastavení konfigurace stránky.
PageRef Určuje odkaz na instanci stránky v rámci fáze v rámci skupiny StageGroup.
Stránky Seskupí jednotlivé prvky stránky .
RadioGroup Určuje skupinu přepínačů v elementu Pole .
StageGroup Určuje skupinu jedné nebo více fází.
StageGroups Seskupí sadu skupin fází v konfiguračním souboru průvodce UDI.
Setter Určuje nastavení vlastnosti hodnoty pro vlastnost, která je pojmenovaná ve vlastnosti Vlastnost .
Fázi Určuje fázi v rámci skupiny StageGroup a obsahuje jeden nebo více prvků PageRef .
Styl Seskupí jednotlivé prvky setter , které konfiguruje vzhled a chování průvodce UDI, včetně názvu zobrazeného v horní části průvodce a obrázku banneru zobrazeného v Průvodci UDI.
Úkol Určuje úlohu, která má být spuštěna na stránce zadané v nadřazené page element.
Úkoly Seskupí sadu úkolů pro prvek Stránky .
Validátor Určuje validátor pro ovládací prvek pole, který je zadán v nadřazené element Field .
Průvodce Určuje kořen pro všechny ostatní prvky.

Dat

Tento element seskupuje jednotlivé prvky DataItem v elementu Page a je pojmenován podle atributu Name .

Informace o prvku

Tabulka 78 obsahuje informace o prvku Data .

Tabulka 78. Informace o datových elementech

Atribut Hodnota
Počet výskytů Nula nebo více v rámci každého prvku Page (tento element je volitelný.)
Nadřazené prvky Page, DataItem
Obsah DataItem, Setter
Atributy elementu

Tabulka 79 obsahuje seznam atributů prvku Data a jejich popis.

Tabulka 79. Atributy a odpovídající hodnoty datového prvku

Atribut Popis
Název Určuje název prvku Data .
Poznámky

Atribut Name umožňuje kódu načíst konkrétní sadu dat.

Příklad

Žádný.

Dataitem

Tento element seskupuje jednotlivé prvky Setter v elementu Page . Hierarchická data můžete vytvořit tak, že do elementu DataItem zahrnete jeden nebo více datových prvků. Každý prvek DataItem představuje jednotlivé položky. Například seznam dostupných jednotek může mít hodnotu DataItem pro zobrazovaný název a jiný prvek DataItem pro odpovídající písmeno jednotky.

Informace o prvku

Tabulka 80 obsahuje informace o elementu DataItem .

Tabulka 80. Informace o elementu DataItem

Atribut Hodnota
Počet výskytů Nula nebo více v každém prvku Data (Tento prvek je volitelný.)
Nadřazené prvky Data
Obsah Data, Setter
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad

Žádný.

Výchozí

Tento element určuje výchozí hodnotu pole zadaného v nadřazené elementu Pole nebo RadioGroup . Výchozí hodnota je nastavena na hodnotu, kterou tento prvek závorky.

Informace o prvku

Tabulka 81 obsahuje informace o elementu Default .

Tabulka 81. Informace o výchozím elementu

Atribut Hodnota
Počet výskytů Nula nebo více v elementu Pole nebo RadioGroup (Tento prvek je volitelný.)
Nadřazené prvky Pole, radioskupina
Obsah Může to být libovolný obsah XML ve správném formátu, ale obvykle se jedná o standardní text.
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad

V následujícím příkladu je výchozí hodnota pole Časové pásmo nastavená na "Tichomořský standardní čas":

<Field Name="TimeZone" Enabled="true" VarName="OSDTimeZone" Summary="Time Zone:">
  <Default>Pacific Standard Time</Default>

Knihovny dll

Tento prvek určuje knihovnu DLL pro UDI Wizard a UDI Wizard Designer načíst a odkazovat.

Informace o prvku

Tabulka 82 obsahuje informace o elementu knihovny DLL .

Tabulka 82. Informace o prvku knihovny DLL

Atribut Hodnota
Počet výskytů Jeden nebo více v elementu knihoven DLL
Nadřazený element Knihovny dll
Obsah Pro tento prvek není povolený žádný obsah.
Atributy elementu

Tabulka 83 uvádí atributy elementu knihovny DLL a poskytuje popis každého prvku.

Tabulka 83. Atributy a odpovídající hodnoty elementu KNIHOVNY DLL

Atribut Popis
Name (Název) Určuje název knihovny DLL pro průvodce UDI a průvodce UDI Designer, na které se má odkazovat.
Poznámky

Žádný.

Příklad
<DLLs>
  <DLL Name="OSDRefreshWizard.dll" />
  <DLL Name="SharedPages.dll" />
</DLLs>

Knihovny dll

Tento prvek seskupuje jednotlivé prvky knihovny DLL .

Informace o prvku

Tabulka 84 obsahuje informace o elementu knihoven DLL .

Tabulka 84. Informace o elementech knihoven DLL

Atribut Hodnota
Počet výskytů Jeden
Nadřazené prvky Průvodce
Obsah Knihovny dll
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad
<DLLs>
   <DLL Name="OSDRefreshWizard.dll" />
   <DLL Name="SharedPages.dll" />
</DLLs>

Error

Tento prvek určuje možný kód chyby, který může úkol vrátit. Hodnota kódu chyby je vrácena a zachycena HRESULT úkolu, aby poskytovala konkrétnější informace o chybě.

Informace o prvku

Tabulka 85 obsahuje informace o elementu Error .

Tabulka 85. Informace o prvku Error

Atribut Hodnota
Počet výskytů Nula nebo více v rámci každého prvku ExitCode (Tento element je volitelný.)
Nadřazené prvky Ukončovací kódy
Obsah Jakýkoli obsah XML ve správném formátu
Atributy elementu

Tabulka 86 uvádí atributy elementu Error a obsahuje popis každého prvku.

Tabulka 86. Informace o prvku Error

Atribut Popis
Stav Určuje návratový stav úkolu, u kterého došlo k chybě. Obvykle je hodnota tohoto atributu nastavena na Error. Tato hodnota se zobrazí ve sloupci Stav na stránce průvodce v Průvodci UDI.
Text Určuje popisný text o chybovém stavu, ke kterému došlo u úlohy.
Typ Určuje, zda tento prvek představuje chybu, upozornění nebo úspěch. Hodnota zadaná vtype musí být jedinečná v rámci exitcodes elementu. Následující hodnoty jsou platné pro tento prvek:

– **0.**Prvek představuje úspěch.
- 1. Prvek představuje upozornění.
- -1. Element představuje chybu.
Hodnota Určuje hodnotu kódu, který úkol vrátil jako číselnou hodnotu. Zadání hodnoty hvězdičky (*) označuje výchozí prvek pro návratové kódy, které nejsou uvedeny v jiných prvcích Error .
Poznámky

Žádný.

Příklad

Žádný.

Exitcode

Tento prvek určuje možný ukončovací kód pro úlohu. Ukončovací kódy jsou návratové kódy, které úloha očekává. Pro každý možný ukončovací kód vytvořte element ExitCode . V opačném případě můžete v atributu Value zadat hvězdičku (*) pro zpracování návratových kódů, které nejsou uvedeny v jiných elementech ExitCode .

Informace o prvku

Tabulka 87 obsahuje informace o prvku ExitCode .

Tabulka 87. Informace o elementu ExitCode

Atribut Hodnota
Počet výskytů Nula nebo více v rámci každého prvku ExitCodes (Tento element je volitelný.)
Nadřazené prvky Ukončovací kódy
Obsah Alespoň jeden element ExitCode a nula nebo více prvků Error
Atributy elementu

Tabulka 88 uvádí atributy prvku ExitCode a obsahuje popis každého z nich.

Tabulka 88. Atributy a odpovídající hodnoty pro element ExitCode

Atribut Popis
Stav Určuje návratový stav úkolu. Hodnota tohoto atributu je zobrazena ve sloupci Stav na odpovídající stránce průvodce v průvodci UDI. Pro tento atribut můžete použít libovolné hodnoty, které jsou pro váš úkol smysluplné. Pro tento atribut se používají následující typické hodnoty:

-Úspěch
-Upozornění
-Chyba
Text Určuje popisný text o existujícím kódu úkolu.
Typ Určuje, zda tento prvek představuje chybu, upozornění nebo úspěch. Hodnota zadaná v typu musí být jedinečná v rámci prvku ExitCodes . Následující hodnoty jsou platné pro tento prvek:

- 0. Prvek představuje úspěch.
- 1. Prvek představuje upozornění.
- -1. Element představuje chybu.
Hodnota Určuje hodnotu kódu, který úkol vrátil jako číselnou hodnotu. Zadání hodnoty hvězdičky (*) označuje výchozí prvek pro návratové kódy, které nejsou uvedeny v jiných prvcích ExitCode .
Poznámky

Žádný.

Příklad

Žádný.

Ukončovací kódy

Tento element seskupuje sadu prvků ExitCode a Error pro element Task nebo Error .

Informace o prvku

Tabulka 89 obsahuje informace o elementu ExitCodes .

Tabulka 89. Informace o elementu ExitCodes

Atribut Hodnota
Počet výskytů Jeden v rámci každého prvku Task
Nadřazené prvky Úkol
Obsah Chyba, ukončovací kód
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad

Žádný.

:-----

Tento element určuje instanci ovládacího prvku v elementu Page , který slouží k zajištění přizpůsobení pomocí XML. Ne všechny ovládací prvky umožňují přizpůsobení pomocí XML – pouze ovládací prvky, které používají element Field .

Informace o prvku

Tabulka 90 obsahuje informace o elementu Pole .

Tabulka 90. Informace o prvku pole

Atribut Hodnota
Počet výskytů Nula nebo více v rámci každého prvku Field (Tento prvek je volitelný.)
Nadřazené prvky Pole
Obsah Výchozí, Validátor
Atributy elementu

Tabulka 91 uvádí atributy elementu Field a obsahuje popis každého prvku.

Tabulka 91 Atributy a odpovídající hodnoty elementu Field

Atribut Popis
Povoleno Určuje, jestli je v poli povolený vstup uživatele (atribut lze nastavit na Hodnotu True nebo False.)
Název Určuje název pole.
Souhrn Určuje popisný text zobrazený na stránce Průvodce souhrnem pro hodnotu, kterou toto pole nastaví.
VarName Určuje název proměnné pořadí úkolů přečtený nebo nakonfigurovaný pomocí pole v nadřazené elementu Field .
Poznámky

Tento element může obsahovat nula nebo více výchozích elementů a nula nebo více elementů Validator .

Příklad

Žádný.

Pole

Tento element seskupí jednotlivé elementy Pole v elementu Page .

Informace o prvku

Tabulka 92 obsahuje informace o elementu Fields .

Tabulka 92. Informace o prvku Pole

Atribut Hodnota
Počet výskytů Nula nebo více v rámci každého prvku Page (tento element je volitelný.)
Nadřazené prvky Stránka
Obsah Pole, radioskupina
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad

Žádný.

Soubor

Tento prvek určuje zdroj a cíl operace kopírování souboru pomocí typu úlohy Microsoft.Wizard.CopyFilesTask . Můžete zahrnout samostatný element File pro zkopírování více než jednoho souboru v jedné úloze.

Informace o prvku

Tabulka 93 obsahuje informace o elementu File .

Tabulka 93. Informace o elementu souboru

Atribut Hodnota
Počet výskytů Jeden nebo více pro každý úkol, který má typ úkolu Microsoft.Wizard.CopyFilesTask
Nadřazené prvky Úkol
Obsah Žádné
Atributy elementu

Tabulka 94 uvádí atributy elementu File a obsahuje popis každého prvku.

Tabulka 94. Atributy a odpovídající hodnoty elementu File

Atribut Popis
Dest Určuje plně kvalifikovanou nebo relativní cestu k cílové složce pro soubor zadaný v atributu Source . Proměnné prostředí jsou povoleny jako součást cesty.
Source (Zdroj) Určuje plně kvalifikovanou nebo relativní cestu ke zdrojovému souboru, který typ úlohy Microsoft.Wizard.CopyFilesTask zkopíruje. Tento atribut podporuje zástupné znaky, aby bylo možné kopírovat více souborů pomocí jednoho elementu File . Proměnné prostředí jsou povoleny jako součást cesty.
Poznámky

Žádný.

Příklad

Žádný.

Stránka

Tento element určuje instanci stránky a zahrnuje všechna nastavení konfigurace stránky.

Informace o prvku

Tabulka 95 obsahuje informace o prvku Page .

Tabulka 95. Informace o prvku stránky

Atribut Hodnota
Počet výskytů Jeden nebo více prvků v rámci každého prvku Pages
Nadřazené prvky Stránky
Obsah Data, Pole, Setter, Úkoly
Atributy elementu

Tabulka 96 uvádí atributy elementu Page a obsahuje popis každého prvku.

Tabulka 96. Atributy a odpovídající hodnoty prvku Page

Atribut Popis
Displayname Určuje uživatelsky popisný název stránky průvodce, který se zobrazí v Designer Průvodce UDI. Tento název je obvykle popisnější než atribut Name .
Název Určuje název stránky průvodce zobrazené v průvodci UDI Designer.
Typ Určuje typ stránky průvodce, která přímo souvisí s konkrétní stránkou průvodce v rámci knihovny DLL.
Poznámky

Žádný.

Příklad

Žádný.

PageRef

Tento prvek určuje odkaz na instanci stránky v rámci fáze v rámci StageGroup.

Informace o prvku

Tabulka 97 obsahuje informace o elementu PageRef .

Tabulka 97. PageRef – informace o elementu

Atribut Hodnota
Počet výskytů Jeden nebo více prvků v rámci prvku Stage
Nadřazené prvky Fázi
Obsah Žádné
Atributy elementu

Tabulka 98 uvádí atribut elementu PageRef a obsahuje jeho popis.

Tabulka 98. Atributy a odpovídající hodnoty elementu PageRef

Atribut Popis
Stránka Určuje instanci stránky v rámci fáze v rámci skupiny StageGroup. Nastavte tuto hodnotu na atribut Name prvku Page .
Poznámky

Žádný.

Příklad

Žádný.

Stránky

Tento prvek seskupí jednotlivé prvky stránky .

Informace o prvku

Tabulka 99 obsahuje informace o elementu Pages .

Tabulka 99. Informace o prvku Pages

Atribut Hodnota
Počet výskytů Jeden
Nadřazené prvky Průvodce
Obsah Stránka
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad
<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

Tento prvek určuje skupinu přepínačů s v elementu Pole .

Informace o prvku

Tabulka 100 obsahuje informace o prvku RadioGroup .

Tabulka 100 Informace o prvku RadioGroup

Atribut Hodnota
Počet výskytů Nula nebo více v elementu Fields (Tento element je volitelný.)
Nadřazené prvky Pole
Obsah Výchozí
Atributy elementu

Tabulka 101 obsahuje seznam atributů prvku RadioGroup a jejich popis.

Tabulka 101. Atributy a odpovídající hodnoty prvku RadioGroup

Atribut Popis
Uzamčeno Určuje, jestli je skupina přepínačů povolená pro uživatelský vstup. Atribut lze nastavit na:

- Ano. Určuje, že přepínače jsou zakázané a uživatelé nemůžou vybrat přepínač ve skupině.
- Nepravda. Určuje, že přepínače jsou povolené a uživatelé můžou vybrat přepínač ve skupině.
Název Určuje název skupiny přepínačů.
Poznámky

Žádný.

Příklad

Žádný.

StageGroup

Tento prvek určuje skupinu fází nasazení.

Informace o prvku

Tabulka 102 obsahuje informace o elementu StageGroup .

Tabulka 102. Informace o prvku StageGroup

Atribut Hodnota
Počet výskytů Jeden nebo více prvků v elementu StageGroups
Nadřazené prvky StageGroups
Obsah Fázi
Atributy elementu

Tabulka 103 obsahuje atributy elementu StageGroup a popis atributu.

Tabulka 103. Atributy a odpovídající hodnoty pro element StageGroup

Atribut Popis
Displayname Určuje uživatelsky popisný název skupiny fází, který se zobrazí v průvodci UDI Wizard Designer. Tento název je obvykle popisnější než atribut Name .
Poznámky

Žádný.

Příklad

Žádný.

StageGroups

Tento element seskupuje sadu skupin fází v konfiguračním souboru průvodce UDI.

Informace o prvku

Tabulka 104 obsahuje informace o elementu StageGroups .

Tabulka 104. Informace o prvku StageGroups

Atribut Hodnota
Počet výskytů Nula nebo jedna v elementu Průvodce
Nadřazené prvky Průvodce
Obsah StageGroup
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad

Žádný.

Setter

Tento prvek určuje nastavení vlastnosti pro hodnotu vlastnosti, která je pojmenovaná ve vlastnosti Vlastnost .

Informace o prvku

Tabulka 105 obsahuje informace o elementu Setter .

Tabulka 105. Informace o elementu Setter

Atribut Hodnota
Počet výskytů Nula nebo více v rámci každého nadřazeného elementu (Tento element je volitelný.)
Nadřazené prvky Data, DataItem, Page, Style, Task, Validator
Obsah Obsahuje řetězcovou hodnotu v atributu Property.
Atributy elementu

Tabulka 106 uvádí atribut elementu Setter a obsahuje jeho popis.

Tabulka 106. Atributy a odpovídající hodnoty elementu Setter

Atribut Popis
Vlastnost Určuje název vlastnosti, která se nastavuje. Název vlastnosti je nastaven na hodnotu, kterou tento atribut závorky.
Poznámky

Žádný.

Příklad

Žádný.

Fázi

Tento prvek určuje stage v rámci StageGroup a obsahuje jeden nebo více elementů PageRef .

Informace o prvku

Tabulka 107 obsahuje informace o elementu Stage .

Tabulka 107. Informace o prvku fáze

Atribut Hodnota
Počet výskytů Jeden nebo více prvků v elementu StageGroup
Nadřazené prvky StageGroup
Obsah PageRef
Atributy elementu

Tabulka 108 obsahuje seznam atributů prvku Stage a jejich popis.

Tabulka 108. Atributy a odpovídající hodnoty prvku Stage

Atribut Popis
Displayname Určuje uživatelsky popisný název stránky průvodce, který se zobrazí v Designer Průvodce UDI. Tento název je obvykle popisnější než atribut Name .
Název Určuje název fáze. Hodnota tohoto prvku se používá při spuštění Průvodce UDI s parametrem příkazového řádku /stage: name .
Poznámky

Žádný.

Příklad

Žádný.

Styl

Tento element seskupí jednotlivé prvky Setter , které konfiguruje vzhled a chování Průvodce UDI, včetně názvu zobrazeného v horní části průvodce a obrázku banneru zobrazeného v Průvodci UDI.

Informace o prvku

Tabulka 109 obsahuje informace o elementu Styl.

Tabulka 109. Informace o elementu stylu

Atribut Hodnota
Počet výskytů Jeden
Nadřazené prvky Průvodce
Obsah Setter
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad
<Style>
  <Setter Property="bannerFilename">UDI_Wizard_Banner.bmp</Setter>
  <Setter Property="title">Operating System Deployment (OSD) Refresh Wizard</Setter>
</Style>

Úloha

Tento element určuje úlohu, která má být spuštěna na stránce zadané v nadřazené page element.

Informace o prvku

Tabulka 110 obsahuje informace o elementu Task .

Tabulka 110 Informace o prvku úkolu

Atribut Hodnota
Počet výskytů Jeden nebo více prvků v elementu Tasks
Nadřazené prvky Úkoly
Obsah ExitCodes, File, Setter
Atributy elementu

Tabulka 111 uvádí atributy elementu Task a obsahuje popis každého prvku.

Tabulka 111. Atributy a odpovídající hodnoty elementu Task

Atribut Popis
DependsOn Určuje, zda je úkol závislý na jiném úkolu. Hodnota tohoto atributu je nastavena na atribut Name jiného prvku Task . Poznámka: Tento atribut nelze nakonfigurovat pomocí průvodce UDI Designer. Tento atribut však můžete do elementu Task přidat ručně přímou úpravou souboru .xml.
Displayname Určuje popisný název úlohy zobrazené v průvodci UDI Designer. Tento název je obvykle popisnější než atribut Name .
Název Určuje název úkolu. Tento název musí být jedinečný.
Typ Určuje typ úlohy, která má být spuštěna, která je definována v knihovně DLL obsahující úlohu.
Poznámky

Žádný.

Příklad

Žádný.

Úlohy

Tento prvek seskupí sadu úkolů pro prvek Page .

Informace o prvku

Tabulka 112 obsahuje informace o elementu Tasks .

Tabulka 112. Informace o elementu Tasks

Atribut Hodnota
Počet výskytů Nula nebo jedna v každém prvku Page (tento prvek je volitelný.)
Nadřazené prvky Stránka
Obsah Úkol
Atributy elementu

Tabulka 113 obsahuje seznam atributů elementu Tasks a jejich popis.

Tabulka 113. Atributy a odpovídající hodnoty elementu Tasks

Atribut Popis
NameTitle Určuje popis, který se zobrazí v horní části sloupce, který obsahuje název úkolů na příslušné stránce průvodce.
StatusTitle Určuje popis, který se zobrazí v horní části sloupce, který obsahuje stav úkolů na příslušné stránce průvodce.
Poznámky

Žádný.

Příklad

Žádný.

Validátor

Tento element určuje validátor pro ovládací prvek pole, který je zadán v nadřazené element Field .

Informace o prvku

Tabulka 114 obsahuje informace o elementu Validator .

Tabulka 114. Informace o elementu validátoru

Atribut Hodnota
Počet výskytů Nula nebo jedna v elementu Pole
Nadřazené prvky :-----
Obsah Setter
Atributy elementu

Tabulka 115 uvádí atribut elementu Validator a obsahuje jeho popis.

Tabulka 115. Atributy a odpovídající hodnoty pro element Validator

Atribut Popis
Typ Určuje typ validátoru, který je definován v knihovně DLL obsahující validátor.
Poznámky

Žádný.

Příklad

Žádný.

Průvodce

Tento element určuje kořen pro všechny ostatní prvky.

Informace o prvku

Tabulka 116 obsahuje informace o elementu Wizard .

Tabulka 116. Informace o elementu Průvodce

Atribut Hodnota
Počet výskytů Jeden
Nadřazené prvky Žádné
Obsah Knihovny DLL, stránky, skupiny fází, styly
Atributy elementu

Tento prvek nemá žádné atributy.

Poznámky

Žádný.

Příklad
<Wizard>
   + <DLLs>
   + <Style>
   + <Pages>
   + <StageGroups>
</Wizard>