Felhasználóalapú telepítés – Fejlesztői útmutató

A felhasználóalapú telepítés (UDI) segít leegyszerűsíteni a Windows-ügyfél® operációs rendszerek, például a Windows 8.1 telepítését a Microsoft® System Center 2012 R2 Configuration Manager operációsrendszer-központi telepítési (OSD) funkcióját használó számítógépeken. Az UDI a Microsoft Deployment Toolkit (MDT) része.

Bevezetés

Az operációs rendszerek OSD szolgáltatással történő központi telepítésekor általában meg kell adnia az operációs rendszer központi telepítéséhez szükséges összes információt. Az információk konfigurációs fájlokban vagy adatbázisokban (például a CustomSettings.ini fájlban vagy az MDT-adatbázisban [MDT DB]) konfigurálhatók. Az üzembe helyezés megkezdése előtt meg kell adnia az összes konfigurációs beállítást.

Az UDI egy varázslóalapú felületet biztosít, amely lehetővé teszi a konfigurációs információk megadását közvetlenül az üzembe helyezés végrehajtása előtt. Ez a viselkedés lehetővé teszi általános OSD-feladatütemezések létrehozását, majd az üzembe helyezéskor számítógépspecifikus információk megadását, ami nagyobb rugalmasságot biztosít az üzembehelyezési folyamat során.

Célközönség

Ez az útmutató azoknak a fejlesztőknek készült, akik egyéni varázslólapokat hoznak létre az UDI varázslóhoz, és egyéni varázslólapszerkesztőket az UDI varázsló Tervező. Ez az útmutató feltételezi, hogy ismeri a Windows-alkalmazások fejlesztését a következőkkel:

  • C++, amely egyéni varázslólapok létrehozására szolgál

  • Microsoft .NET-keretrendszer, amely egyéni varázslólapszerkesztők létrehozására szolgál

  • Windows megjelenítési alaprendszer (WPF), amely egyéni varázslólapszerkesztők létrehozására szolgál

  • A WPF által támogatott nyelvek( például C#, C++vagy Microsoft Visual Basic® .NET), amelyek egyéni varázslólapszerkesztők létrehozásához használhatók

Az útmutató ismertetése

Ez az útmutató a szervezet UTI-jának testreszabásához szükséges referenciainformációkat tartalmazza. Ez az útmutató nem tárgyalja a felügyeleti vagy működési témaköröket, például az MDT telepítését (amely tartalmazza az UDI-t), az UDI konfigurálását az operációs rendszerek és alkalmazások központi telepítéséhez, vagy az UDI varázslóval végzett központi telepítéseket. Ezekről a témakörökről további információt az MDT-ben található Using the Microsoft Deployment Toolkit (A Microsoft deployment toolkit használata) című témakörben talál.

Az UDI-fejlesztés áttekintése

Az UDI fejlesztése lehetővé teszi az UDI által biztosított funkciók kiterjesztését. Az UDI-fejlesztés általában akkor szükséges, ha az UDI üzembehelyezési folyamata által felhasznált további információkat szeretne gyűjteni. Ezeket a további információkat általában olyan feladatütemezési változókként menti a rendszer, amelyeket a feladatütemezés egy UDI feladatütemezésben Configuration Manager olvasni.

UDI-architektúra

Az UDI-fejlesztés magas szintű célja, hogy egyéni varázslólapokat hozzon létre, amelyek megjeleníthetők az UDI varázslóban. Egyéni varázslólapok létrehozásával kiterjesztheti az UDI meglévő funkcióit, hogy megfeleljenek a szervezet üzleti és műszaki követelményeinek. Az egyéni varázslólap az UDI által biztosított varázslólapok mellett vagy helyett gyűjt adatokat.

Az 1. ábra az UDI varázsló Tervező és az UDI varázsló közötti kapcsolatot szemlélteti.

1. ábra. Az UDI varázsló és az UDI varázsló közötti kapcsolat Tervező 1. ábra. Az UDI varázsló és az UDI varázsló közötti kapcsolat Tervező

1. ábra. Az UDI varázsló és az UDI varázsló közötti kapcsolat Tervező

Elméleti szinten az UDI-fejlesztés magában foglalja a következők létrehozását:

  • Egyéni varázslólapok. A varázsló lapjai megjelennek az UDI varázslóban, és összegyűjtik az üzembehelyezési folyamat befejezéséhez szükséges információkat. Varázslólapokat a C++ használatával hozhat létre a Microsoft Visual Studióban®. Az egyéni varázslólapokat az UDI varázsló által beolvasott DLL-ekként implementáljuk. Az UDI szoftverfejlesztői készlet (SDK) egy példát tartalmaz az egyéni varázslólapok létrehozására.

  • Egyéni varázsló lapszerkesztői. A varázsló lapszerkesztői segítségével konfigurálhatja az egyéni varázslólap viselkedését. Az egyéni varázsló lapszerkesztői DLL-ként vannak implementálva, amelyeket az UDI varázsló Tervező olvasni. A varázsló lapszerkesztőit a következőkkel hozhatja létre:

    • WPF 4.0-s verzió

    • Microsoft Prism 4.0-s verzió

    • Microsoft Unity Application Block (Unity) 2.1-es verzió

      Az MDT tartalmazza az összes olyan szerelvényt, amely egy egyéni varázslólap-szerkesztő létrehozásához szükséges az UDI varázsló Tervező. Az UDI SDK egy példát tartalmaz az egyéni varázslólapszerkesztők létrehozására.

    Emellett az UDI varázsló Tervező használja a varázsló lapszerkesztőjének konfigurációs fájljait. A varázsló lapszerkesztőjének konfigurációs fájljait az egyéni varázslólapok és egyéni varázslólapszerkesztők létrehozásának folyamatának részeként hozhatja létre. Az UDI varázsló Tervező létrehozza a szükséges XML-információkat az UDI varázsló konfigurációs fájljában és a megfelelő .app fájlban.

Az UDI fejlesztési környezet előkészítése

Mielőtt saját egyéni varázslólapokat és varázslólapszerkesztőket hoz létre, hajtsa végre a következő lépéseket az UDI fejlesztési környezet előkészítéséhez:

  1. Készítse elő az UDI fejlesztési környezet előfeltételeit az UDI-fejlesztési környezet előfeltételeinek előkészítését ismertető cikkben leírtak szerint.

  2. Konfigurálja az UDI fejlesztési környezetet az UDI fejlesztői környezet konfigurálása című cikkben leírtak szerint.

  3. Ellenőrizze, hogy az UDI fejlesztési környezet megfelelően van-e konfigurálva az UDI fejlesztői környezet ellenőrzése című szakaszban leírtak szerint.

Az UDI fejlesztési környezet előfeltételeinek előkészítése

Az UDI fejlesztési környezet előfeltételeinek előkészítéséhez hajtsa végre a következő lépéseket:

  1. Készítse elő az UDI fejlesztési környezet hardverkövetelményeit az UDI fejlesztői környezet hardverkövetelményeinek előkészítését ismertető cikkben leírtak szerint.

  2. Készítse elő az UDI fejlesztői környezet szoftverkövetelményeit az UDI fejlesztői környezet szoftver előfeltételeinek előkészítése című cikkben leírtak szerint.

Az UDI fejlesztői környezet hardveres előfeltételeinek előkészítése

Az UDI fejlesztői környezet hardverkövetelményei megegyeznek a Microsoft Visual Studio ön által használt kiadásának hardverkövetelményével. Ezekről a követelményekről további információt a Visual Studio dokumentációjában, az egyes kiadások rendszerkövetelményeiben talál.

Az UDI fejlesztői környezet szoftver előfeltételeinek előkészítése

Az UDI fejlesztési környezet a következő szoftveres előfeltételekkel rendelkezik:

  • Bármely Windows operációs rendszer, amelyet a Visual Studio 2010 támogat (Windows 7 vagy Windows Server® 2008 R2 használata ajánlott.)

    Szüksége lesz egy Olyan Windows operációs rendszerre, amely támogatja a fejleszteni kívánt processzorarchitektúrát. 32 bites és 64 bites UDI-fejlesztést végezhet 64 bites operációs rendszer használatával. 32 bites operációs rendszereken csak 32 bites UDI-fejlesztést végez. Ezért 64 bites operációs rendszert kell használnia.

    Megjegyzés:

    A Windows operációs rendszer IntelItanium-verziói (IA-64) nem támogatottak az UDI fejlesztői környezetekben.

    A Visual Studio 2010 által támogatott operációs rendszerekkel kapcsolatos további információkért tekintse meg az egyes kiadások rendszerkövetelményét a Visual Studio dokumentációjában.

  • Microsoft .NET-keretrendszer 4.0-s verzió (a Visual Studio 2010-hez szükséges)

  • C++ nyelv (az UDI varázsló oldalainak bővítéséhez használt nyelv)

  • A WPF által támogatott egyéb nyelvek, például a C#, a Visual Basic .NET vagy a C++/Common Language Infrastructure, amelyek az UDI varázsló Tervező varázsló lapszerkesztőinek bővítésére szolgálnak

    Megjegyzés:

    Az UDI varázsló Tervező varázsló lapszerkesztőinek minta forráskódja C# nyelven van megírva. Ha a minta forráskódot szeretné használni, telepítse a C#-nyelvet.

Az UDI fejlesztői környezet konfigurálása

Az UDI fejlesztési környezet előfeltételeinek teljesülése után hajtsa végre a következő lépéseket az UDI-fejlesztési környezet konfigurálásához:

  1. Telepítse a Visual Studio 2010-et.

    Győződjön meg arról, hogy a C++ nyelvet és a WPF által támogatott bármely más nyelvet telepíti.

    Megjegyzés:

    Az UDI varázsló Tervező szerkesztőoldalainak minta forráskódja C# nyelven van megírva. Ha a minta forráskódot szeretné használni, telepítse a C#-nyelvet.

    A Visual Studio 2010 telepítésével kapcsolatos további információkért lásd: A Visual Studio telepítése.

  2. Telepítse az MDT-t.

    Az MDT telepítésével kapcsolatos további információkért tekintse meg a "Telepítés vagy frissítés az MDT-re" című szakaszt az MDT-dokumentum Using the Microsoft Deployment Toolkit (A Microsoft üzembehelyezési eszközkészlet használata) című dokumentumában.

  3. A Windows Intézőben hozzon létre local_folder (ahol local_folder a fejlesztői számítógép helyi meghajtóján található mappa).

  4. Másolja a installation_folder\SDK mappát a local_folder (ahol installation_folder az a mappa, amelyben az MDT-t telepítette, és local_folder a fejlesztői számítógép helyi meghajtóján található mappa).

    Az SDK-mappát egy másik helyre másolja, mert az MDT telepítve van a Program Files mappában, amely nem írható emelt szintű engedélyek nélkül. Ha az SDK-mappát egy másik helyre másolja, emelt szintű engedélyek nélkül módosíthatja az SDK-mappában lévő fájlokat.

  5. Másolja a installation_folder\Templates\Distribution\Tools mappát a local_folder (ahol installation_folder az a mappa, amelyben az MDT-t telepítette, local_folder pedig a folyamat során korábban létrehozott mappa).

  6. Nevezze át a local_folder\Tools mappát a következőre: local_folder\OSDSetupWizard (ahol local_folder a folyamat során korábban létrehozott mappa).

    Ha elkészült, a local_folder alatti mappaszerkezetnek a 2. ábrán láthatóhoz hasonlóan kell kinéznie (ahol local_folder a folyamat során korábban létrehozott mappa, és UDIDevelopment néven jelenik meg az ábrán).

    2. ábra. Mappastruktúra az UDI-fejlesztéshez 2. ábra. Mappastruktúra az UDI-fejlesztéshez

    2. ábra. Mappastruktúra az UDI-fejlesztéshez

Az UDI fejlesztési környezet ellenőrzése

Az UDI fejlesztési környezet konfigurálásakor ellenőrizze, hogy az UDI-fejlesztési környezet megfelelően van-e konfigurálva. Ehhez győződjön meg arról, hogy a mintaprojektek megfelelően épülnek fel a Visual Studio 2010-ben.

Ellenőrizze, hogy az UDI fejlesztési környezet megfelelően van-e konfigurálva. Ehhez határozza meg, hogy:

Ellenőrizze, hogy a SamplePage Project buildelése megfelelően működik-e

A SamplePage projekt bemutatja, hogyan hozhat létre egyéni varázslólapot az UDI varázslóhoz. További információ a SamplePage projektről: Review the SamplePage Visual Studio Solution (A SamplePage Visual Studio megoldás áttekintése).

Annak ellenőrzése, hogy a SamplePage projekt megfelelően épül-e fel

  1. Indítsa el a Visual Studio 2010-et.

  2. Nyissa meg a SamplePage projektet.

    A SamplePage projekt a local_folder\SDK\UDI\SamplePage mappában található (ahol local_folder a folyamat során korábban létrehozott mappa).

  3. A Visual Studio 2010-ben a Megoldáskezelő kattintson a jobb gombbal a SamplePage projektre, majd válassza a Tulajdonságok lehetőséget.

    Megjelenik a SamplePage tulajdonságlapok párbeszédpanel.

  4. A SamplePage tulajdonságlapjai párbeszédpanelen lépjen a Konfiguráció tulajdonságai/Hibakeresés elemre.

  5. A Hibakeresés tulajdonságai területen, a Konfiguráció területen válassza a Minden konfiguráció lehetőséget.

  6. A Hibakeresés tulajdonságai területen, a Parancs területen írja be a $(TargetDir)\OSDSetupWizard.exe.

  7. A Hibakeresési tulajdonságok munkakönyvtár csoportjában írja be a $(TargetDir) kifejezést.

  8. A SamplePage tulajdonságlapjai párbeszédpanelen lépjen a Konfiguráció tulajdonságai/Buildesemények/Build utáni esemény elemre.

  9. A Buildelés utáni esemény tulajdonságai között írja be a következőt a Parancssor mezőbe:

    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. A SamplePage tulajdonságlapok párbeszédpanelen válassza az OK gombot.

  11. Mentse a projektet.

  12. A Hibakeresés menüben válassza a Hibakeresés indítása lehetőséget.

    Megjelenik a Microsoft Visual Studiopárbeszédpanel, amely jelzi, hogy a forrás elavult, és megkérdezi, hogy szeretné-e létrehozni a projektet.

  13. A Microsoft Visual Studio párbeszédpanelen válassza az Igen lehetőséget.

    Megjelenik a Nincs hibakeresési információ párbeszédpanel, amely tájékoztatja arról, hogy OSDSetupWizard.exe nem érhető el hibakeresési információ.

  14. A Nincs hibakeresési információ párbeszédpanelen válassza az Igen lehetőséget.

    Megnyílik az UDI varázsló, amelyen megjelenik az egyéni varázsló lapja.

  15. Ellenőrizze, hogy ki tud-e választani egy értéket a Tartózkodási hely kiválasztása területen.

  16. A varázsló mintalap űrlapján válassza a Mégse lehetőséget.

    Megjelenik a Mégse varázsló párbeszédpanel.

  17. A Mégse varázsló párbeszédpanelen válassza az Igen lehetőséget.

  18. Zárja be a Visual Studio 2010-et.

Ellenőrizze, hogy a SampleEditor-projekt megfelelően épül-e fel

A SampleEditor projekt bemutatja, hogyan hozhat létre egyéni varázslólapszerkesztőt az UDI varázsló Tervező. A SampleEditor projekttel kapcsolatos további információkért lásd : A SamplePage Visual Studio-megoldás áttekintése.

Annak ellenőrzése, hogy a SampleEditor projekt megfelelően épül-e fel

  1. Indítsa el a Visual Studio 2010-et.

  2. Nyissa meg a SampleEditor projektet.

    A SampleEditor projekt a local_folder\SDK\UDI\SampleEditor mappában található (ahol local_folder a folyamat során korábban létrehozott mappa).

  3. A Visual Studio 2010-ben a Megoldáskezelő válassza ki a SampleEditor projektet.

  4. A Projekt menüben válassza a Hivatkozás hozzáadása lehetőséget.

    Megnyílik a Hivatkozás hozzáadása párbeszédpanel.

  5. A Hivatkozás hozzáadása párbeszédpanelen válassza a Tallózás lapot.

  6. A Tallózás lapon lépjen a installation_folder\Bin mappába (ahol installation_folder az a mappa, amelyben az MDT-t telepítette). Jelölje ki a következő fájlokat, majd kattintson az OK gombra:

    • 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

    Megjegyzés:

    A Tallózás lapon több fájlt is kijelölhet, ha a CTRL billentyűt lenyomva tartva kijelöli a fájlokat.

  7. A Megoldáskezelő lépjen a SampleEditor/References elemre.

  8. Győződjön meg arról, hogy egyik hivatkozás sem tartalmaz figyelmeztetést vagy hibát.

  9. A Megoldáskezelő kattintson a jobb gombbal a SampleEditor projektre, majd válassza a Tulajdonságok lehetőséget.

    Megjelenik a SampleEditor Tulajdonságlapok párbeszédpanel.

  10. A SampleEditor tulajdonságlapjai párbeszédpanelen válassza a Hibakeresés lapot.

  11. A Hibakeresés lapon válassza a Külső program indítása lehetőséget.

  12. A Külső program indítása mezőbe írja be a installation_folder\Bin\UDIDesigner.exe (ahol installation_folder az a mappa, amelyben az MDT-t telepítette), majd kattintson az OK gombra.

    Tipp

    A három pont (...) gombra kattintva keresse meg a mappát, és válassza a UDIDesigner.exe lehetőséget.

  13. A Fájl menüben válassza az Összes mentése lehetőséget.

  14. Másolja a local_folder\SDK\SamplePage\SamplePage.dll.config fájlt a installation_folder\Bin\Config mappába (ahol local_folder a konfigurációs folyamat során korábban a fejlesztői számítógépen létrehozott mappa,installation_folder pedig az a mappa, amelybe az MDT-t telepítette).

  15. A Visual Studio 2010-ben a Hibakeresés menüben válassza a Hibakeresés indítása lehetőséget.

    Elindul az UDI varázsló Tervező.

  16. Az UDI varázsló Tervező menüszalagján válassza a Megnyitás lehetőséget.

    Megjelenik a Megnyitás párbeszédpanel.

  17. A Megnyitás párbeszédpanelen nyissa meg a local_folder\SDK\SamplePage\SamplePage\Config.xml fájlt (ahol local_folder a konfigurációs folyamat korábbi szakaszában a fejlesztői számítógépen létrehozott mappa).

    Megnyílik a Config.xml fájl, és megjelenik az Egyéni szakaszcsoport a részletek ablaktáblán.

  18. A részletek panelen válassza a Konfigurálás lapot.

  19. Tekintse át a Hely mező konfigurációs adatait, beleértve a következőket:

    • Zárolás feloldva gomb, amellyel engedélyezi vagy letiltja a Hely mezőt

    • Alapértelmezett érték mező, amelyben megadhatja a Hely mezőben megjelenítendő alapértelmezett értéket

    • Az összefoglaló lapon látható rövid megjelenítendő név, amelyben megadhatja az Összefoglalás lapon megjelenő információk képaláírás

    • Helylista mező, amely tartalmazza a lehetséges helyek listáját

  20. Zárja be az UDI varázsló Tervező.

  21. Zárja be a Visual Studio 2010-et.

Az UDI SDK-példák áttekintése

A fejlesztés megkezdése előtt tekintse át az UDI SDK-ban található példákat. Az útmutatóban található információk és a példákban szereplő forráskód segítségével saját egyéni UDI varázslólapokat és varázslólapszerkesztőket hozhat létre.

Tekintse át az UDI SDK-példákat az alábbiak áttekintésével:

Az SDK-mappa tartalmának áttekintése

Az UDI-fejlesztési környezet konfigurálása során az SDK-mappát abból a mappából másolta ki, amelyben az MDT-t telepítette egy másik létrehozott mappába. Az 1. táblázat az SDK-mappa alatt található mappákat sorolja fel, és ezek rövid leírását tartalmazza.

1. táblázat. Mappák az UDI SDK-ban

Mappa Ez a mappa a következőket tartalmazza:
Tartalmazza Az UDI varázsló egyéni varázslólapjainak létrehozásához szükséges C++ fejlécfájlok
Libs Az egyéni laphoz csatolandó C++ kódtárfájlok; A statikus hivatkozástárak 32 bites és 64 bites verziói vannak. Megjegyzés: A kódtárak Itanium-verziói (IA-64) nem érhetők el.
SampleEditor Visual Studio-projekt egyéni szerkesztő létrehozásához, amely a SamplePage oldal szerkesztéséhez használható az UDI varázsló Tervező, amely C nyelven íródott#
SamplePage Visual Studio-projekt egyéni UDI varázslólap létrehozásához, amely a Visual C++ nyelven íródott

Tekintse át a SamplePage Visual Studio-megoldást

Mielőtt elkezdené létrehozni az egyéni varázslólapokat és a varázsló lapszerkesztőit, végezze el a következő feladatokat az UDI fejlesztési környezet előkészítéséhez:

A varázsló oldal-életciklusának áttekintése

Az UDI varázslólapja az oldal életciklusának minden fázisának (fázisának) megfelelő metódusokat tartalmazza. Az egyéni varázslólap létrehozásának részeként felül kell bírálnia ezeket a metódusokat a kóddal. A 2. táblázat felsorolja azokat a metódusokat, amelyeket felül kell bírálnia, és röviden ismerteti az egyes metódusokat, beleértve azt is, hogy mikor érdemes használni a metódust a varázsló oldalának életciklusában.

2. táblázat. Metódusok a varázsló lap-életciklusában

Módszer Leírás
OnWindowCreated Ezt a metódust a lap ablakának létrehozása után egyszer hívjuk meg.

Ehhez a metódushoz olyan kódot írjon, amely első alkalommal inicializálja az oldalt, és csak egyszer kell végrehajtani. Ezzel a módszerrel például inicializálhat mezőket, vagy beolvashatja a konfigurációs információkat az UDI varázsló konfigurációs fájljának Setter elemeiből.
OnWindowShown Ezt a metódust minden alkalommal meghívja a rendszer, amikor az oldal megjelenik (megjelenik) az UDI varázslóban. Ez az első alkalommal jelenik meg, amikor a lap megjelenik, és minden alkalommal, amikor a varázslóBan a Tovább vagy a Vissza gombra kattintva navigál a lapra.

Ehhez a metódushoz írjon olyan kódot, amely előkészíti a lap megjelenítését – például a memóriaváltozók, a feladatütemezési változók vagy a környezeti változók olvasását, majd a változók módosításai alapján frissíti az oldalt.
OnCommonControlEvent Ezt a metódust bármikor meghívhatja, amikor megjelenik a varázsló oldala, és WM_NOTIFY üzenetet kap egy gyermektől (ez általában gyakori vezérlők).

Ehhez a metódushoz írjon olyan kódot, amely az értesítési üzenet alapján kezeli a WM_NOTIFY. Előfordulhat például, hogy egy közös vezérlő eseményeire szeretne válaszolni, például egy TreeView vezérlőelem eseményeinek kiválasztására vagy dupla kattintására.
OnUnhandledEvent Ezt a metódust akkor hívja meg a rendszer, ha nem kezelt ablakos üzenet jelenik meg a varázsló oldalán. Ezzel a módszerrel elfoghatja és kezelheti ezeket az egyébként nem kezelt ablakos üzeneteket.

Ehhez a metódushoz írjon olyan kódot, amely a varázslólapra vonatkozó ablaküzeneteket kezeli. Ezt a módszert általában nem kell felülbírálnia.
OnNextSelected Ezt a metódust akkor hívja meg a függvény, ha a varázslóBan a Tovább lehetőséget választja.

Ehhez a metódushoz írjon olyan kódot, amely végrehajtja a szükséges műveleteket, mielőtt a varázsló következő lapjára lépne – például hosszú ideig tartó érvényesítést hajt végre. Ha az ellenőrzés sikertelen, megszakíthatja a Következő kérést, és megjeleníthet egy üzenetet.
OnWindowHidden Ezt a metódust minden alkalommal meghívja a függvény, amikor a lap el van rejtve, amikor megjelenik az előző vagy a következő varázslólap.

Ehhez a metódushoz írjon olyan kódot, amely a lap elrejtése előtt hajt végre műveleteket egy másik oldal megjelenítése előtt. Ezt a módszert általában nem kell felülbírálnia.

Tekintse át a SamplePage-példát

Tekintse át a SamplePage példát az alábbi listával, amely a SamplePage-példa varázslólapjának életciklusa során előforduló események sorozatát jelöli:

  1. Az UDI varázsló OSDSetupWizard.exe beolvassa a konfigurációs adatokat az UDI varázsló konfigurációs fájljából a példában (a Config.xml fájlban), az 1. lépés: Az UDI varázsló (OSDSetupWizard.exe) beolvassa a Config.xml fájlt.

  2. Az UDI varázsló betölti az UDI varázsló konfigurációs fájljában felsorolt minden egyes varázslólaphoz szükséges DLL-eket a 2. lépés: Az UDI varázsló betölti az egyéni varázsló lapjának DLL-fájlját.

  3. Az UDI varázsló megjeleníti az egyéni varázsló oldalát, és lehetővé teszi a kívánt vezérlőműveletet a 3. lépés: Az UDI varázsló Megjeleníti az egyéni varázsló oldalát című cikkben leírtak szerint.

  4. Ha az egyéni varázslólap összegyűjtötte az adatokat, a Tovább gomb kiválasztása előtt végezze el a szükséges feladatokat, hogy továbblépjen a következő varázslóra a 4. lépés: A következő gomb van kiválasztva az Egyéni varázsló lapon című szakaszban leírtak szerint.

1. lépés: Az UDI varázsló (OSDSetupWizard.exe) beolvassa a Config.xml fájlt

Amikor az UDI varázsló (OSDSetupWizard.exe) elindul, alapértelmezés szerint beolvassa az UDI varázsló konfigurációs fájlját, amely az UDIWizard_Config.xml fájl – az UDI varázsló elsődleges konfigurációs fájlja.

Megjegyzés:

A példa a Config.xml fájlt használja konfigurációs fájlként. Az MDT-ben az alapértelmezett konfigurációs fájl az UDIWizard_Config.xml fájl, amely az MDT Files csomag Parancsfájlok mappájában található a konfigurációhoz.

Az UDI varázsló által használt alapértelmezett konfigurációs fájlt felülbírálhatja az UDI varázsló feladatütemezési lépésének módosításával a /definition paraméter használatára. Az UDI varázsló által használt alapértelmezett konfigurációs fájl felülírásáról az "Az UDI varázsló által használt konfigurációs fájl felülbírálása" című témakörben talál további információt.

A Config.xml fájl legfelső szintű elemei a következők:

  • DLL-elem

  • Stíluselem

  • Pages elem

  • StageGroups elem

    Az UDI varázsló konfigurációs fájljának sémájáról és ezek mindegyikéről az UDI varázsló konfigurációs fájlséma-referenciájában talál további információt.

    Az UDI varázsló megvizsgálja a DLL-eket , és megkeresi a betöltendő .dll fájlokat. A példában két .dll fájl szerepel: SamplePage.dll és SharedPages.dll. Ezeknek a .dll fájloknak ugyanabban a mappában kell lenniük, mint OSDSetupWizard.exe – az Eszközök\platform mappában (ahol a platform x86 a 32 bites verzióhoz, vagy x64 a 64 bites verzióhoz).

    Az UDI varázsló megvizsgálja az Oldalak elemet, és megkeresi a definiált oldalakat. A példában két oldal van definiálva: Egyéni és SummaryPage. A Page elem Type attribútuma a PageClassIDs.h fájlban van definiálva, és egyedileg határozza meg az egyéni lap típusát.

    A példában a definiált típus a Microsoft.SamplePage.LocationPage. Az egyéni lap esetében cserélje le a következőt, hogy elkerülje a jövőben esetlegesen létrehozott lapokkal való esetleges ütközéseket:

  • A szervezet neve a Microsoft helyén.

  • A projekt neve a SamplePage helyén.

  • Az egyéni varázslólap neve a LocationPage helyén.

2. lépés: Az UDI varázsló betölti az egyéni varázsló lapjának DLL-ét

Amikor az UDI varázsló betölti a DLL-t, meghívja a RegisterFactories függvényt, amelyet implementálnia kell a .dll fájlban. A példában ez a függvény a dllmain.ccp fájlban van implementálva. Minden létrehozott varázslólapnak implementálnia kell a RegisterFactories függvényt .

A RegisterFactories függvény a varázsló oldalának gyári osztályát regisztrálja az UDI varázsló osztály-gyári beállításjegyzékében. Az osztály-előállítók olyan osztályok, amelyek egy másik osztály egy példányát hozhatják létre. A RegisterFactories függvény létrehoz egy új példányt egy gyári osztályból, és átadja az osztályt az UDI varázsló osztály-gyári beállításjegyzékének, amely elérhetővé teszi a gyári osztályt a varázsló számára. Az UDI varázsló olyan, azonosítóval regisztrált gyári osztályt keres, amely megfelel az egyéni varázsló oldal Oldal elemének Type attribútumának.

A példában az azonosító ID_Location a PageClassIds.h fájlban Microsoft.SamplePage.LocationPage néven van definiálva, amely megegyezik a Config.xml fájl Page elemének Type attribútumával. ID_Location paraméterként lesz átadva a dllmain.ccp fájlban implementált RegisterFactories függvényben.

A Register_name függvénysablonnal létrehozhat egy függvényt, hogy egyszerűbbé tegye egy új gyári példány létrehozását, és regisztrálja az újonnan létrehozott példányt. A Register függvénysablon használatával megadott névértéknek implementálnia kell az iClassFactory felületet. A ClassFactoryImpl osztály kezeli az osztály-előállító implementálásának legtöbb részletét.

A RegisterFactories függvénnyel feladattípusokat és érvényesítőtípusokat is regisztrálhat. További információ:

Megjegyzés:

A példa csak az egyetlen egyéni varázslólapot tartalmazza és regisztrálja. A példa nem tartalmaz egyéni feladatokat vagy érvényesítőket, így nem regisztrál egyéni feladatokat vagy érvényesítőket.

3. lépés: Az UDI varázsló megjeleníti az Egyéni varázsló oldalát

A példában szereplő egyéni varázslólap az LocationPage.cpp fájlban van definiálva. A varázslóoldalak olyan sablonosztályokból származnak, amelyek a lap funkcióinak nagy részét biztosítják. A varázsló minden lapjának a WizardPageImpl Sablonosztályból kell származnia, amely megvalósítja az IWizardPage felületet. Minden varázslólap más választható sablonosztályokat és megfelelő felületeket is implementálhat az oldal igényeinek megfelelően.

A WizardPageImpl sablonosztály számos hasznos felülettel rendelkezik, amelyekkel egyéni varázslólapokat írhat. Implementálja a WizardPageImpl sablonosztályt az egyéni varázslólap alaposztályaként.

Az elérhető lista:

  • Sablonosztályok varázslólapokhoz, lásd: Varázslólap-segédosztályok

  • A varázsló lapsablonosztályainak felületei: Varázsló lapillesztői

    A példában szereplő egyéni varázslólap a WizardPageImpl sablonosztályból származik, és implementálja az IWizardPage felületet. Emellett az egyéni varázslóoldal megvalósítja az IFieldCallback felületet. Mindkettő a LocationPage.cpp fájlban van implementálva.

    Az egyéni varázsló példaoldala felülbírálja a következő módszereket:

  • OnWindowCreated. A példavarázsló oldal OnWindowCreated metódusa a következő metódusokat hívja meg:

    • Mező hozzáadása. Ez a metódus a IDD_LOCATION_PAGE erőforrás IDC_COMBO_LOCATION mező vezérlőelemét kapcsolja össze a Config.xml fájl Location (Hely) nevű Adat elemével.

      Az AddField metódus mellett az AddRadioGroup és az AddToGroup metódusokkal is támogathatja az egyéb vezérlőket és viselkedéseket.

      Megjegyzés:

      Az InitFields metódus meghívása előtt mindenképpen hívja meg az AddField, az AddRadioGroup vagy az AddToGroup metódust.

    • InitFields. Ezzel a módszerrel inicializálhatja az űrlaphoz hozzáadott mezőket (vezérlőket). Az oldal mutatója egy paraméter. A példában ez az egérmutató lesz átadva, amely az aktuális lapra hivatkozik.

      Megjegyzés:

      A mutató használatának támogatásához implementálnia kell az IFieldCallback felületet a WizardPageImpl Template Class által támogatott felületek mellett.

      Az IFieldCallback felület meghívja a SetFieldDefault metódust , amely a beviteli mezőtől és a jelölőnégyzet vezérlőelemtől eltérő vezérlők alapértelmezett értékeinek beállítására szolgál. A példában a SetFieldDefault metódus a kombinált lista vezérlőelem kezdeti indexét állítja be a Config.xml fájl Mező elemének Default elemében megadott alapértelmezett érték alapján.

      Az OnWindowCreated metódus az IFormController felülettel állítja be az űrlapvezérlőt. Az űrlapvezérlő beállításáról további információt az Űrlap beállítása című témakörben talál.

  • InitLocations. Ez a metódus feltölti a kombinált listát a Config.xml fájlban lévő helyek listájából. A Confg.xml fájl Data eleme és gyermek DataItem eleme adja meg a lehetséges értékek listáját.

  • OnNextSelected. Ez a metódus a következő feladatokat hajtja végre:

    • Frissítések a TSLocation feladatütemezési változót a kombinált listában a SaveFields metódussal kiválasztott értékkel

    • Az Összefoglalás lapon a SaveFields metódussal megjelenítendő információk hozzáadása

4. lépés: A Tovább gomb van kiválasztva az Egyéni varázsló lapján

Amikor a felhasználó kitölti a mezőket az egyéni varázsló oldalán, kiválasztja a Tovább gombot, amely meghívja az OnNextSelected metódust . Az OnNextSelected metódus végrehajtja a szükséges feladatokat, mielőtt továbblép a varázsló következő oldalára, például rögzíti az egyéni varázsló oldalán végrehajtott konfigurációs módosításokat.

Az egyéni varázslópéldában az OnNextSelected metódus felülbírálása a LocationPage.ccp fájlban van implementálva. A példaként szolgáló egyéni varázsló oldalán található OnNextSelected metódusban a következő metódusok vannak meghívva:

  1. InitSection. Ez a metódus inicializálja az Összefoglalás lapon megjelenített összesítő adatok fejlécét (címke képaláírás). Ezt az értéket általában a DisplayName() függvénnyel állíthatja be. A képaláírás társított adatok mentése a SaveFields metódussal történik.

  2. SaveFields (Mentésmezők) lehetőséget. Ez a metódus a mezőértékeket feladatütemezési változókba és az Összefoglalás lapon megjelenített adatokba menti.

Tekintse át a SampleEditor Visual Studio-megoldást

Mielőtt saját egyéni varázslólapokat és varázslólapszerkesztőket hoz létre, hajtsa végre a következő lépéseket az UDI fejlesztési környezet előkészítéséhez:

Az UDI varázsló Tervező architektúra áttekintése

Az UDI varázsló Tervező a WPF, a Prism és a Unity használatával fejlesztették ki. Az UDI Tervező az UDI varázsló konfigurációs fájljának (UDIWizard_Config.xml) szerkesztésére szolgál, amelyet az UDI varázsló (OSDSetupWizard.exe) futásidőben olvas be. Az UDI varázsló konfigurációs fájljának Pages eleme tartalmazza azoknak a lapoknak a listáját, amelyek mindegyik varázslólaphoz külön Oldal elemet tartalmaznak.

Amikor módosítja egy varázslólap konfigurációs beállításait, az UDI varázsló Tervező betölti a varázsló oldaltípusának megfelelő egyéni lapszerkesztőt. Az egyéni varázslólapszerkesztők WPF felhasználói vezérlőkként lettek kifejlesztve. Az egyéni varázsló lapszerkesztő lapjai a WPF Modellnézet-Nézetmodell (MVVM) tervezési mintáját használják.

Az MVVM tervezési mintája segít elkülöníteni a felhasználói felületet (felhasználói felületet; bemutatót) a bemutatott adatoktól. Az adatok az UDI varázsló konfigurációs fájljának Page elemén (a példában a Config.xml fájlon) lévő homlokzatok, amelyek az IDataService felület CurrentPage tulajdonságával érhetők el.

Az UDI varázsló Tervező a DependencyAttribute használatával szerez hozzáférést a DataService osztályhoz a Unity függőséginjektálási keretrendszere alapján. A Unity függőségi interjection keretrendszerével kapcsolatos további információkért lásd: Injektáljon néhány életet az alkalmazásokba – Ismerkedés a Unity alkalmazásblokkdal.

Tekintse át az UDI-varázsló lapjának konfigurálható összetevőit ismertető cikket

Az egyéni varázslólap létrehozásakor előfordulhat, hogy a konfigurációs beállítások egy része kódban van beállítva, és a lap lefordítása után nem módosítható. Más konfigurációs beállítások esetén azonban engedélyeznie kell a konfigurációs beállítások módosítását az UDI varázsló Tervező.

Az UDI varázsló Tervező konfigurálni kívánt konfigurációs beállítások általában az UDI varázsló konfigurációs fájljába (a példában Config.xml fájlba) kerülnek. Szükség esetén azonban saját külön konfigurációs fájlt is létrehozhat. Egy külön konfigurációs fájl használatára példa a UDIWizard_Config.xml.app fájl, amelyet az Application Discovery feladat és az ApplicationPage varázsló laptípusa használ.

Az alábbi lista az UDI varázsló Tervező használatával kezelhető tipikus konfigurációs beállításokat tartalmazza:

  • Mező. A mezők használatával a felhasználók adhatnak meg bemenetet. A mezők mezőelemekként jelennek meg az UDI varázsló konfigurációs fájljában (UDIWizard_Config.xml), amely az egyes mezők konfigurációs beállításait tartalmazza. A varázsló megfelelő lapszerkesztőjének meg kell adnia egy metódust a mező mezőkonfigurációs beállításainak szerkesztéséhez a FieldElementControl használatával.

  • Tulajdonságok. A beállítók segítségével tulajdonságokat hozhat létre az oldalon lévő entitásokhoz, például a Lap elem lapjaihoz, a Mező elem mezőihez, illetve az Adatok vagy a DataItem elemek adataihoz. A tulajdonságokat a Setter-elemekben konfigurálhatja. Adjon hozzá egy külön Setter elemet minden definiálni kívánt tulajdonsághoz. A tulajdonságokat a SetterControl használatával szerkesztheti, és más vezérlőkkel konfigurálhatja a többi Setter-elemet .

  • Adatok. Az adatok a varázsló oldala és más összetevők által használt információk tárolására szolgálnak. Az Adatok vagy a DataItem elemek használatával meghatározhatja az oldalak vagy mezők adatait. Az adatok egybesimított vagy hierarchikus struktúrában határozhatók meg az Adatok vagy a DataItem elemek megfelelő használatával. Az SDK-beli példában szereplő Config.xml bemutatja, hogyan hozhat létre egybesimított adatstruktúrákat.

    A létrehozott egyéni varázslólapszerkesztőnek képesnek kell lennie a konfigurációs beállítások kezelésére.

Tekintse át a Szerkesztőlap példáját

A EditorPage példa az UDI varázsló konfigurációs fájljának SamplePage varázslólapjának konfigurációs beállításainak konfigurálására szolgál. A EditorPage példa az alábbi elsődleges összetevőket tartalmazza:

  • A Hely kombinált lista beállításainak konfigurálására szolgáló felhasználói felület

  • Felhasználói felület egy hely hozzáadásához vagy szerkesztéséhez a lehetséges helyek listájában, amelyek a Hely kombinált listában jelennek meg

  • Az UDI varázsló konfigurációs fájljából beolvasott és az UDI varázsló konfigurációs fájljába mentett konfigurációs beállítások

  • Kiegészítő kód a többi összetevőhöz

    Tekintse át a EditorPage példát a Visual Studióban az alábbi lépések végrehajtásával:

  1. Tekintse át, hogyan van betöltve és inicializálva a SampleEditor varázsló lapszerkesztője az UDI varázsló Tervező a Varázsló áttekintése Lapszerkesztő betöltése és inicializálása című cikkben leírtak szerint.

  2. Tekintse át a LocationPageEditor.xaml hely kombinált lista szerkesztéséhez használt felhasználói felületet, és LocationPageEditor.xaml.cs fájlokat a Hely kombinált lista konfigurálásához használt felhasználói felület áttekintése című cikkben leírtak szerint.

  3. Tekintse át az AddEditLocationView.xaml fájlban a helyek hozzáadásához vagy szerkesztéséhez használt felhasználói felületet, és AddEditLocationView.xaml.cs fájlokat a Lehetséges helyek listájának módosításához használt felhasználói felület áttekintése című cikkben leírtak szerint.

  4. Tekintse át az UDI varázsló konfigurációs fájljában mentett konfigurációs információk kezelésére használt kódot a Konfigurációs adatok kezeléséhez használt kód áttekintése című szakaszban leírtak szerint.

A Varázsló lapszerkesztőjének betöltése és inicializálása

Az egyéni varázsló lapszerkesztői az UDI varázsló Tervező szükségesnek megfelelően töltődnek be. Az UDI varázsló Tervező konfigurációs fájlok az UDI varázsló Tervező indításakor töltődnek be. Az UDI varázsló Tervező megvizsgálja a install_folder\Bin\Config mappát (ahol install_folder annak a mappának a neve, amelyen az MDT telepítve van) az .config kiterjesztésű fájlokat.

Az UDI fejlesztési környezet konfigurálása során a SamplePage.dll.confg fájlt a install_folder\Bin\Config mappába másolta. Az UDI varázsló Tervező indításakor a rendszer megtalálja és betölti a SamplePage.dll.confg fájlt.

Az UDI varázsló Tervező a SamplePage.dll.confg fájl Page elemének alábbi attribútumait használja a EditorPage példa betöltéséhez és inicializálásához:

  • DesignerAssembly. Ez az attribútum határozza meg a betöltendő DLL nevét. Ezt a DLL-t ugyanabban a mappában kell elhelyezni, mint a UDIDesigner.exe fájlt, amely a install_folder\Bin mappa (ahol install_folder annak a mappának a neve, amelyben az MDT telepítve van).

  • DesignerType. Ez az attribútum a WPF felhasználói vezérlőt tartalmazó osztály Microsoft .NET-típusneve.

  • Írja be a parancsot. Ezzel az attribútummal konfigurálhatja az UDI varázsló által betöltött egyéni varázslólap oldaltípusát. Az UDI varázsló Tervező ezzel az attribútummal keresi meg a megfelelő Page elemet az UDI varázsló konfigurációs fájljában.

  • Dll. Ezzel az attribútummal konfigurálhatja az UDI varázsló konfigurációs fájljának DLL-elemét, amelyet az UDI varázsló Tervező létrehoz.

  • Leírás. Ezzel az attribútummal információkat adhat meg a varázsló lapszerkesztőjével kapcsolatban. Ennek az attribútumnak az értéke az UDI varázsló Tervező Új lap hozzáadása párbeszédpanelén jelenik meg, amellyel a varázslólapot a "Laptár" elemhez adhatja.

  • DisplayName. Ezzel az attribútummal adhatja meg az UDI varázsló Tervező megjelenő egyéni varázslólap nevét. Ennek az attribútumnak az értéke az UDI varázsló Tervező Új lap hozzáadása párbeszédpanelén jelenik meg, amellyel a varázslólapot a "Laptár" elemhez adhatja.

    A példában a SamplePage egyéni varázslólapjának típusa Microsoft.SamplePage.LocationPage, amely a Config.xml fájlba van mentve. A Config.xml fájl a local_folder\SDK\SamplePage\SamplePage mappában található (ahol local_folder a konfigurációs folyamat során korábban a fejlesztői számítógépen létrehozott mappa).

Tekintse át a Hely kombinált lista konfigurálásához használt felhasználói felületet

A varázsló lapszerkesztőjének betöltése és inicializálása után a SampleEditor varázsló lapszerkesztője akkor töltődik be, ha egy Microsoft.SamplePage.LocationPage típusú lapot szerkeszt. A lapszerkesztő felhasználói felületét a LocationPageEditor.xaml fájl tárolja.

Ha megvizsgálja a felhasználói felületet a Tervezés lapon, és az XAML lapon lévő kódot, láthatja a kapcsolatot a grafikus felhasználói felület és az Extensible Application Markup Language (XAML) elemei és attribútumai között.

Ha például áttekinti az XAML Controls:FieldElementControl elemét, láthatja, hogy ez hogyan kapcsolódik a megfelelő felhasználói felület elrendezéséhez. Használja a Controls:FieldElementControl elemet a FieldElementControl vezérlő definiálásához.

Az XAML-fájl kötési paraméterei kötik a mintalapszerkesztő mezőit az UDI varázsló konfigurációs fájljában található információkkal. Az alábbi kód például az Alapértelmezett érték szövegmezőt kapcsolja az UDI varázsló konfigurációs fájljának Default elemével (Config.xml a példában):

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

További információ : How to: Make Data Available for Binding in XAML (Útmutató: Adatok elérhetővé tétele kötéshez az XAML-ben).

Az XAML Views:CollectionTControl.ColumnCollectionView elemével szerkesztheti az elérhető helyek listáját a rácsnézetben. A CollectionTControl vezérlővel jelenítse meg a rácsnézetet, és kösse a rácsnézetet az Adatelemhez az UDI konfigurációs fájlban Található névvel.

Tekintse át a lehetséges helyek listájának módosításához használt felhasználói felületet

A lehetséges helyek listájának módosítására szolgáló felhasználói felület a következőkből áll:

A helylista módosításához tekintse át a környezetfüggő menü- és menüszalaggombokat

Amikor a helylistát tartalmazó listamezőbe kattint a jobb gombbal, megjelenik egy környezetfüggő menü. A menüszalag megfelelő gombjai lehetővé teszik ugyanazokat a feladatokat. A LocationPageEditor.xaml fájl Views:CollectionsTControl vezérlőeleme a végrehajtott művelet és a beállított tulajdonságok alapján határozza meg a meghívott metódusokat:

  • SelectedItem. Ez az adathoz kötött tulajdonság akkor aktiválódik, amikor a felhasználó kiválaszt egy elemet a listából. Ez a tulajdonság a nézetmodell CurrentLocation tulajdonságához van kötve, amely a LocationPageEditorViewModel.cs fájlban található, és a CollectionTControl vezérlővel továbbítja a kijelölt elemet egy meglévő elem szerkesztésekor vagy eltávolításakor.

  • AddItemAction. Ezt a műveletet akkor hajtja végre a rendszer, ha a felhasználó az Elem hozzáadása lehetőséget választja a helyi menüből vagy a menüszalag megfelelő gombjaiból. A nézetmodell egyik tulajdonságához adatkötés tartozik, amely az AddLocationAction objektumot adja vissza. Ez az objektum az AddLocationCallback metódus, amely a LocationPageEditorViewModel.cs fájlban található, és megjeleníti a párbeszédpanelt az AddEditLocationView.xaml fájlban.

  • EditItemAction. Ezt a műveletet akkor hajtja végre a rendszer, ha a felhasználó az Elem szerkesztése lehetőséget választja a helyi menüben. A nézetmodell egyik tulajdonságához adatkötés tartozik, amely az EditLocationAction objektumot adja vissza. Ez az objektum az EditLocationCallback metódus, amely a LocationPageEditorViewModel.cs fájlban található, és megjeleníti a párbeszédpanelt az AddEditLocationView.xaml fájlban.

  • RemoveAction. Ezt a műveletet akkor hajtja végre a rendszer, ha a felhasználó kiválasztja az Elem eltávolítása lehetőséget a környezetfüggő menüből. A nézetmodell egy tulajdonságához adatkötés tartozik, amely a RemoveAction objektumot adja vissza. Ez az objektum az EditLocationCallback metódus, amely a LocationPageEditorViewModel.cs fájlban található, és egy üzenetet jelenít meg, amely megerősíti a hely törlését.

A helyek hozzáadására vagy szerkesztésére szolgáló párbeszédpanel áttekintése

Ha új helyet ad hozzá a helyek listájához, vagy szerkeszt egy meglévő helyet, egy üzenet jelenik meg az AddEditLocationView.xaml fájlban. Az üzenet a ShowDialogWindow ablakmetódussal jelenik meg a LocationPageEditorViewModel.cs fájlban.

Az AddEditLocationView.xaml fájl felhasználói felülete a következőkből áll:

  • Párbeszédpanelkeret nevű párbeszédpanel, amely a következő elemeket tartalmazza:

    • Egy cím, amelyet a párbeszédpanel-keret DialogTitle attribútumával konfigurálhat

    • Egy OK gomb, amely az Approved (Jóváhagyott ) tulajdonság visszatérési állapotát True (Igaz ) értékre állítja (a visszatérési állapotot a rendszer a LocationPageEditorViewModel.cs fájl AddLocationCallback metódusában ellenőrzi annak megállapításához, hogy a felhasználó az OK gombot választotta-e.)

    • Egy Mégse gomb, amely az Approved tulajdonság visszatérési állapotát False ( Hamis ) értékre állítja (a visszatérési állapotot a LocationPageEditorViewModel.cs fájl AddLocationCallback metódusában ellenőrzi, hogy a felhasználó a Mégse lehetőséget választotta-e.)

  • Egy WPF-elem, amely a következőket tartalmazza:

    • A Content attribútummal konfigurált címke

    • Egy szövegmező, amely az UDI konfigurációs fájlban a Location (Hely) nevű Data elemhez van kötve (a példában a Config.xml fájl).

Tekintse át a konfigurációs adatok kezeléséhez használt kódot

Az egyéni varázslólap konfigurációs adatait az UDI varázsló konfigurációs fájlja tárolja, amely a következő:

  • Config.xml UDI SDK-hoz megadott példában szereplő fájl (Ez a fájl csak a példához tartozó konfigurációs beállításokat tartalmazza.)

  • UDIWizard_Config.xml MDT-hez biztosított fájl, amely a installation_folder\Templates\Distribution\Scripts mappában található (ahol installation_folder az a mappa, amelyben az MDT-t telepítette); ez a fájl tartalmazza a varázsló összes beépített lapjának és szakaszának konfigurációs beállításait

    A SampleEditor példában a Helyek rutin segít a konfigurációs információk kezelésében, és a LocationPageEditorViewModel.cs fájlban található. A Helyek rutin az UDI varázsló konfigurációs fájljából adja vissza a helyek listáját. A visszaadott lista az UDI varázsló konfigurációs fájljának minden Egyes DataItem eleméhez tartalmaz egy elemet.

Egyéni UDI varázslólapok létrehozása

Az egyéni UDI varázslólapok létrehozásának magas szintű folyamata a következő:

  1. Készítsen másolatot a SamplePage megoldásról kiindulási pontként.

  2. Helyezze a kívánt vezérlőket (mezőket) az űrlapra.

  3. Írjon kódot a megfelelő feladatok végrehajtásához a varázsló lapjának betöltésekor (az OnWindowCreated metódus felülbírálásai), beleértve a következő lépéseket:

    1. Inicializálja az űrlapot.

    2. Olvasási memóriaváltozók, feladatütemezési változók, környezeti változók vagy XML-fájladatok (például Setter-tulajdonságok ).

  4. Írjon be bármilyen kódot a megfelelő feladatok végrehajtásához az oldal megjelenítésekor (felülbírálások az OnWindowShown metódushoz), beleértve a következő lépéseket:

    1. A vezérlők engedélyezése vagy letiltása a 3. lépésben betöltött lap betöltésekor beolvasott információk alapján.

    2. Frissítse a vezérlőket a 3. lépésben beolvasott információk alapján, például a vezérlők sokaságát az olvasott információk alapján.

  5. Írjon bármilyen kódot a megfelelő feladatok végrehajtásához, miközben a felhasználó a varázsló oldalával kommunikál.

  6. Írjon be bármilyen kódot a megfelelő feladatok végrehajtásához, amikor a felhasználó a Tovább lehetőséget választja az UDI varázslóban (felülbírálja az OnNextSelected metódust ), beleértve az alábbi lépéseket:

    1. Frissítsen minden memóriaváltozót, feladatütemezési változót, környezeti változót vagy XML-fájlinformációt.

    2. Összegző lap adatainak frissítése (ha az oldalon lévő mezők nem hajtják végre).

  7. Hozza létre a megoldást.

    Győződjön meg arról, hogy a létrehozott DLL verziója ugyanaz a processzorplatform, mint az MDT telepítése– pontosabban a Windows előtelepítési környezet (Windows PE) processzorplatformja. Az UDI varázsló a következőben futtatható:

    • A célszámítógépen meglévő operációs rendszer. A varázslólap 32 bites verzióit 32 bites vagy 64 bites Windows operációs rendszereken futtathatja. A varázslólap 64 bites verzióit azonban csak 64 bites Windows operációs rendszereken futtathatja.

    • Windows PE a célszámítógépen. A Windows PE nem támogatja a 32 bites alkalmazások futtatását a Windows PE 64 bites verzióján. Ezért létre kell hoznia egy verziót a varázsló oldalához a Használni kívánt Windows PE minden processzorarchitektúrájához.

  8. Másolja az egyéni varázslólap DLL-fájlját a installation_folder\Templates\Distribution\Tools\ platform mappába (ahol installation_folder az a mappa, amelyre az MDT-t telepítette, és a platformx86 a 32 bites verzióhoz, vagy az x64 a 64 bites verzióhoz).

  9. Végezze el az egyéni lapszerkesztő létrehozásának lépéseit.

Egyéni varázsló lapszerkesztőinek létrehozása

Az egyéni UDI varázsló lapszerkesztőinek létrehozásának magas szintű folyamata a következő:

  1. Készítsen másolatot a SampleEditor megoldásról kiindulási pontként.

  2. Hozza létre az elsődleges lapszerkesztő felhasználói felületét egy .xaml fájlban.

  3. Adja hozzá a FieldElementControl vezérlő példányait a konfigurálni kívánt varázslólapnak megfelelően (ha szükséges).

  4. Adja hozzá a SetterControl vezérlő példányait a konfigurálni kívánt varázslólapnak megfelelően (ha szükséges).

  5. Adja hozzá a CollectionTControl vezérlő példányait a konfigurálni kívánt varázslólapnak megfelelően (ha szükséges).

  6. Adja hozzá az IDataService felületet.

  7. Írja meg a megfelelő kódot az UDI varázsló konfigurációs fájljának frissítéséhez az egyéni varázsló lapszerkesztőjével konfigurálni kívánt konfigurációs beállítások alapján.

  8. Hozzon létre gyermek párbeszédpaneleket egy .xaml fájlban, és hívja meg őket az elsődleges lapszerkesztőből a varázslólap által konfigurálni kívánt IMessageBoxService felületen.

  9. Adja hozzá a megfelelő felületeket az UDI varázsló Tervező menüszalaghoz a konfigurálni kívánt varázslólap követelményei alapján.

  10. Hozza létre a megoldást.

    Megjegyzés:

    Győződjön meg arról, hogy a létrehozott DLL verziója ugyanaz a processzorplatform, mint az MDT telepítése. Ha például az MDT 64 bites verzióját telepíti, hozza létre az egyéni lapszerkesztő 64 bites verzióját.

  11. Hozzon létre egy UDI varázslót, Tervező konfigurációs fájlt a szükséges DLL-ek betöltéséhez, és a varázsló lapszerkesztőjének megfeleltetéséhez a megfelelő varázslóoldalt (a példában a SamplePage.dll.config fájlt).

    A varázsló lapja és a varázsló lapszerkesztője közötti megfeleltetéshez szükséges elemekről további információt a DesignerMappings elem, a gyermekelemek és a megfelelő attribútumok című témakörben talál.

  12. Másolja az UDI varázsló Tervező az előző lépésben létrehozott konfigurációs fájlt a installation_folder\Bin\Config mappába (ahol installation_folder az a mappa, amelyben az MDT-verziót telepítette).

  13. Másolja az egyéni varázsló lapszerkesztőjének DLL-ét a installation_folder\Bin mappába (ahol installation_folder az a mappa, amelyben az MDT-t telepítette).

Egyéni UDI-feladatok létrehozása

Az UDI-feladatok olyan C++ nyelven írt DLL-ek, amelyek az ITask-felületet implementálják. A DLL-t regisztrálja az UDI varázsló Tervező feladattárban. Ehhez hozzon létre egy UDI varázslót Tervező konfigurációs fájlt (.config fájlt), és helyezze a installation_folder\Bin\Config mappába (ahol installation_folder az a mappa, amelyben az MDT-t telepítette).

Megjegyzés:

Létrehozhat olyan DLL-t, amely varázslólapokat, feladatokat és érvényesítőket tartalmaz ugyanabban a .dll fájlban. Létrehozhat egyetlen UDI varázslót Tervező konfigurációs fájlt (.config), amely tartalmazza a varázsló lapjainak, feladatainak és érvényesítőinek konfigurációs beállításait a DLL-ben.

Egyéni UDI-feladatok létrehozása

  1. Írja meg az ITask-felületet implementáló kódot és a következő metódusokat:

    • Init. Ez a metódus a feladat inicializálásához van meghívva.

    • Hajtsa végre a parancsot. A rendszer meghívja ezt a metódust a feladat futtatásához.

  2. Írjon egy kódot, amely regisztrálja az egyéni feladatosztály-előállítót a gyári beállításjegyzékben.

  3. Hozza létre az egyéni feladat megoldását.

    Megjegyzés:

    Győződjön meg arról, hogy a létrehozott DLL verziója ugyanaz a processzorplatform, mint az MDT telepítése. Ha például az MDT 64 bites verzióját telepíti, hozza létre az egyéni UDI-feladat 64 bites verzióját.

  4. Hozzon létre egy Task elemet az UDI varázsló TaskLibrary eleme alatt Tervező konfigurációs fájlban az alábbi részlethez hasonlóan:

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

    Megjegyzés:

    Minden tevékenységelemnek tartalmaznia kell a BitmapFilename paramétert. Adja meg az összes többi paramétert, ahogy a tevékenység megköveteli. Az előző részletben például a naplóparamétert használja a naplófájl helyének paraméterének megadására.

  5. Másolja az UDI varázsló Tervező előző lépésben létrehozott konfigurációs fájlt a installation_folder\Bin\Config mappába (ahol installation_folder az a mappa, amelyben az MDT-t telepítette).

  6. Másolja az egyéni feladat DLL-ét a installation_folder\Templates\Distribution\Tools\ platform mappába (ahol installation_folder az a mappa, amelyre az MDT-t telepítette, a platformpedig x86 a 32 bites verzióhoz, vagy az x64 a 64 bites verzióhoz).

Egyéni UDI-érvényesítők létrehozása

Az UDI-érvényesítők olyan C++ nyelven írt DLL-ek, amelyek az IValidator felületet implementálják. A DLL-t regisztrálja az UDI varázsló Tervező érvényesítő könyvtárában. Ehhez hozzon létre egy UDI varázslót Tervező konfigurációs fájlt (.config fájlt), és helyezze a installation_folder\Bin\Config mappába (ahol installation_folder az a mappa, amelyben az MDT-t telepítette).

Egyéni UDI-érvényesítők létrehozása

  1. Írjon egy kódot, amely létrehozza a BaseValidator osztály alosztályát, és implementálja a következő metódusokat:

    • Init(IControl *pControl, IWizardPageContainer *pContainer, IStringProperties *pProperties). Az űrlapvezérlő meghívja az Init tagot az érvényesítő inicializálásához. Ennek a metódusnak meg kell hívnia a BaseValidator osztály Init metódusát. Általában beolvassa az érvényesítőhöz beállított tulajdonságokat az UDI varázsló konfigurációs fájljából. Az InvalidCharactersValidator érvényesítő például ezzel a módszerrel kéri le az InvalidChars tulajdonság értékét.

    • IsValid. Az űrlapvezérlő meghívja ezt a metódust annak megállapításához, hogy a vezérlőelem érvényes szöveget tartalmaz-e. Az alábbiakban egy példa látható egy érvényesítő IsValid metódusára, amely ellenőrzi, hogy a mező nem üres-e:

      BOOL IsValid(LPBSTR pMessage)
      {
          __super::IsValid(pMessage);
      
          _bstr_t text;
          m_pText->GetText(text.GetAddress());
          return (text.length() > 0);
      }
      
    • Init(IControl *pControl, LPCTSTR message). Az űrlapvezérlő minden billentyűleütéshez és egyéb eseményhez meghívja ezt a tagot, hogy az érvényesítő ellenőrizhesse a vezérlő tartalmát és a frissített üzeneteket a varázslólap alján (vagy törölje őket).

      Általában csak ezeket a metódusokat kell felülbírálnia. Az érvényesítőtől függően azonban előfordulhat, hogy felül kell bírálnia a létrehozott BaseValidator osztály alosztályának más metódusait. További információ ezekről a többi metódusról: BaseValidator osztály.

  2. Írjon egy kódot, amely regisztrálja az egyéni feladatosztályt a beállításjegyzék-előállítóban.

  3. Hozza létre az egyéni feladat megoldását.

    Megjegyzés:

    Győződjön meg arról, hogy a létrehozott DLL verziója ugyanaz a processzorplatform, mint az MDT telepítése. Ha például az MDT 64 bites verzióját telepíti, hozza létre az egyéni UDI-feladat 64 bites verzióját.

  4. Hozzon létre egy Validator elemet az UDI varázsló ValidatorLibrary eleme alatt Tervező konfigurációs fájlban az alábbi részlethez hasonlóan:

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

    Figyelmeztetés

    Minden Érvényesítő elemnek tartalmaznia kell az Üzenet paramétert. Adja meg az érvényesítő által megkövetelt összes többi paramétert. Az előző részletben például a NamedPattern paramétert használja egy előre definiált reguláris kifejezési minta nevének paraméterének megadására.

  5. Másolja az UDI varázsló Tervező előző lépésben létrehozott konfigurációs fájlt a installation_folder\Bin\Config mappába (ahol installation_folder az a mappa, amelyben az MDT-t telepítette).

  6. Másolja az egyéni feladat DLL-ét a installation_folder\Templates\Distribution\Tools\ platform mappába (ahol installation_folder az a mappa, amelyre az MDT-t telepítette, a platformpedig x86 a 32 bites verzióhoz, vagy az x64 a 64 bites verzióhoz).

Az UDI varázsló referenciája

Varázsló lapösszetevői

Az egyéni lapok létrehozásához több előre összeállított összetevő bármelyikét használhatja.

Összetevőpéldányok létrehozása

Az UDI varázsló osztály-előállítókkal hoz létre új objektumpéldányokat. Ezek a gyárak egy gyári beállításjegyzékben vannak regisztrálva, és egy sztringet használnak a gyár kulcsaként. A WmiRepository összetevőt például a "Microsoft.Wizard.WmiRepository" sztring azonosítja, amely az IWmiRepository fejlécfájlban érhető el ID_WmiRepository.

Ha az oldalt a WizardPageImpl alosztályaként írta, létrehozhat egy új WmiRepoistory-példányt az alábbi módon:

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

A CreateInstance függvény egy típusbiztos sablonfüggvény az összetevők új példányainak létrehozásához. A PWmiRepository egy intelligens mutató, így kezeli a referenciaszámlálást.

Creatable Components

A beállításjegyzékben regisztrálható összetevők egy halmaza. Az összetevők első készlete mindig regisztrálva van, mert az UDI varázsló fő végrehajtható fájlja biztosítja. A másik két összetevőkészletet "opcionális" DLL-ek tartalmazzák. Ahhoz, hogy ezek az összetevők elérhetők legyenek, a DLL-nek szerepelnie kell a .config XML-fájl DLL-jeinek szakaszában. A kódnak nem kell tudnia, hogy melyik végrehajtható fájl tartalmaz egy adott összetevőt.

Az összetevők összetevő-azonosítóinak listája (az összetevő neve megegyezik az azonosítóval, de a kezdeti ID_ nélkül) a 3. táblázatban látható a gyári beállításjegyzékben (az OSDSetupWizardban definiálva).

3. táblázat. Összetevő-azonosítók

Azonosító Leírás
ID_ACPowerTask (ITask, IWizardComponent) Elővizsgálati feladat, amely biztosítja, hogy a számítógép ne csak az akkumulátoron fusson
ID_AppDiscoveryTask (ITask, IWizardComponent) A számítógépre telepített szoftverelemek felderítésére szolgáló speciális feladat
ID_BackgroundTask (IBackgroundTask, IWizardComponent) Feladat más szálon való futtatására használható
ID_CopyFilesTask (ITask, IWizardComponent) Feladat egy vagy több fájl másolásához
ID_FormController (IFormController) A legtöbb esetben nem kell saját példányt létrehoznia, mivel a lap megkapja a saját példányát
ID_InvalidCharactersValidator (IValidator) Biztosítja, hogy egyetlen szövegmező sem tartalmaz karaktereket az érvényesítőnek megadott listából
ID_Logger (ILogger) Valószínűleg nem kell saját maga létrehoznia egy példányt, mivel a lap egy mutatót kap a megosztott példányhoz
ID_NonEmptyValidator (IValidator) Egy érvényesítő, amely biztosítja, hogy egyetlen mező se legyen üres
ID_PasswordValidator (IValidator) Egy érvényesítő, amely biztosítja, hogy két szövegmező ne rendelkezzen ugyanazzal a tartalommal
ID_Regex (IRegEx) Kiértékeli a reguláris kifejezéseket, és egyezéseket keres
ID_RegExValidator (IValidator) Egy reguláris kifejezés vagy egy ismert minta alapján érvényesítő ellenőrző
ID_SimpleStringProperties (IStringProperties, ISimpleStringProperties) Egyszerű módot kínál a tulajdonságok feladatokba való küldésére XML használata nélkül
ID_ShellExecuteTask (ITask, IWizardComponent) Külső program végrehajtása
ID_SummaryBag (ISummaryBag) Közvetve elérhető az oldalról az Űrlap metóduson keresztül
ID_TaskManager (ITaskManager, IBackgroundCallback, IWizardComponent) Egy feladatkészlet és a felhasználói felület futtatásának kezelése
ID_WmiRepository (IWmiRepository, IWizardComponent) Lehetővé teszi a Windows Management Instrumentation- (WMI-) lekérdezések futtatását
ID_IXmlDocument (IXmlDocument) Előtérrendszert biztosít AZ XML-dokumentumok olvasásához és írásához

A definiált OSDRefreshWizard.dll, a megosztott oldalak és más vezérlőösszetevők a 4. és az 5. táblázatban láthatók.

4. táblázat. Címtárvezérlők

Azonosító Leírás
ID_Directory (IDirectory) A könyvtáradatok fájlrendszerből való beszerzésének homlokzata

5. táblázat. Definiált SharedPages.dll

Azonosító Leírás
ID_ADHelper (IADHelper) Az Active Directory® Tartományi szolgáltatások (AD DS) korlátozott funkcióinak homlokzatát biztosítja
ID_CpuInfo (ICpuInfo) Meghatározza, hogy a processzor 32 vagy 64 bites-e
ID_DomainJoinValidator (IDomainJoinValidator) Van néhány módszere annak ellenőrzésére, hogy engedélyezve van-e a hitelesítő adatok egy tartományhoz való csatlakoztatása
ID_DriveList (IDriveList, IBindableList, IWizardComponent) WMI-t használ a számítógépen található meghajtók listájának lekéréséhez
ID_WiredNetworkTask (ITask) Olyan feladatok, amelyek ellenőrzik, hogy vezetékes (vezeték nélküli) hálózati adapterrel csatlakozik-e a hálózathoz

Vezérlőösszetevők

A lapon lévő vezérlőkkel a GetControlWrapper sablonfüggvénnyel lép kapcsolatba, amely hozzáférést biztosít a 6. táblázatban felsorolt összetevők egyikéhez.

6. táblázat. Összetevők

Párbeszédpanel-vezérlők típusai Leírás
CONTROL_CHECK_BOX (ICheckBox) A jelölőnégyzetvezérlők használatának homlokzata
CONTROL_COMBO_BOX (IComboBox) A kombinált lista vezérlőinek homlokzata
CONTROL_GENERIC (IControl) Lehetővé teszi, hogy a legtöbb vezérlőtípussal együttműködve szabályozhassa az engedélyezést és a látható állapotot
CONTROL_LIST_VIEW (IListView) Egy listanézet-vezérlő funkcióihoz hozzáférést biztosító homlokzat
CONTROL_PROGRESS_BAR (IProgressBar) Előtér a folyamatjelző vezérlő pozíciójával való munkához
CONTROL_RADIO_BUTTON (IRadioButton) Előtér a választógombok vezérlőivel való munkához
CONTROL_STATIC_TEXT (IStaticText) Olyan homlokzat, amely olvasási/írási engedélyt biztosít egy vezérlőelem szövegéhez, például egy felirathoz vagy szövegdobozhoz
CONTROL_TREE_VIEW (ItreeView) Fanézet vezérlőelemmel végzett munka homlokzata

Képlista-összetevő

Ez az összetevő a lap ImageList vezérlőelemének előlapja. Képlistát az IListView vagy az ITreeView felületen hozhat létre.

FormController összetevő

A varázsló létrehozza ezt az összetevőt, és átadja a lapnak. A lapról a WizardPageImpl alaposztály által implementálható Form metódussal érheti el.

InvalidCharacterValidator összetevő

Ez egy olyan érvényesítőtípus, amelyet belefoglalhat egy oldalra. Az azonosító ID_InvalidCharactersValidator (az IValidator.h fájlban van megadva), amelynek szöveges értéke "Microsoft.Wizard.Validation.InvalidChars".

Ez az érvényesítő egyetlen tulajdonságot (a .config fájlBan található Setter elemet) keres InvalidChars néven, amely nem engedélyezett karakterek listája. Ellenőrzi a szövegdobozban lévő karaktereket; ha a szöveg tartalmaz karaktereket a listából, az összetevő hibát jelez.

NonEmptyValidator összetevő

Ez egy olyan érvényesítőtípus, amelyet belefoglalhat egy oldalra. Az azonosító ID_NonEmptyValidator (az IValidator.h fájlban van definiálva), amelynek szöveges értéke "Microsoft.Wizard.Validation.NonEmpty".

Ez az érvényesítő hibát jelez, ha a szövegmező (vagy bármely más, az IStaticText elemet támogató vezérlő) üres sztringértéket tartalmaz.

PasswordValidator összetevő

Ez egy olyan érvényesítőtípus, amelyet belefoglalhat egy oldalra. Az azonosító ID_PasswordValidator (az IValidator.h fájlban van definiálva), amelynek szöveges értéke "Microsoft.Wizard.Validation.Password".

Ez az érvényesítő két különböző szövegvezérlővel ( az IStaticText-et támogató vezérlőkkel) működik, és hibát jelez, ha nem tartalmazzák ugyanazokat az értékeket. Más szóval sikertelen, ha a Jelszó és a Jelszó megerősítése szövegmező nem egyezik.

Mivel ez az érvényesítő két vezérlőt igényel, több beállításra van szüksége, mint a többi érvényesítőre. A beállítás a következőhöz hasonló lehet:

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

Először a Jelszó megerősítése vezérlőt a Jelszó vezérlőelem "gyermekének" kell definiálni. Így ha az űrlapvezérlő letiltja a Jelszó vezérlőt, akkor a Jelszó megerősítése vezérlőt is letiltja. Ezután adjon hozzá egy jelszó-érvényesítőt az űrlaphoz. Végül adja meg a jelszó-érvényesítőt a Jelszó megerősítése vezérlő felületével.

Mivel két vezérlőre van szükség, az .config XML-fájl helyett kóddal kell beállítania ezt az érvényesítőt.

RegExValidator összetevő

Ez egy olyan érvényesítőtípus, amelyet belefoglalhat egy oldalra. Az azonosító ID_RegExValidator (az IValidator.h fájlban van meghatározva), amelynek szöveges értéke "Microsoft.Wizard.Validation.RegEx".

Ez az érvényesítő összehasonlítja egy szövegvezérlő tartalmát (amely támogatja az IStaticText függvényt) egy reguláris kifejezéssel, és meghiúsul, ha a szöveg nem egyezik a reguláris kifejezéssel.

Másik lehetőségként használhatja ezt az érvényesítőt egy előre definiált, elnevezett mintával. Reguláris kifejezés használatához az XML-nek tartalmaznia kell egy Pattern nevű setter tulajdonságot. Ha névvel ellátott mintát szeretne használni, használjon egy NamedPattern nevű halmazt a 7. táblázatban szereplő értékek egyikére.

7. táblázat. Névvel ellátott mintakészletek

Minta Leírás
Felhasználónév Ellenőrzi, hogy a szöveg tartomány\felhasználó vagy user@domain
Számítógépnév A névnek 1 és 15 karakter közötti hosszúságúnak kell lennie, és nem tartalmazhat karakterkészletet (például : és ?)
Munkacsoport A névnek 1 és 15 karakter közötti hosszúságúnak kell lennie, és nem tartalmazhat karakterkészletet (például =, +, és ?)

FactoryRegistry összetevő

Ez az összetevő nyomon követi az összes osztálygyárat és szolgáltatást. Implementálja az IFactoryRegistry felületet, és közvetve elérhető az oldal Container metódusán keresztül. Emellett a beállításjegyzék betölti a bővítmény DLL-eit. A DLL betöltése után a beállításjegyzék egy RegisterFactories nevű exportált függvényt keres. Implementálnia kell ezt a függvényt, és abban regisztrálnia kell a lapjaihoz, feladataihoz és érvényesítőihez (és minden más regisztrálni kívánt osztálygyárhoz) tartozó osztálygyárakat. Íme egy példa a mintaprojektből:

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

Naplózó összetevő

Ez az összetevő a Logger metódussal érhető el a lapon (a WizardPageImpl implementálva). Ezzel a módszerrel írhat bejegyzéseket a naplófájlba. A naplófájl tartalma hasznos lehet azon problémák diagnosztizálásában, amelyek miatt a felhasználók futtathatják az UDI varázslót.

PropertyBag összetevő

A tulajdonságcsomag a memóriaváltozók tárolója. A container()->Properties() használatával érhető el a lapon. A memóriaváltozók akkor hasznosak, ha ideiglenes adatokat adnak át a különböző oldalak között.

TSVariableBag és TSRepository összetevők

A TSVariableBag összetevő lehetővé teszi feladatütemezési változók olvasását és írását. Mindaddig megőrzi az értékeket a memóriában, amíg a felhasználó a Befejezés (alapértelmezés szerint) lehetőséget nem választja. A TSVariable táska a lap TSVariables metódusával érhető el (a WizardPageImpl alaposztály implementálva). Ezek az összetevők naplózják a feladatütemezési változók összes olvasását és írását.

WmiRepository összetevő

Ez az összetevő a WMI-lekérdezések használatának előtérrendszerét biztosítja. Meghívhatja a CreateInstance segédfüggvényt ID_WmiRepository az összetevő egy példányának beszerzéséhez, amely támogatja az IWmiRepository felületet. Ez az összetevő eredményrekordokat ad vissza az IWmiIterator felületen keresztül.

Varázsló lapsesegítő osztályai

Egyéni UDI varázslólapokat az UDI SDK beépített segédosztályaival hozhat létre. A 8. táblázat felsorolja azokat a segédosztályokat, amelyekkel egyéni varázslólapokat hozhat létre.

8. táblázat. Segédosztályok

Segédosztály Leírás
ClassFactoryImpl osztály Ez egy hasznos alaposztály egy osztály-előállító létrehozásához, amelyet aztán regisztrálhat a gyári beállításjegyzékben.
Interface Template Class Akkor használja ezt a sablonosztályt, ha egynél több felületet megvalósító összetevőt szeretne létrehozni.
Elérésiút-segédosztály Ez az osztály gyakori fájl-/könyvtárműveleteket biztosít.
Mutatósablon-osztály Ez az osztály referenciaszámlálást biztosít a COM-összetevők élettartam-felügyeletéhez. Fontos, hogy a felületeket akkor szabadítsuk fel, ha végzett velük. Ez a sablonosztály automatikusan kezeli az élettartamot.
PUnknown osztály Ez az osztály egy intelligens mutató, kifejezetten az IUnknown felülethez. Minden más illesztőhöz használja a Pointer sablonosztályt.
StringUtil segédosztály Ez az osztály segédmetódusokat biztosít, amelyek megkönnyítik a sztringekkel való munkát.
SubInterface-sablonosztály Ez az alaposztály megkönnyíti egy olyan összetevő implementálását, amely egy másik felülettől öröklő felületet támogat.
UnknownImpl sablonosztály Ez az osztály kezeli a COM-összetevők létrehozásának legtöbb részletét.
WizardComponent Template Class Ez az alaposztály olyan összetevők létrehozására szolgál, amelyeknek hozzá kell férnie a varázsló szolgáltatásaihoz, például az összetevők létrehozását és naplózását.
WizardPageImpl Sablonosztály Ezt az alaposztályt kell használni az összes egyéni varázslólap alaposztályaként

ClassFactoryImpl osztály

Ez egy hasznos alaposztály egy osztály-előállító létrehozásához, amelyet aztán regisztrálhat a gyári beállításjegyzékben.

Az alábbiakban egy részletet talál a mintaprojekt LocationPage.h fájljából a ClassFactoryImpl osztály meghatározásához.

#pragma once

#include "ClassFactoryImpl.h"

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

Az alábbiakban egy részletet talál a mintavarázsló oldalának LocationPage.cpp fájljából, amely az oldal osztály-előállítójának meghatározására szolgál.

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

Interface Template Class

Akkor használja ezt a sablonosztályt, ha egynél több felületet megvalósító összetevőt szeretne létrehozni– például:

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

Ez a kód létrehoz egy alaposztályláncot, amely támogatja az IFieldCalback és a WizardPageImpl által támogatott interfészeket (amelyek történetesen IWizardPage).

Elérésiút-segédosztály

Ez az osztály gyakori fájl-/könyvtárműveleteket biztosít:

static inline std::wstring GetModulePath(HINSTANCE hModule)

A .exe vagy .dll fájl teljes elérési útját is visszaadja az ehhez a metódushoz megadott példányleíróval:

static inline std::wstring GetModuleFilename(HINSTANCE hModule)

A osztály a .exe és .dll fájl teljes elérési útját és fájlnevét adja vissza az ehhez a metódushoz megadott példányleíróval:

static inline std::wstring GetDirectoryName(LPCWSTR fullName)

. . . vagy csak az elérési utat a fájlnév eltávolításakor:

static inline std::wstring GetFileName(LPCWSTR fullName)

Egy fájlnévvel rendelkező elérési út esetén az elérésiút-segédosztály csak a fájlnevet adja vissza:

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

Végül a osztály egy új sztringet ad vissza, amely az egyesített elérési út és a fájlnév (vagy egy másik elérési út).

Mutatósablon-osztály

Ez az osztály a Pointer.h fájlban van definiálva. Mivel a COM-összetevők referenciaszámlálást használnak az élettartam-felügyelethez, fontos, hogy mindig a felületeket adja ki, amikor végzett velük. A Microsoft egy sablonosztályt biztosít, amely automatikusan kezeli az élettartamot. Ha például intelligens mutatót szeretne egy XML-felülethez, az alábbihoz hasonlót írhat:

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

Az első sor határozza meg az intelligens mutatót. A második sorban egy intelligens mutató egy másik híváson keresztüli lekérése látható. A & operátor mindig egy meglévő felületet ad ki, ha tartalmaz egyet, és visszaadja a belső mutató címét. Miután lekért egy ilyen mutatót, a Pointer-példány meghívja a Release metódust, amikor a változó kikerül a hatókörből. A Microsoft azt javasolja, hogy az AddRef és a Release manuális meghívása helyett intelligens mutatókat használjon.

Emellett a Mutató intelligens mutató osztály meghívja a QueryInterface-t , hogy más felületeket kérjen le. Amikor például a gyári beállításjegyzék létrehoz egy összetevő új példányát, a következő kóddal rendelkezik:

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

Az első sor meghívja a QueryInterface-t a színfalak mögött az IWizardComponent felület kéréséhez. Az eredményként kapott intelligens mutató null értékű lesz, ha az összetevő nem támogatja ezt a felületet.

PUnknown osztály

Ez az osztály egy intelligens mutató, kifejezetten az IUnknown felülethez. Minden más illesztőhöz használja a Pointer sablonosztályt.

StringUtil segédosztály

Ez az osztály a Utilities.h fájlban van definiálva, és olyan segédmetódusokat biztosít, amelyek megkönnyítik a sztringek használatát:

static inline int CompareIgnore(LPCWSTR first, LPCWSTR second)

Ez a metódus két sztringet hasonlít össze a kis- és nagybetűk figyelmen kívül hagyásával (lásd a 9. táblázatot).

9. táblázat. StringUtil segédosztály

Visszatér Leírás
0 A sztringek egyeznek, a kis- és nagybetűk figyelmen kívül hagyásával
<0 Első < másodperc
>0 Első > másodperc

Íme egy példa:

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

Ezek a metódusok egy kicsit olyanok, mint a Microsoft .NET Formátum metódusai abban az értelemben, hogy a paraméterek formájában {0}vannak. A bemenet formázását azonban nem hajtják végre, csak a helyettesítést:

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)

Ezek a StringCchPrintf körüli burkolók, amelyek sztringet adnak vissza, így nem kell memóriát lefoglalnia a sztringekhez vagy pufferekhez.

SubInterface-sablonosztály

Ez az alaposztály megkönnyíti egy olyan összetevő implementálását, amely egy másik felülettől öröklő felületet támogat. Az ICheckBox felület például az IControltól öröklődik. Ez az osztály a CheckBoxWrapper definiálásához használható:

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

Az alapillesztő az első paraméter, a származtatott felület pedig a második paraméter.

UnknownImpl sablonosztály

Ez az osztály az UnknownImpl.h fájlban van definiálva, és a COM-összetevő létrehozásának legtöbb részletét kezeli. Íme egy példa az alaposztály használatára:

classDirectory :public UnknownImpl<IDirectory>

Ez a kód definiál egy osztályt, amely támogatja az IDirectory felületet.

WizardComponent Template Class

Ez az osztály az IWizardComponent.h fájlban van definiálva, és hasznos alaposztály olyan összetevők létrehozásához, amelyeknek hozzá kell férnie a varázsló szolgáltatásaihoz, például az összetevők létrehozását és naplózását.

Példaként a CopyFilesTask összetevő definiálása a következő:

classCopyFilesTask :public WizardComponent<ITask>
{
    ...

A sablonosztály paramétere az összetevőhöz használni kívánt "fő" felület, amely feladatok esetén az ITask. A WizardComponent használata azt jelenti, hogy az összetevő támogatja az Ön által biztosított felületet (ebben a példában az ITask ) és az IWizardComponentet.

Amikor a class factory beállításjegyzéket használja egy új összetevő létrehozásához, a beállításjegyzék meghívja az összetevő IWizardComponent-SetContainer> metódusát, hogy hozzáférést biztosítson az összetevőnek a varázsló szolgáltatásaihoz.

WizardPageImpl Sablonosztály

Használja ezt az osztályt az egyéni lapok alaposztályaként – például:

class LocationPage :public WizardPageImpl<IDD_LOCATION_PAGE>

A paraméter a párbeszédpanel-sablon erőforrás-azonosítója.

Varázsló lapillesztői

Az UDI varázsló felületeket használ az oldal különböző vezérlőinek eléréséhez. A lapon a GetControlWrapper függvénnyel kérhet le egy vezérlőburkolót. Íme egy példa:

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

Itt a PStaticText egy intelligens mutató az IStaticText felülethez. Az intelligens mutatók automatikusan meghívják a COM Release() metódust, amikor kimennek a hatókörből, vagy egy változó (például &pFormat) címét adják át egy metódusnak.

IADHelper interfész

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

Inicializálja ezt az összetevőt, és adja át a naplózónak, hogy naplózhassa az információkat.

HRESULTValidLogon(LPCTSTR userName, LPCTSTR password, LPCTSTR domain)

Ez a módszer ellenőrzi, hogy a hitelesítő adatok egy halmaza érvényes-e a 10. táblázatban látható módon.

10. táblázat. HResultValidLogon

Hresult Leírás
S_OK A hitelesítő adatok érvényesek
S_FALSE A hitelesítő adatok érvénytelenek
E_FAIL Nem található a tartományvezérlő; részletekért tekintse meg a naplókat
HRESULT HasAccess(LPCTSTR username, LPCTSTR password, LPCTSTR domain, LPCTSTR computerName, LPCTSTR accountDomain)

Ez a módszer ellenőrzi, hogy a hitelesítő adatok egy halmaza rendelkezik-e olvasási/írási hozzáféréssel az AD DS számítógép-objektumához, a 11. táblázatban látható módon.

11. táblázat. HResult HasAccess

HRESULT Leírás
S_OK A felhasználó rendelkezik hozzáféréssel
E_FAIL A felhasználónak nincs hozzáférése. További információt a naplófájlban talál.

IBackgroundTask felület

__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);
};
Áttekintés

A Folyamat lap ezt az osztályt használja a feladatok külön szálon való futtatásához. Ezt az osztályt akkor is használhatja, ha egy külön szálon szeretne műveleteket végrehajtani. A feladatok olyan osztályok, amelyek támogatják az ITask-felületet .

Ezt a felületet az IBackgroundTask.h felületen definiált ID_BackgroundTask ("Microsoft.Wizard.BackgroundTask") összetevő valósítja meg.

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

Ez az interfész inicializálja az összetevőt a 12. táblázatban látható módon.

12. táblázat. HRESULT Init

Paraméter Leírás
pTask Mutató a másik szálon futtatni kívánt kódot tartalmazó osztályra
Id A visszahívás Finished metódusában használható szám, amellyel megállapíthatja, hogy melyik feladat lett befejezve; akkor hasznos, ha több feladatot indít el ugyanazzal a visszahívási módszerrel
pCallback A Finished metódust implementáló osztály, amelyet a rendszer akkor hív meg, amikor egy tevékenység fut; a Finished metódus hívása a háttérszálon lesz, nem a felhasználói felület szálán
void Start(void)

Ez a metódus elindítja a feladatot egy háttérszálon, és visszaadja a 13. táblázatban látható elemeket.

13. táblázat. Háttérszál visszaküldése

Visszatér Leírás
E_INVALIDARG A feladat már fut, ezért most nem indítható el.
E_FAIL Hiba történt a szál indításakor.
S_OK A szál elindult.
BOOL-futtatás()

Ez a metódus IGAZ értéket ad vissza, ha a háttérfeladat jelenleg fut, és HAMIS értéket, ha nem fut.

HRESULT Wait(DWORD waitMilliseconds)

Ez a metódus megvárja, amíg a szál nem fut, vagy az ezredmásodpercek száma el nem telik.

HRESULT Terminate(DWORD exitCode)

Ez a metódus leállja a futó szálat (lásd a 14. táblázatot és a 15. táblázatot). A folyamat a metódus visszatérése után rövid ideig is eltarthat.

14. táblázat. HRESULT – Kilépési kód leállása

Paraméter Leírás
exitCode A befejezett visszahívási metódusnak küldött kilépési kód, amely a GetExitCode metódusból is elérhető lesz.

15. táblázat. Felmondási kódok

Visszatér Leírás
E_FAIL A leállításra irányuló hívás nem sikerült.
S_OK A szál leállítására irányuló kérés sikeres volt.
HRESULT GetExitCode(LPDWORD pCode, HRESULT *pHresult)

Ezzel a módszerrel lekérheti a feladat háttérszálon való futtatásának eredményeit (lásd a 16. táblázatot).

16. táblázat. Eredménykódok

Paraméter Leírás
pCode Ha nincs szüksége a visszatérési értékre, mutasson egy DWORD értékre, amely a visszatérési vagy nullptr értékre lesz beállítva. Kilépéskor ez a paraméter úgy van beállítva, hogy STILL_ACTIVE , ha a szál fut, a tevékenység Execute metódusa által visszaadott kódot vagy a Terminate metódusnak átadott értéket, ha meghívta ezt a metódust.
pHresult Ha nincs szüksége a HRESULT értékre, mutasson egy HRESULT értékre, amely a visszatérési vagy nullptr értékre lesz beállítva.
HRESULT Close(void)

Ez a metódus felszabadítja a háttérszálat. E_INVALIDARG ad vissza, ha a szál jelenleg fut, és egyébként S_OK .

ICheckBox felület

__interface ICheckBox : IControl
{
    void Check(BOOL check);
    BOOL IsButtonChecked();
};
void Check (BOOL-ellenőrzés)

A jelölőnégyzet bejelölt állapotának beállítása. Ha a metódus IGAZ, a jelölőnégyzet be van jelölve; ha a metódus HAMIS, a jelölőnégyzet nincs bejelölve.

BOOL IsButtonChecked()

Ez a metódus jelenti egy jelölőnégyzet aktuális jelölőnégyzetének állapotát.

IComboBox felület

__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();
};
Áttekintés

Ezt a felületet a CheckBoxWrapper összetevő valósítja meg. Ennek az összetevőnek egy példányát a GetControlWrapper segédfüggvénnyel kérdezheti le a CONTROL_COMBO_BOX típussal.

HRESULT Bind([in] IBindableList *pList)

Ezt a módszert akkor használja, ha olyan adatforrással rendelkezik, amely megvalósítja az IBindableList felületet. A listamező a lista felirataival inicializálja a tartalmat.

HRESULT Select(int index)

Jelölje ki az elemet az index kombinált listában.

int Selected(void)

Ez a metódus a kijelölt elem indexét, vagy -1 értéket ad vissza, ha nincs kijelölve semmi.

void Add([in] LPCTSTR képaláírás)

Manuálisan adjon hozzá egy elemet a kombinált listához.

HRESULT GetText([out, retval] LPBSTR pText)

A kombinált lista aktuálisan kijelölt elemének sztringjének lekérése.

void Clear()

Távolítsa el az összes elemet a kombinált listából.

IControl-felület

__interface IControl : IUnknown
{
    HRESULT SetEnable(BOOL enable);
    BOOL IsEnabled(void);
    HRESULT SetVisible(BOOL visible);
};
Áttekintés

Ezt a felületet a ControlWrapper összetevő valósítja meg. Ennek az összetevőnek egy példányát a GetControlWrapper segédfüggvénnyel kérdezheti le a CONTROL_GENERIC típussal.

HRESULT SetEnable(BOOL enable)

Engedélyezze vagy tiltsa le a vezérlőt.

BOOL IsEnabled(void)

Igaz értéket ad vissza, ha a vezérlőelem engedélyezve van, hamis értéket, ha nem.

HRESULT SetVisible(BOOL visible)

A vezérlő megjelenítése vagy elrejtése.

ICpuInfo interfész

__interface ICpuInfo : IUnknown
{
    BOOL Is64Bit(void);
};
Áttekintés

Ezt a felületet egy új ID_CpuInfo összetevő létrehozásával szerezheti be. Az egyetlen metódus jelenti, hogy a processzor 32 vagy 64 bites. Vegye figyelembe, hogy ha 32 bites operációs rendszert használ egy 64 bites számítógépen, ez a metódus IGAZ értéket ad vissza, mivel csak a processzor szélességét jelenti (nem az operációs rendszert).

IDirectory Interface
__interface IDirectory : IUnknown
{
    BOOL FileExists(LPCWSTR name);
    BOOL FindFirst([in] LPCWSTR name);
    HRESULT FoundName([out, retval] LPBSTR name);
    DWORD FoundAttributes(void);
    BOOL FindNext(void);
    void FinishFind(void);
};
Áttekintés

A ID_Directory használatával létrehozott Címtár összetevő előtérrendszert biztosít a fájlrendszer címtárainak használatához.

BOOL FileExists(LPCWSTR neve)

Ez a metódus IGAZ értéket ad vissza, ha létezik egy megadott nevű fájl.

BOOL FindFirst([in] LPCWSTR neve)

Ez a metódus megkeresi a megadott név első egyezését. Támogatja a helyettesítő karaktereket, és fájl- és könyvtárneveket is visszaad. A metódus IGAZ értéket ad vissza, ha talál egyezést, ellenkező esetben HAMIS értéket.

HRESULT FoundName([out, retval] LPBSTR neve)

Ez a metódus lekéri a FindFirst vagy a FindNext hívásával talált fájl nevét.

DWORD FoundAttributes(void)

Ez a metódus a legutóbb talált fájl vagy könyvtár attribútumát adja vissza. A kód az alábbiak szerint tesztelhető, hogy könyvtárról van-e szó:

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

Keresse meg a következőt. Ez a metódus IGAZ értéket ad vissza, ha egy másik egyezést talált, máskülönben HAMIS értéket.

void FinishFind(void)

Ez a metódus felszabadítja a Find művelethez használt erőforrásokat.

IDomainJoinValidator felület

__interface IDomainJoinValidator : IUnknown
{
    HRESULT Init(ILogger *pLogger, IWizardPageContainer *pContainer, IStaticText *pUsername, IStaticText *pPassword, IStaticText *pComputerName);
    HRESULT IsUsernameValid(LPCWSTR domainName);
    BOOL CanModifyComputerAdEntry(LPCWSTR domainName);
};
Áttekintés

A felület egy példányát a CreateInstance sablonfüggvény ID_DomainJoinValidator értékével szerezheti be.

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

Inicializálja a példányt a 17. táblázatban látható módon.

17. táblázat. HRESULT Init – Példány inicializálása

Paraméter Leírás
pLogger A naplózó példány, amely az oldal Logger metódusával érhető el az oldal számára
pContainer Átadja az eredményeket a lap Container metódusából
pUsername Az érvényesítendő felhasználónevet tartalmazó szövegmező
pPassword Az érvényesítendő jelszót tartalmazó szövegmező
PComputerName A tartományhoz végül csatlakozó számítógép nevét tartalmazó szövegmező
HRESULT IsUsernameValid(LPCWSTR domainName)

Ez a metódus az IADHelper-ValidLogon> metódust használja a munka elvégzéséhez. A részletekért tekintse meg ezt a módszert.

BOOL CanModifyComputerAdEntry(LPCWSTR domainName)

Ellenőrizze, hogy a felhasználó rendelkezik-e jogosultságokkal a számítógép bejegyzésének módosításához. A munka nagy részét az IADHelper-HasAccess> végzi. Ha ez a metódus HAMIS értéket ad vissza, ellenőrizze a naplófájlban a részleteket.

IDriveList felület

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

Hívja meg ezt a metódust, mielőtt bármilyen más összetevőt hív meg. A metódus meghívása előtt létre kell hoznia egy új WmiRepositoryt .

HRESULT SetWhereClause(LPCTSTR whereClause)

Ez a metódus lehetővé teszi olyan szöveg hozzáadását, amely "where" záradékként jelenik meg a lekérdezésben. A következő sor például csak USB-meghajtókat ad vissza:

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

Állítsa be a lekérdezésből visszaadott meghajtók minimális méretét bájtban.

HRESULT Update(void)

Hajtsa végre a lekérdezést. A metódus meghívása után elérhető meghajtólista meghajtóbetűjel szerint van rendezve.

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

Ez a metódus hozzáadja azoknak a további tulajdonságoknak a nevét, amelyeket elérhetővé kíván tenni a lekérdezés eredményei között. Hívja meg ezt a metódust az Update hívása előtt. A 18. táblázatban három hasznos tulajdonság látható.

18. táblázat. HRESULT AddProperty: Hasznos tulajdonságok

Szakasz Tulajdonság Leírás
DISKQUERY_LOGICALDISK Méret A méret bájtban, sztringként ábrázolva
DISKQUERY_DISKPARTITION DiskIndex A lemez száma egész számként, 0-tól kezdve
DISKQUERY_LOGICALDISK VolumeName A kötetcímke
size_t Count(void)

A lekérdezés által visszaadott rekordok száma. Hívja fel az Update metódust , mielőtt meghívja ezt a metódust.

HRESULT GetProperty(size_t index, LPCTSTR propName, LPVARIANT érték)

Ez a metódus lekéri egy tulajdonság értékét a lekérdezés eredményeiből, a 19. táblázatban látható módon.

19. táblázat. HRESULT GetProperty

Paraméter Leírás
Index Nulla alapú index az eredményrekordhoz
propName A tulajdonság neve, például "Méret"
Érték Visszaadott érték esetén ez a paraméter a tulajdonság egy variánsértékét tartalmazza
HRESULT GetCaption(size_t index, LPBSTR pCaption)

Ez a metódus lekéri egy olyan rekord képaláírás, amely megegyezik a Caption (Felirat) tulajdonságával.

IImageList felület

__interface IImageList
{
    HRESULT CreateImageList(int width, int height, UINT flags);
    HImageList GetImageList(void);
    int AddImage(HInstance hInstance, int resourceId);
};
Áttekintés

Ezt az felületet az ImageList összetevő valósítja meg. Az összetevő egy példányát az IListView felületről kéri le.

HRESULT CreateImageList(int width, int height, UINT flags)

Hozzon létre egy új rendszerképlistát, amelyet ez az összetevő kezel. Ezt a metódust csak egyszer hívja meg.

HImageList GetImageList(void)

Ez a metódus visszaadja a képlista leíróit arra az esetre, ha más műveleteket kellene végrehajtania a képlistán.

int AddImage(HInstance hInstance, int resourceId)

Adjon hozzá egy új képet egy erőforrás képlistájához a 20. táblázatban látható módon.

20. táblázat. HRESULT IImageList interfész

Paraméter Leírás
hInstance A bitképerőforrást tartalmazó modul példányleírója
resourceId A képlistába betöltendő erőforrás azonosítója

IListView felület

__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);
};
Áttekintés

Ezt a felületet a ControlWrapper összetevő valósítja meg. Ennek az összetevőnek egy példányát a GetControlWrapper segédfüggvénnyel kérdezheti le a CONTROL_LIST_VIEW típussal.

int AddItem([in] LPCTSTR szöveg)

Adjon hozzá egy új sort a listához. A metódus az imént hozzáadott elem indexét adja vissza.

int AddColumn(int width, [in] LPCTSTR text)

Adjon hozzá egy új oszlopot a listanézethez.

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

A listamező első oszlopától eltérő oszlop szövegének beállítása a 21. táblázatban látható módon.

21. táblázat. HRESULT SetSubItem

Paraméter Leírás
Index A módosítani kívánt listaelem indexe
Oszlop A frissíteni kívánt oszlop indexe; az első oszlop az AddItem használatával van beállítva, a második és a következő oszlop ezzel a módszerrel van beállítva
Szöveg Az oszlopban megjelenítendő sztring
int GetWidth(void)

Ez a metódus a teljes szövegdoboz szélességét adja vissza.

void SetExtendedStyle(DWORD stílus)

Ezzel a módszerrel bővített stílusokat állíthat be a listamezőben, például:

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

Ez a metódus az aktuálisan kijelölt listanézetelem indexét adja vissza.

HRESULT SelectItem(int index)

Állítsa a lista kijelölt elemét erre az indexre.

BOOL IsItemChecked(int index)

Ez a metódus IGAZ értéket ad vissza, ha a listában egy elem van kijelölve. Ehhez a metódushoz meg kell hívnia a SetExtendedStyle függvényt a jelölőnégyzetstílus beállításához.

int GetItemCount(void)

Ez a metódus a listanézet elemeinek számát adja vissza.

HRESULT CreateImageList(int width, int height, UINT flags)

Hozzon létre egy új képlistát, és csatolja a listanézethez.

int AddImage(HINSTANCE hInstance, int resourceId)

Kép hozzáadása a listanézet képlistájához. Először meg kell hívnia a CreateImageList elemet.

HRESULT SetImage(int index, int imageIndex)

Állítsa be az adott listanézetelem bal oldalán megjelenő képet.

HRESULT Clear(void)

Távolítsa el az összes elemet a listanézetből.

IProgressBar interfész

__interface IProgressBar : IControl
{
    HRESULT SetPercentage(int position);
    int GetPercentage(void);
};
Áttekintés

Ezt az felületet a ProgressBarWrapper összetevő valósítja meg. Ennek az összetevőnek egy példányát a GetControlWrapper segédfüggvénnyel kérdezheti le a CONTROL_PROGRESS_BAR típussal.

HRESULT SetPercentage(int position)

Állítsa be a folyamatjelzőt egy 0 és 100 közötti számmal. Alapértelmezés szerint az új Win32® folyamatjelző sávok maximális tartománya 100.

int GetPercentage(void)

Ez a metódus a folyamatjelző sáv aktuális pozícióját adja vissza.

IRadioButton interfész

__interface IRadioButton : IControl
{
public:
    void SetGroup(int firstId, int lastId);
    void CheckRadio(int id);
    BOOL IsButtonChecked(int id);
    void EnableRadio(int id, BOOL enable);
};
Áttekintés

Ezt a felületet a RadioButtonWrapper összetevő valósítja meg. Ennek az összetevőnek egy példányát a GetControlWrapper segédfüggvénnyel kérdezheti le a CONTROL_RADIO_BUTTON típussal.

void SetGroup(int firstId, int lastId)

Adja meg a burkolónak a csoportként kezelendő választógombok tartományát. A CheckRadio hívása előtt hívja meg ezt a metódust.

void CheckRadio(int id)

Állítsa be az adott választógombot úgy, hogy az egyetlen gomb legyen a kiválasztott választógombok csoportjában. A metódus meghívása előtt hívja meg a SetGroup parancsot.

BOOL IsButtonChecked(int id)

Ez a metódus IGAZ értéket ad vissza, ha a választógomb jelenleg ki van jelölve, ellenkező esetben HAMIS.

void EnableRadio(int id, BOOL enable)

Ez a metódus engedélyezi vagy letiltja a választógombokat.

IStaticText Interface

__interface IStaticText : IControl
{
    HRESULT SetText([in] LPCTSTR pText);
    HRESULT GetText([out, retval] LPBSTR pText);
};
Áttekintés

Ezt az felületet a StaticTextWrapper összetevő valósítja meg. Ennek az összetevőnek egy példányát a GetControlWrapper segédfüggvénnyel kérdezheti le a CONTROL_STATIC_TEXT típussal.

HRESULT SetText([in] LPCTSTR pText)

Állítsa be a vezérlőelem szövegét.

HRESULT GetText([out, retval] LPBSTR pText)

Ez a metódus a vezérlőelem szövegének aktuális értékét adja vissza.

ITask-felület

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

Ezt a felületet akkor implementálhatja, ha azt szeretné, hogy az összetevő feladatként legyen elérhető az elővizsgálati oldalon, vagy ha a BackgroundTask összetevőt szeretné használni egy háttérszálon végzett munka elvégzéséhez.

Az ITask-felületet megvalósító összetevők:

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

Ha feladatot ír az elővizsgálati lapra, hívja meg ezt a metódust a feladat inicializálásához. A .config fájl az alábbihoz hasonló XML-fájlt tartalmaz:

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

A pProperties paraméter hozzáférést biztosít a három setter értékhez, míg a pTaskSettings paraméter hozzáférést biztosít a Task elemhez és a gyermekekhez. A legtöbb feladatnak csak a pProperties paraméterből kell adatokat olvasnia.

Végre
HRESULT Execute(LPDWORD pReturnCode)

Itt írjuk meg a feladatot végrehajtó kódot. Ennek a metódusnak S_OK kell visszaadnia, ha nem történt hiba, és egy másik HRESULT értéket adhat vissza, ha hiba történt a tevékenység futtatása közben. Ha az elővizsgálati oldalt használja, a metódus által visszaadott <S_OK kívül más értékek is megegyeznek az <ExitCodes> szakasz Hiba> elemeivel.

A pReturnCode paramétert olyan számmal kell frissíteni, amely a tevékenység állapotát jelenti. Ezeket az értékeket az elővizsgálati oldal egyezteti az <ExitCode-elemekkel> .

ITreeView felület

__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);
};
Áttekintés

Ezt a felületet a TreeViewWrapper összetevő valósítja meg. Ennek az összetevőnek egy példányát a GetControlWrapper segédfüggvénnyel kérdezheti le a CONTROL_TREE_VIEW típussal.

void EnableCheckboxes(void)

Ez a metódus a fanézet vezérlőelemben a TVS_CHECKBOXES stílus beállításával bekapcsolja a jelölőnégyzeteket.

HRESULT CreateImageList(int width, int height, UINT flags)

Adjon hozzá egy új képlistát a fanézet vezérlőhöz. A flags paraméter a ImageList_Create Win32 függvény hívásában lesz átadva.

int AddImage(HINSTANCE hInstance, int resourceId)

Adjon hozzá egy lemezképet a lemezképlistához a modulban található erőforrásból (resourceId), a példány hInstance leírójával.

HTREEITEM AddItem(LPCTSTR text, HTREEITEM hParent = NULL)

Adjon hozzá egy csomópontot a fanézethez. Az új csomópont a legfelső szinten lesz hozzáadva, ha a hParent értéke NULL. Ellenkező esetben adja meg a leírót annak a szülőelemnek, amelyhez hozzá szeretné adni az új elemet. Ez a metódus visszaadja a leírót az új elemnek.

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

Állítsa be a fanézetelemhez használandó képet. Beállíthatja a normál és a kibontott képet is.

void Clear(void)

Távolítsa el az összes elemet a fanézetből.

BOOL SetFirstVisible(HTREEITEM elem)

Győződjön meg arról, hogy a fanézetelem látható. A fanézet szükség esetén görgetve jelenik meg az elem láthatóvá tételéhez.

BOOL SelectItem(HTREEITEM elem)

Állítsa be az aktuálisan kijelölt elemet a megadott elemre. Ezután meghívhatja a SetFirstVisible parancsot , hogy az újonnan kijelölt elem látható legyen.

void CheckItem(HTREEITEM elem, UINT checkState)

A metódus alapvetően beállítja a fanézetben a jelölőnégyzethez megjelenítendő képet. Ezek a képek egy külön ImageList vezérlőben találhatók, amelyet a fanézet kezel. A képlista alapértelmezés szerint három képet tartalmaz, amelyeket a 22. táblázatban láthat.

Table 22.void CheckItem Image List Default

checkState Leírás
0 Üres
1 Elszámolt
2 Kijelölt
HTREEITEM SelectedItem(void)

Ez a metódus az aktuálisan kijelölt fanézetelem fogópontját adja vissza.

int SetItemHeight(SHORT height)

Ez a metódus képpontban állítja be a fanézet vezérlőelem összes elemének magasságát. Az előző magasságot adja vissza képpontban.

HRESULT EnableItem(HTREEITEM elem, BOOL-engedélyezés)

Ez a metódus egyetlen elemet engedélyez vagy tilt le a fában. Egy elem gyermekekkel való letiltása nem tiltja le a gyermekeket.

void Expand(HTREEITEM hItem, BOOL expand)

Ez a metódus kibont vagy összecsuk egy csomópontot a fában.

HTREEITEM GetChild(HTREEITEM hParent)

Ez a metódus egy fanézetelem első gyermekét vagy null értéket adja vissza, ha nincsenek gyermekek.

HTREEITEM GetParent(HTREEITEM hNode)

Ez a metódus a szülő fogópontját adja vissza egy csomóponthoz a fanézetben, vagy NULL értéket, ha a csomópont a legfelső szinten van.

HTREEITEM GetNextItem(HTREEITEM hPrevious)

Ezt a metódust egy olyan leíróval hívhatja meg, amelyet a GetChild visszatér a csomópont összes gyermekének iterációjához. Ez a metódus a következő testvért adja vissza a fán, amely ugyanazt a szülőt használja.

UINT IsChecked(HTREEITEM elem)

Ez a metódus 0 értéket ad vissza, ha a fanézeti csomópont nincs kijelölve, és 1-et , ha van.

BOOL IsEnabled(HTREEITEM elem)

Ez a metódus IGAZ értéket ad vissza, ha a fanézeti csomópont engedélyezve van, egyébként HAMIS.

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

Ez a módszer csak belső használatra használható.

HRESULT SetEventHandler(ITreeViewEvent *pEventHandler)

Ezt a módszert akkor hívja meg, ha értesítést szeretne kapni, amikor a kijelölt elem megváltozik, vagy ha a felhasználó módosítja egy fanézetelem ellenőrzési állapotát. A visszahívások fogadásához implementálnia kell az ITreeViewEventet az összetevőben.

void SetSelectedBackColor(COLORREF color)

A kijelölt elem háttérszínének beállítása.

IWmiIteration Interface

__interface IWmiIterator : IUnknown
{
    HRESULT Next(void);
    HRESULT GetProperty(LPCTSTR propertyName, [out] LPVARIANT pValue);
};
Áttekintés

A WMI-hívások használatakor általában ezt a felületet és az IWmiRepositoryt használja. Az IWmiIteration felület lehetővé teszi a lekérdezés által visszaadott értékek iterálását.

HRESULT Next(void)

Ugrás a lekérdezés eredményeinek következő elemére a 23. táblázatban látható módon.

23. táblázat. HRESULT Next(void) Query Returns

HRRESULT Leírás
S_OK Ugrás a következő eredményre; A GetProperty használatával lekérheti az eredmény tulajdonságait.
S_FALSE Nincs több elem a listában.
E_NOT_SET Nincsenek lekérdezési eredmények
HRESULT GetProperty(LPCTSTR propertyName, [out] LPVARIANT pValue)

Ez a metódus lekéri egy tulajdonság értékét az aktuális eredményrekordból a 24. és a 25. tábla szerint.

24. táblázat. HRESULT GetProperty

Paraméter Leírás
propertyName A lekérni kívánt tulajdonság neve
pValue Olyan VARIANT-struktúrára mutat, amely a visszaadott tulajdonságértéket tartalmazza

25. táblázat. HRESULT GetProperty eredmény

HRESULT Leírás
S_OK A rendszer beolvassa a tulajdonság értékét.
WBEM_E_NOT_FOUND Nincs névvel rendelkező tulajdonság.
E_NOT_VALID_STATE Nincs aktuális rekord.

Megjegyzés:

A GetProperty metódus a 25. táblázatban felsoroltakon kívül más WMI-hibakódokat is visszaadhat. A felsorolt értékek a visszaadott általános eredmények.

IWmiRepository felület

__interface IWmiRepository : IUnknown
{
    HRESULT SetNamespace(LPCWSTR namespaceName);
    HRESULT ExecQuery(LPCWSTR query, [out] IWmiIterator **ppIterator);
};
Áttekintés

Ezt az felületet a WmiRepository összetevő (ID_WmiRepository) valósítja meg.

HRESULT SetNamespace(LPCWSTR namespaceName)

Ez a metódus beállítja a lekérdezéshez használni kívánt WMI-névteret. Hívja meg ezt a metódust, mielőtt meghívja az ExecQueryt. Ha nem hívja meg ezt a metódust, a névtér root\cimv2 lesz. Ez a metódus mindig S_OK ad vissza.

HRESULT ExecQuery(LPCWSTR-lekérdezés, [out] IWmiIterator **ppIterator)

Hajtson végre egy lekérdezést a beállított WMI-névtéren a SetNamespace hívásával, a 26. és a 27. tábla szerint.

26. táblázat. HRESULT ExecQuery

Paraméter Leírás
Lekérdezés A végrehajtani kívánt WMI-lekérdezés sztringje
ppIterator Vigye az egérmutatót egy felületmutatóra, amely a visszaadott felületen jelenik meg, így hozzáférhet a lekérdezési eredményekhez

27. táblázat. HRESULT lekérdezés eredménye

HRESULT Leírás
S_OK A lekérdezés sikerült
Egyéb Ha a lekérdezés nem sikerült, wmi HRESULT értéket ad vissza

IFormController interfész

__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);
 };
Áttekintés

Az UDI varázsló minden lapja saját űrlapvezérlővel rendelkezik, amely megvalósítja ezt a felületet. Ezzel a vezérlővel csatlakoztathatja a .config XML-fájlban lévő mezőadatokat a lap vezérlőihez. Az űrlapvezérlő ezután számos részletet kezel.

Az űrlap beállítása

Általában állítsa be az űrlapvezérlőt a lap OnWindowCreated metódusában. Ehhez általában meg kell hívni a 28. táblázatban látható metódusokat.

28. táblázat. OnWindowCreated metódus

Módszer Leírás
Init Az űrlapvezérlő inicializálása
Mező hozzáadása Kapcsolatot biztosít a .config XML-fájl egy olyan mezője között, amely egy sztringnév és egy vezérlő a lap párbeszédpanelén, amely egy azonosító
AddRadioGroup Választógomb csatlakoztatása egy csoporthoz és egy vezérlőhöz a párbeszédpanelen
AddToGroup Engedélyezi az engedélyezett vagy letiltott "gyermek" vezérlőket a szülővel együtt, vagy a választógomb kiválasztása alapján
InitFields Hívás, miután meghívta az összes Add metódust az űrlap beállításához
Érvényesít Végrehajtja a kezdeti ellenőrzést
Űrlapesemények feldolgozása

Adja hozzá a következő hívást az OnControlEvent metódushoz:

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

Ez a hívás átadja az eseményeket az űrlapvezérlőnek, hogy feldolgozhassa az űrlapokkal kapcsolatos eseményeket.

Űrlapadatok mentése

Az OnNextSelected metódusban hívja meg a 29. táblázatban látható űrlapmetódusokat.

29. táblázat. OnNextSelected metódus

Módszer Leírás
InitSection Annak a szakasznak a nevét adja meg, amely a lap Összefoglalás lapján jelenik meg
Mentésmezők Mezőértékek mentése feladatütemezési változókba és az Összefoglalás lapra
Init
HRESULT Init(IWizardPageView *pView, IWizardPageContainer *pContainer)

Ezt a metódust általában a lap OnWindowCreated metódusának elejéhez közel hívja meg. A parancsnak a következőhöz hasonlóan kell kinéznie:

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

Ezt a metódust belsőleg hívjuk meg, és nem szabad saját kezűleg meghívni. Ez biztosítja a lap XML-fájlját az űrlapvezérlőnek.

Érvényesít
HRESULT Validate(void)

Ez a metódus végrehajtja a vezérlőkhöz csatolt összes érvényesítőt. Ha egy érvényesítő nem felel meg, az űrlapvezérlő figyelmeztető üzenetet jelenít meg, és letiltja a Tovább gombot, majd leállítja az érvényesítők feldolgozását. Ezt a metódust általában csak az OnWindowCreated metódus végén kell meghívnia; mindig S_OK ad vissza.

AddToGroup
AddToGroup(int groupControlId, int controlId)

Ez a metódus egy vezérlőelemet ad hozzá egy jelölőnégyzet vagy választógomb "gyermekeként" a 30. táblázatban látható módon. Minden ilyen gyermekvezérlő le lesz tiltva, ha a szülővezérlő nincs kijelölve. A metódus mindig S_OK ad vissza.

30. táblázat. AddToGroup

Paraméter Leírás
groupControlId A gyermekvezérlő engedélyezési állapotát vezérlő jelölőnégyzet vagy választógomb azonosítója
Controlld A gyermekként hozzáadni kívánt vezérlőelem azonosítója
UpdateCheckGroup
HRESULT UpdateCheckGroup(int groupControlId)

Ez a metódus frissíti egy csoport gyermekvezérlőinek engedélyezési vagy letiltási állapotát a szülővezérlő állapota alapján. Ezt a metódust általában nem kell saját magának meghívnia, mert az űrlapvezérlő hívja meg Önnek.

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

Ezt a metódust csak akkor hívja meg, ha az XML helyett kódban szeretne létrehozni egy érvényesítőt. Ez a metódus mindig S_OK ad vissza.

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

Ezt a metódust csak akkor hívja meg, ha az XML helyett kódban szeretne létrehozni egy érvényesítőt.

DisableValidation
HRESULT DisableValidation(int controlId, BOOL disable)

Hívja meg ezt a metódust, hogy explicit módon tiltsa le az érvényesítőt egy vezérlőhöz, vagy állítsa vissza a normál ellenőrzést a 31. táblázatban látható módon. Ez a módszer például akkor hasznos, ha olyan vezérlőkre vonatkozó szabályokat engedélyez vagy tilt le, amelyekre nem vonatkozik az űrlap-ellenőrzés, és le kell tiltania egy vezérlő érvényesítését. Más szóval ezt a metódust általában nem nevezik. Ez a metódus mindig S_OK ad vissza.

31. táblázat. HRESULT DisableValidation

Paraméter Leírás
controlId Az a vezérlő, amelyhez engedélyezni vagy letiltani szeretné az érvényesítést
Megbénít Az érvényesítés letiltásához állítsa IGAZ értékre, a normál ellenőrzés visszaállításához pedig FALSE (HAMIS) értékre
Mező hozzáadása
HRESULT AddField(LPCWSTR fieldName, int controlId, BOOL suppressLog, DialogControlTypes type)

Adjon hozzá vezérlőelem-megfeleltetést a .config XML-fájl Mező eleme és a lap párbeszédpanelén lévő vezérlőazonosító között a 32. táblázatban látható módon. Ezt a metódust az InitFields hívása előtt kell meghívnia, mert az InitFields ezt az információt használja. Ez a metódus mindig S_OK ad vissza.

32. táblázat. HRESULT AddField

Paraméter Leírás
Mezőnév A lap XML-fájljában megjelenő mező neve
controlId A vezérlő azonosítója a lap párbeszédpanel-sablonjában
suppressLog Állítsa IGAZ értékre, ha nem szeretné, hogy a mező értékei a naplófájlba íródjanak; jelszó- vagy PIN-kódmezők esetén mindig állítsa ezt a paramétert TRUE (IGAZ) értékre
Típus A vezérlő típusa, amely az alábbiak egyike:

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

Ez a metódus hozzáad egy vezérlőelemet egy elnevezett választógombcsoporthoz, ahogyan az a 33. táblázatban látható. Ezt az InitFields metódus előtt kell meghívnia, mert ez a metódus a RadioGroup elem attribútumait használja a csoport összes választógomb-vezérlőjének beállításainak vezérléséhez. A rádiócsoportok zárolhatók például úgy, hogy az összes választógomb le legyen tiltva, de a gyermekvezérlők csak a kiválasztott választógomb alapján vannak engedélyezve vagy letiltva. Ez a metódus mindig S_OK ad vissza.

33. táblázat. HRESULT AddRadioGroup

Paraméter Leírás
groupName Egy sztring, amely a lapon választógombok egy csoportját definiálja
radioControlId A csoporthoz hozzáadandó egyetlen választógomb azonosítója
EnableRadioGroup
HRESULT EnableRadioGroup(LPCWSTR groupName, BOOL enable)

Ezzel a módszerrel egy teljes választógombcsoportot engedélyezhet vagy tilthat le. A választócsoportok letiltása letiltja a csoportban lévő összes választógomb-vezérlőt, valamint az AddToGroup csoporttal hozzáadott választógombok gyermekeit. Lásd: 34. táblázat és 35. táblázat.

34. táblázat. EnableRadioGroup

Paraméter Leírás
groupName Az AddRadioGroup hívásával már definiált választógombcsoport neve
Engedélyezi Állítsa IGAZ értékre a választógombcsoport engedélyezéséhez, a HAMIS értékre a csoport letiltásához

35. táblázat. HRESULT EnableRadioGroup

HRESULT Leírás
S_OK Csoport engedélyezve vagy letiltva
E_INVALIDARG Nincs megadott nevű választógombcsoport
InitFields
HRESULT InitFields(IFieldCallback *pFieldCallback = nullptr)

A metódus meghívása előtt hívja meg az AddField függvényt minden olyan mezőhöz, amelyet az XML szabályozhat. Ez a metódus mindig S_OK ad vissza.

A pFieldCallback paraméter megadása nem kötelező. Ha megadja, az űrlapvezérlő meghívja a SetFieldDefault függvényt olyan vezérlőkhöz, amelyek nem CONTROL_STATIC_TEXT vagy CONTROL_CHECK_BOX. Ez a viselkedés lehetővé teszi egy alapértelmezett érték lekérését az XML-ből, és saját maga állíthatja be a vezérlőben.

Mentésmezők
HRESULT SaveFields(IFieldCallback *pFieldCallback = nullptr)

Ez a metódus a mezőértékeket feladatütemezési változókba és az Összegzés lapon megjelenő összegző adatokba menti. Ha a pFieldCallbackben mutatót ad meg, akkor kezelheti a CONTROL_STATIC_TEXT nem támogató vezérlők mentési értékeit.

IsFieldDisabled
BOOL IsFieldDisabled(int controlId)

Ezzel a módszerrel megállapíthatja, hogy egy mező le van-e tiltva az XML-ben.

InitSection
HRESULT InitSection(LPCWSTR key, LPCWSTR sectionCaption)

Ez a metódus inicializálja az Összefoglalás lapon megjelenő összegző adatokat, a 36. táblázatban látható módon. A SaveFields meghívása előtt hívja meg ezt a metódust az OnNextSelected metódusban. Ez a metódus mindig S_OK ad vissza.

36. táblázat. HRESULT InitSection

Paraméter Leírás
Kulcs Ennek a paraméternek egyedinek kell lennie az oldalon. Annak biztosítására szolgál, hogy minden oldal saját összefoglaló információkkal rendelkezzen.
sectionCaption A lap összefoglaló információinak Összegzés lapján megjelenő fejléc. Ehhez a paraméterhez általában a DisplayName() értéket használja.
AddSummaryItem
HRESULT AddSummaryItem(LPCWSTR first, LPCWSTR second)

Ezzel a módszerrel összegző elemeket adhat hozzá az Összefoglalás laphoz az XML-fájllal beállított elemek felett és azon túl. Lásd: 37. táblázat.

37. táblázat. HRESULT AddSummaryItem

Paraméter Leírás
Első Az összefoglaló elem képaláírás, amely a bal oldalon látható
Második A jobb oldalon megjelenő érték
SuppressLogValue
HRESULT SuppressLogValue(LPCWSTR tsVariableName)

Ezt a metódust olyan feladatütemezési változókhoz hívja meg, amelyekhez nem szeretné, hogy az értékek a naplófájlba legyenek írva. Ezt a metódust olyan feladatütemezési változókhoz hívja meg, amelyek jelszavakat, PIN-kódokat vagy más bizalmas értékeket tárolnak, amelyeket a felhasználó megadhat.

SaveText (Szöveg mentése)
HRESULT SaveText(int controlId, LPCWSTR tsVariableName, LPCWSTR summaryCaption)

Ez a metódus egy szövegvezérlő értékét egy feladatütemezési változóba és az összefoglaló szakaszba is menti. Ezt a metódust általában nem kell saját kezűleg meghívnia, mert az űrlapvezérlő ezt az összes mező esetében elvégzi. Lásd: 38. táblázat.

38. táblázat. HRESULT SaveText

Paraméter Leírás
controlId A menteni kívánt értéket tartalmazó szövegdoboz azonosítója (vagy bármely más vezérlőelem, amely szöveget adhat vissza)
tsVariableName A módosítani kívánt feladatütemezési változó neve
summaryCaption Az érték Összegzés lapján található képaláírás
LoadText (Szöveg betöltése)
HRESULT LoadText(int controlId, LPCWSTR tsVariableName)

Ez a metódus beolvassa egy feladatütemezési változó értékét, és a szövegmezőt erre az értékre állítja.

ControlEvent
void ControlEvent(WORD eventId, WORD controlId)

Hívja meg ezt a metódust az OnControlEvent metódusban, hogy az űrlapvezérlő feldolgozhassa a vezérlési eseményeket, amelyeket a megfelelő működéshez kell tennie. A metódusnak átadott értékek megegyeznek az OnControlEvent metódusnak átadott értékekkel.

IsValid
BOOL IsValid(void)

Ez a metódus az űrlap legutóbbi érvényesítésének állapotát adja vissza. Ha valamelyik vezérlő-érvényesítő hibát jelentett, ez a metódus HAMIS értéket ad vissza. Más szóval csak akkor ad vissza IGAZ értéket, ha az oldal összes vezérlője érvényes.

IValidator Interface

__interface IValidator : IUnknown
{
    HRESULT Init(IControl *pControl, LPCTSTR message);
    HRESULT Init(IControl *pControl, IWizardPageContainer *pContainer, IStringProperties *pProperties);
    BOOL, IsValid(LPBSTR pMessage);
    HRESULT SetProperty(int propertyId, LPVARIANT pValue);
    HRESULT SetProperty(int propertyId, IUnknown *pUnknown);
    HRESULT SetProperty)(int propertyId, LPCTSTR pValue);
};
Áttekintés

Az érvényesítők olyan összetevők, amelyek egyetlen vezérlőt tudnak érvényesíteni az oldalon. Az érvényesítő implementálásának legegyszerűbb módja az, ha a BaseValidator osztály alosztálya lesz, amely a BaseValidator.h fejlécfájlban van definiálva.

HRESULT Init(IControl *pControl, LPCTSTR üzenet)

Ha kódban hoz létre érvényesítőt, meghívhatja ezt a metódust az érvényesítő inicializálásához. Lásd: 39. táblázat.

39. táblázat. HRESULT Init

Paraméter Leírás
pControl A vezérlő, amelyet az érvényesítőnek ellenőriznie kell
Üzenet Az oldalon megjelenítendő üzenet, ha a vezérlő érvénytelen
HRESULT Init(IControl *pControl, IWizardPageContainer *pContainer, IStringProperties *pProperties)

Az űrlapvezérlő ezt a metódust hívja meg a lap XML-fájlja alapján létrehozott érvényesítők inicializálásához. Lásd: 40. táblázat.

40. táblázat. HRESULT Init metódus

Paraméter Leírás
pControl A vezérlő, amelyet az érvényesítőnek ellenőriznie kell
pContainer Abban az esetben, ha az érvényesítőnek hozzá kell férnie a naplózóhoz, vagy más összetevőket kell létrehoznia
pProperties Hozzáférést biztosít az érvényesítő tulajdonságaihoz (setter elemeihez)
BOOL, IsValid(LPBSTR pMessage)

Ez a metódus IGAZ értéket ad vissza, ha a vezérlő érvényes, vagy HAMIS értéket, ha a vezérlő érvénytelen. Visszaküldéskor a pMessage-t ki kell tölteni egy új BSTR-vel , amely tartalmazza azt az üzenetet, amely akkor jelenik meg, ha a vezérlő érvénytelen.

HRESULT SetProperty(int propertyId, LPVARIANT pValue)

Ezt a módszert akkor implementálhatja, ha olyan további értékekre van szüksége, amelyek nincsenek megadva az XML-ben.

HRESULT SetProperty(int propertyId, IUnknown *pUnknown)

Ezt a módszert akkor implementálhatja, ha olyan további értékekre van szüksége, amelyek nincsenek megadva az XML-ben.

HRESULT SetProperty)(int propertyId, LPCTSTR pValue)

Ezt a módszert akkor implementálhatja, ha olyan további értékekre van szüksége, amelyek nincsenek megadva az XML-ben.

IRegEx-felület

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

Ezt a módszert a ID_Regex összetevő (IRegex.h) implementálta, és támogatja a reguláris kifejezések feldolgozását.

BOOL MatchesRegex(LPCTSTR input, LPCTSTR regex)

Ez a metódus futtatja a reguláris kifejezést a bemeneti szövegen. A C++ standard kódtár regex_match függvényét használja a tényleges munka elvégzésére. A metódus IGAZ értéket ad vissza, ha voltak találatok, egyébként HAMIS.

HRESULT GetMatch(size_t index, LPBSTR pValue)

Ezzel a módszerrel lekérheti a találatokat a legutóbbi MatchesRegex hívásból. Vegye figyelembe, hogy ebben a metódusban nincs hibafeldolgozás, és vagy S_OK ad vissza, vagy kivételt jelez.

ISummaryInfo interfész

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

Ezt a felületet nem szabad közvetlenül használnia. Ehelyett használja az IFormControllert.

ISummaryBag

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

Ezt a felületet nem szabad közvetlenül használnia. Ehelyett használja az IFormControllert.

ITSVariableBag felület

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

Ez az interfész hozzáférést biztosít a feladatütemezési változókhoz. Ezt a felületet a lap TSVariables() metódusával érheti el.

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

Ez a metódus beolvassa egy feladatütemezési változó értékét.

Megjegyzés:

A rendszer az első olvasás után gyorsítótárazza az értékeket.

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

Ez a metódus egy feladatütemezési változó értékét állítja be. Ezt az értéket a rendszer a memóriába menti. A feladatütemezési értékek megírása az UDI varázsló Befejezés elemének kiválasztása után megtörténik.

void Clear(void)

Ez a metódus eltávolítja a memóriába mentett összes feladatütemezési értéket.

HRESULT Remove([in] LPCTSTR variableName)

Ez a metódus eltávolít egy adott feladatütemezési értéket a memóriából. Amikor legközelebb ugyanazzal a feladatütemezésnévvel hívja meg a GetValue értéket, a metódus megpróbálja lekérni a feladatütemezésből.

HRESULT SuppressLogValue([in] LPCTSTR variableName)

Amikor feladatütemezési változókat ír, például amikor az UDI varázslóBan a Befejezés lehetőséget választja, a rendszer a neveket és értékeket a naplófájlba írja. Ennek a metódusnak a meghívásával letilthatja a bizalmas értékek, például jelszavak vagy PIN-kódok naplózását egy adott feladatütemezési változóhoz.

void Save(void)

Ez a metódus menti a SetValue hívásokkal beállított feladatütemezési értékeket.

ITSVariableRepository felület

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

Ez az interfész a TSVariableBag belső használatra készült a feladatütemezési változók olvasásához és írásához.

IWizardFinish felület

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

Ez a felület olyan speciális helyzetekben hasznos, ahol további feldolgozást szeretne végezni, amikor az UDI varázsló Befejezés vagy Mégse elemét választja. Az UDI varázsló tartalmaz egy Befejezés feladatot, amely menti a feladatütemezési változókat, amikor a Befejezés lehetőséget választja. Ha megszakítja a varázslót, a feladat csak az OSDSetupWizCancelled feladatütemezési változót állítja TRUE értékre, és nem menti a többi feladatütemezési változó módosításait.

Ha saját befejezési összetevőt hoz létre, regisztrálnia kell az alábbi kóddal:

Register<MyFinishTaskFactory>(ID_MyFinishTask, pRegistry);

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

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

pService->Register(pFinish);

IBindableList felület

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

Implementálja ezt az felületet, ha olyan adatforrás-összetevővel rendelkezik, amelyet egy kombinált listához szeretne kötni a Bind metódus meghívásával.

size_t Count(void)

Ez a metódus a lista elemeinek számát adja vissza.

HRESULT GetCaption(size_t index, LPBSTR pCaption)

Ez a metódus az elem képaláírás adja vissza egy adott indexben.

IDataNodes-felület

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

Ez a felület hozzáférést biztosít a lapon menthető hierarchikus adatokhoz. Ezt a felületet az ISettingsProperties felületen található metódusokkal szerezheti be, amely a Beállítások metódussal érhető el az oldal számára.

A lap XML-fájljában lévő adatok így nézhetnek ki

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

A Settings()->GetDataNode(L"Network", &pData) hívása egy IDataNodes-példányt biztosít két adatelempel (amelyek mindegyike két tulajdonságokkal rendelkezik).

size_t Count()

Ez a metódus a DataItem elemek számát adja vissza.

HRESULT SetCaptionProperty(LPCTSTR captionProperty)

Az interfészt támogató összetevő az IBindableList elemet is támogatja, amely megkönnyíti a kombinált lista feltöltését az oldal XML-fájljából származó adatokkal. Ez a metódus szabályozza, hogy az egyes DataItem elemek mely tulajdonságát (setterét) használja a rendszer ehhez a kötéshez. Meghívhatja például ezt a metódust a DisplayName névvel, és ezt a setter tulajdonságot használná az adatkötéshez. A kombinált lista ezután elemekként tartalmazza a Nyilvános és fejlesztői csapatot .

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

Ez a metódus lekér egy tulajdonságot az egyik DataItem-elemből . Lásd: 41. táblázat és 42. táblázat.

41. táblázat. DataItem GetProperty

Paraméter Leírás
Index Annak a DataItemnek az indexértéke (0-val kezdve), amelyhez tulajdonságértéket szeretne lekérni
propertyName Annak a setter tulajdonságnak a neve, amelyhez értéket szeretne lekérni
propertyValue A visszaadott érték egy tulajdonság sztringértékét tartalmazza

42. táblázat. HRESULT GetProperty

HRESULT Leírás
S_OK A tulajdonság beolvasása megtörtént.
E_INVALIDARG Az index túl van a tömb végén.
HRESULT GetNode(size_t index, [out] ISettingsProperties **ppNode)

Ez a metódus hasonló a GetProperty metódushoz, de ahelyett, hogy egy értéket adna vissza egy DataItemből, az ISettingsProperties felületbe csomagolt teljes DataItemet adja vissza. Lásd: 43. táblázat és 44. táblázat.

43. táblázat. HRESULT GetNode

Paraméter Leírás
Index Annak a DataItemnek az indexértéke (0-val kezdve), amelyhez tulajdonságértéket szeretne lekérni
ppNode Kilépéskor a DataItem csomópontot burkoló ISettingsProperties felület

44. táblázat. HRESULT GetNode-eredmények

HRESULT Leírás
S_OK A rendszer lekérte a csomópontot.
E_INVALIDARG Az index túl van a tömb végén.

IFactoryRegistry felület

__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);
};
Áttekintés

Amikor új egyéni lapot hoz létre, legalább létre kell hoznia egy lap-előállítót – az IClassFactory-t megvalósító osztályt. (A ClassFactoryImpl a gyár alaposztályaként is használható.)

void Register(LPCTSTR type, IClassFactory *pFactory)

Ez a metódus egy osztály-előállítót regisztrál a beállításjegyzékben. Lásd: 45. táblázat.

45. táblázat. IClassFactory void Register

Paraméter Leírás
Típus Egy sztring, amely azonosítja a regisztrálandó gyárat; általában ennek a paraméternek tartalmaznia kell a vállalat nevét a sztringben, hogy biztosan egyedi legyen
pFactory Mutató az osztálygyár-példányra
HRESULT LoadAndRegister(LPCTSTR dllName, ILogger *pLogger)

Ez a módszer csak belső használatra használható.

BOOL Contains(LPCTSTR type)

Ez a módszer általában belső használatra készült. Ellenőrzi, hogy egy osztálygyár regisztrálva van-e egy típushoz.

HRESULT GetFactory(LPCTSTR type, IClassFactory **ppFactory)

Ezzel a módszerrel lekérheti az osztály-előállítót. Általában a CreateInstance metódust hívja meg. Ha azonban sok azonos összetevőt fog létrehozni, hatékonyabb lekérni a gyárat, majd megkérni, hogy hozza létre a példányokat.

HRESULT CreateInstance(LPCTSTR type, IUnknown **ppInstance)

Ez a metódus egy összetevő új példányát hozza létre a típusától függően. Ehelyett használja a CreateInstance sablonmetódust, amely lehetővé teszi a típusalapú objektumlétrehozást.

HRESULT SetContainer(IWizardPageContainer *pContainer)

Ez a módszer csak belső használatra használható.

HRESULT RegisterService(REFGUID iid, IUnknown *pService)

A szolgáltatások egy összetevő egyetlen példányai, amelyek több helyen is használhatók. Ezzel a módszerrel regisztrálhat egy szolgáltatást az egyik oldalon, majd lekérheti ugyanazt a példányt egy másik lapról.

HRESULT GetService(REFGUID iid, IUnknown **ppService)

Ez a metódus lekéri a RegisterService hívásával korábban regisztrált szolgáltatást.

HRESULT SetLanguage(LANGID languageId)

Ez a metódus az UDI varázsló nyelvét a languageId paraméterben megadott nyelvazonosítóra állítja be.

LANGID GetLanguage()

Ez a metódus az UDI varázsló /locale parancssori paraméteréhez megadott nyelvazonosító értékét adja vissza. A metódus az alábbi értékek egyikét adja vissza:

  • A /locale parancssori paraméterrel megadott nyelvazonosító értéke

  • 0, ha nem adta meg a /locale parancssori paramétert

ILogger felület

__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);
};
Áttekintés

Az UDI varázsló naplózza az adatokat egy naplófájlba, amely segít a mezőben található problémák elhárításában. Az oldalaknak érdemes naplózniuk az információkat. Ehhez a felülethez mutatót a lap Logger() metódusával szerezhet be az oldalon belül. A naplófájl sorai egy "szint" számot tartalmaznak, amely hibaüzeneteket, normál, részletes vagy hibakeresési üzeneteket jelöl.

Megjegyzés:

A hibakeresési üzeneteket a rendszer csak akkor menti a naplófájlba, ha a hibakeresési támogatás be van kapcsolva. A hibakeresési támogatás bekapcsolásához adja hozzá a következő sort a .config fájl Style eleméhez:

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

Ez a módszer csak belső használatra használható.

MoveLog
HRESULT MoveLog(LPCWSTR logFilename)

Ez a módszer csak belső használatra használható.

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

Ez a módszer csak belső használatra használható.

Napló
HRESULT Log(EMessageType messageType, LPCTSTR component, LPCTSTR message)

Ez a módszer csak belső használatra használható.

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

Hívja meg ezt a metódust egy hiba adatainak naplózásához. Lásd: 46. táblázat.

46. táblázat. HRESULT-hiba

Paraméter Leírás
Hiba A hívás által visszaadott hibakód (Ez a kód számként jelenik meg a naplóbejegyzésben.)
Összetevő A hiba forrását azonosító sztring, amely általában az Ön oldala vagy az Ön által írt összetevő
Üzenet Az üzenet, amely elmagyarázza, mi okozta a hibát
2.hiba
HRESULT Error2(HRESULT error, LPCTSTR component, LPCTSTR message, LPCTSTR message2)

Ez a metódus hasonló az Error metódushoz, de lehetővé teszi egy kétrészes üzenet megadását. Az utolsó üzenet "message" (üzenet), majd "message2" (üzenet2) lesz a kimeneti fájlban. Ez egyszerűen egy egyszerű módszer.

Normál
HRESULT Normal(LPCTSTR component, LPCTSTR message)

Ez a metódus egy normál üzenetet naplóz. A paraméterekért tekintse meg az Error metódus leírását.

Normál2
HRESULT Normal2(LPCTSTR component, LPCTSTR message, LPCTSTR message2)

Ez a metódus egy normál üzenetet naplóz. A paraméterekért tekintse meg az Error2 metódus leírását.

Részletes
HRESULT Verbose(LPCTSTR component, LPCTSTR message)

Ez a metódus részletes üzenetet naplóz. A paraméterekért tekintse meg az Error metódus leírását.

Részletes2
HRESULT Verbose2(LPCTSTR component, LPCTSTR message, LPCTSTR message2)

Ez a metódus részletes üzenetet naplóz. A paraméterekért tekintse meg az Error2 metódus leírását.

Debug
HRESULT Debug(LPCWSTR component, LPCWSTR message)

Ez a metódus naplóz egy hibakeresési üzenetet. A paraméterekért tekintse meg az Error metódus leírását. A hibakeresési üzeneteket a rendszer csak akkor menti a fájlba, ha engedélyezve van. A részletekért tekintse meg az Áttekintés szakaszt.

EnableDebug
HRESULT EnableDebug(BOOL debug)

Ez a módszer csak belső használatra használható.

Közel
HRESULT Close(void)

Ez a módszer csak belső használatra használható.

GetLogFilename
HRESULT GetLogFilename(LPBSTR pFilename)

Ez a metódus lekéri a naplófájl nevét.

IOrientation Interface

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

Ez az interfész csak belső használatra készült.

ISettings-felület

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

Ez az interfész csak belső használatra készült.

ISettingsProperties felület

__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);
};
Áttekintés

Ez a felület hozzáférést biztosít a lapadatokhoz. A lapadatok legfelső szintjének eléréséhez használja a lap Beállítások() metódusát.

HRESULT GetAttribute(LPCTSTR attributeName, LPBSTR attributeValue)

Ezzel a módszerrel lekérheti a fő csomópont attribútumainak értékeit, amely az oldal Settings() metódusának használatakor az Oldal csomópont.

IStringProperties * Properties()

Ez a metódus hozzáférést biztosít a setter tulajdonságértékekhez a fő csomóponton. Egy lap esetében ezek a legfelső szintű tulajdonságok.

HRESULT SelectNodes(LPCTSTR xPath, IXMLDOMNodeList **ppList)

Akkor hívja meg ezt a metódust, ha közvetlenül szeretné lekérni az XML-csomópontok listáját egy XPath-kifejezés használatával. Jobb, ha a többi módszer egyikét is használhatja. Ezt a módszert csak akkor használja, ha más módon nem tud csomópontokat elérni.

HRESULT SelectSingleNode(LPCTSTR xPath, IXMLDOMNode **ppNode)

Akkor hívja meg ezt a metódust, ha egy XPath-kifejezéssel közvetlenül szeretne egyetlen XML-csomópontot lekérni. Jobb, ha a többi módszer egyikét is használhatja. Ezt a módszert csak akkor használja, ha más módon nem tud csomópontot elérni.

HRESULT GetDataNode(LPCTSTR name, ISettingsProperties **ppNode)

Lekér egy Data elemet az elem Name attribútuma alapján.

HRESULT GetDataNodes(IDataNodes **ppNodes)

Ez a metódus lekéri az aktuális csomópont alatti DataItem elemek listáját. Az oldal szintjén hívja meg a GetDataNode parancsot az adatok ISettingsProperty felületének lekéréséhez. Ezután a példányon hívja meg a GetDataNodes metódust a rekordok listájának lekéréséhez. Ez az XML például a következő:

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

Ez a módszer gyors módot kínál az adott Adatcsomóponton található DataItem csomópontok halmazának eléréséhez. A GetDataNodes példában szereplő XML használatával az alábbi kód pontosan ugyanazt teszi, mint a GetDataNodes alatti példában szereplő négysoros kód, hibaellenőrzéssel:

ISimpleStringProperties Interface

ISimpleStringProperties felület

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

Ez a felület önmagában nem feltétlenül hasznos. Ezt azonban a ID_SimpleStringProperties összetevő implementálja, amely az IStringProperties felületet is implementálja. Ezt az összetevőt olyan esetekben használhatja, amikor tulajdonságokat kell átadnia egy másik összetevőnek, például egy feladatnak, de az XML-értékek használata helyett programozott módon szeretne értékeket hozzáadni. Íme egy példa arra, hogyan használhatja ezt a felületet:

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

Ez az interfész egyszerű hozzáférést biztosít az XML-ből származó setter-elemek készletéhez. Ez a felület a Beállítások()->Properties() használatával érhető el egy lap tulajdonságaihoz.

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

Ez a metódus egyetlen tulajdonságértéket kér le. Lásd: 47. táblázat és 48. táblázat.

47. táblázat. IHRESULT Get tulajdonságérték

Paraméter Leírás
propertyName Az olvasni kívánt tulajdonság neve
pPropValue Kilépéskor a karakterláncként tartalmazza a tulajdonságértéket (Ez az érték nullptr lesz, ha nincs ilyen tulajdonság.)

48. táblázat. IHRESULT Tulajdonságérték lekérése eredmények

HRESULT Leírás
S_OK A rendszer beolvassa a tulajdonság értékét.
E_INVALIDARG Nincs olyan tulajdonság, amelynek a neve meg van adva.

ITaskManager interfész

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

Ezt az felületet a TaskManager összetevő (ID_TaskManager az ITaskManager.h fájlban) valósítja meg, amely az az összetevő, amely feladatokat futtat az elővizsgálati oldalon. Használhatja közvetlenül az elővizsgálati oldalt, amely az idő nagy részében ezt teszi, vagy létrehozhat egy saját oldalt, így ez az összetevő elvégezheti a munka nagy részét.

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

Más metódusok meghívása előtt meg kell hívnia ezt a metódust. Inicializálja a TaskManager összetevőt. Lásd: 49. táblázat.

49. táblázat. HRESULT Init

Paraméter Leírás
pPageView Hozzáférést biztosít a feladatokat futtató laphoz (Ennek a lapnak a következő néhány paraméterben ismertetett vezérlőkészlettel kell rendelkeznie.)
idListView Egy ListView vezérlőelem vezérlőazonosítója, amely megjeleníti a feladatok listáját és a feladatok állapotát
idMessage A kijelölt feladat üzenetének megjelenítésére szolgáló szövegdoboz vezérlőazonosítója
idRetryButton A feladatok ismételt futtatásához kiválasztható gomb vezérlőazonosítója
pPageInfo A lap XML-fájlja körüli burkoló (a TaskManager betölti az XML-ből futtatandó tevékenységek készletét.)
pCallback Lehet null (Ha ez a paraméter nem null, a TaskManager meghívja az Elindítva metódust, amikor elindít egy tevékenységet, és a Kész metódust minden olyan tevékenységhez, amely befejezi a futást.)
HRESULT SetFailMessage(LPCWSTR-üzenet)

Ez a metódus beállítja azt az üzenetet, amely akkor jelenik meg, ha egy vagy több feladat meghiúsul.

HRESULT Start(void)

Ez a metódus elindítja az összes tevékenységet. Minden feladat külön szálon indul el.

HRESULT GetTaskMessage(size_t index, LPBSTR-üzenet)

Ez a módszer csak belső használatra használható. Lekéri egy feladat aktuális üzenetét a tevékenységek listájában lévő indexe alapján.

HRESULT GetResultType)(size_t index, LPBSTR-típus)

Ez a metódus lekéri egy tevékenység aktuális "típusát". Az 50. táblázat az elérhető típusokat mutatja.

50. táblázat. HRESULT GetResultType

Típus Leírás
0 Sikeres tevékenységet jelöl
1 Figyelmeztetést visszaadó feladatokat jelöl
-1 Sikertelen feladatot jelöl

A típus lekéréséhez tekintse meg a tevékenység kilépési vagy hibakódját, és keressen egyezést a tevékenység ExitCodes> XML-elemében<.

HRESULT GetProperty(size_t index, LPCTSTR propertyName, LPBSTR value)

A folyamatjelző és az elővizsgálati lapok ezt a módszert használják a BitmapFilename setter tulajdonság lekéréséhez, hogy megjeleníthesse a kiemelt feladat üzenete melletti képet. Más szóval hozzáadhat egy egyéni beállítót a tevékenység XML-fájljában, majd lekérheti ezzel a módszerrel.

int GetSelectedIndex(void)

Ez a metódus lekéri az aktuálisan kijelölt tevékenység indexét, ami akkor hasznos, ha további információkat szeretne lekérni a tevékenységről (lásd a GetProperty metódust), hogy megjelenjen a kijelölt tevékenységhez. A folyamatjelző és az elővizsgálati lapok ezzel a módszerrel jelenítik meg a kijelölt tevékenység képét.

HRESULT Wait(DWORD waitMilliseconds)

Ez a módszer elsősorban az egységtesztekhez nyújt segítséget, így a teszt biztosíthatja, hogy a tevékenységek befejeződjenek, mielőtt az egységteszt kilép. Ezt a metódust általában nem hívná meg. Azt adja vissza, hogy mikor fejeződik be az összes tevékenység futása, vagy a várakozási idő letelt.

size_t FailedCount(void)

Ez a metódus az aktuálisan sikertelenként megjelölt tevékenységek számát adja vissza.

size_t WarningCount(void)

Ez a metódus az aktuálisan figyelmeztetésként megjelölt tevékenységek számát adja vissza.

size_t SucceedCount(void)

Ez a metódus az aktuálisan sikeresként megjelölt tevékenységek számát adja vissza.

size_t RunningCount(void)

Ez a metódus az aktuálisan futó tevékenységek számát adja vissza.

void OnCommonControlEvent(WORD controlId, LPNMHDR pInfo)

Hívja meg ezt a metódust a lap OnCommonControlEvent eseményéből, hogy a TaskManager feldolgozhassa a szükséges eseményeket.

void OnControlEvent(WORD eventId, WORD controlId)

Hívja meg ezt a metódust a lap OnControlEvent eseményéből, hogy a TaskManager feldolgozhassa a szükséges eseményeket.

void EnableButtons(BOOL enable)

Ez a módszer csak belső használatra használható.

IWizardComponent felület

__interface IWizardComponent : IUnknown
{
    HRESULT SetContainer(IWizardPageContainer *pContainer);
};
Áttekintés

Ezt a felületet általában nem közvetlenül, hanem a WizardComponent sablonosztályon keresztül valósítja meg. Ha az összetevő implementálja ezt a felületet, és regisztrált egy osztály-előállítót a beállításjegyzékben, az összetevő a létrehozáskor az IWizardPageContainer példányra mutató mutatót kap. Ez segít például elérni a naplózót vagy a beállításjegyzéket, hogy más összetevőket hozzon létre, amelyekre az összetevőnek szüksége lehet.

IWizardDialogController felület

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

Ez az interfész csak belső használatra készült.

IWizardDialogView felület

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

Ez az interfész csak belső használatra készült.

IWizardPage felület

__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);
};
Áttekintés

Ezt a felületet a WizardPageImpl valósítja meg, így ezt általában nem kell saját maga implementálnia. A varázsló meghívja ezeket a metódusokat, amikor az egyéni lapokkal kommunikál.

IWizardPageContainer felület

__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);
};
Áttekintés

Ez a felület a Container metóduson keresztül érhető el (a WizardPageImpl által implementálva), és hozzáférést biztosít a varázsló különböző szolgáltatásaihoz.

ILogger * Logger(void)

Ezzel a módszerrel üzeneteket írhat a naplófájlba, például:

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

Ez a metódus hozzáférést biztosít a "memória" változókhoz, amelyek olyan tulajdonságok, amelyek csak az UDI varázsló futtatása közben találhatók a memóriában. Ezek a tulajdonságok a kódban vagy az XML-ben is elérhetők a $memoryVarName$ szintaxis használatával.

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

Ezzel a módszerrel bármely regisztrált összetevő új példányát hozhatja létre. Érdemesebb azonban a CreateInstance sablonfüggvényt használni, mert erősen gépelt.

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

Ezzel a módszerrel lekérhet egy regisztrált szolgáltatást. Azonban jobb, ha meghívja a GetService sablonfüggvényt, amely erősen be van állítva (az IUnknown használata helyett).

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

Ez a metódus kezeli a sztringértékeken belüli változók kezelését. Támogatja az 51. és az 52. táblázatban látható formátumokat.

51. táblázat. HRESULT ReplaceVariables

Formátum Leírás
$Name$ Lecseréli egy memóriaváltozó értékét erre a névre (Ha nincs memóriaváltozó a névvel, a "token" el lesz távolítva.)
%Name% Feladatütemezési változó vagy környezeti változó. A sorrend a következő:

1. Ha van ilyen, használja a feladatütemezési változó értékét.
2. Használja egy környezeti változó értékét, ha van ilyen.
3. Ellenkező esetben távolítsa el ezt a szöveget a sztringből.

52. táblázat. HRESULT paraméter

Paraméter Leírás
Source (Forrás) A bemeneti sztring, amely a és % változók tetszőleges kombinációját $ vagy egyáltalán nem tartalmazhatja
pDest Visszatérés esetén egy új sztringet tartalmaz, amely az 51. táblázat szerint lecserélte az összes jogkivonatot
HRESULT GotoPage(LPCTSTR pageName)

Ez a módszer nem lett teljesen tesztelve. Az ötlet az, hogy közvetlenül egy adott lapra válthat az .config XML-fájlban meghatározott lap neve alapján. A metódus meghívása megkerüli az OnNextSelected elemet a lapon. Emellett ennek a módszernek a viselkedése változhat, ezért saját felelősségére használja.

int ShowMessageBox(LPCTSTR-üzenet, LPCTSTR lpCaption, UINT uType)

Ez a metódus megjelenít egy üzenetpanelt a megadott szöveggel és képaláírás. Az uType paraméter bármilyen érték, amelyet megadhat a MessageBox Win32 függvénynek.

BOOL InPreview(void)

Ez a metódus IGAZ értéket ad vissza, ha a varázslót "előzetes verzió" módban indította el az /preview kapcsoló megadásával. Előnézeti módban a Tovább gomb soha nem lesz letiltva. Ez a módszer lehetővé teszi a kód előnézeti módban való megkerülését, ami problémákat okozhat, ha nem rendelkezik érvényes adatokkal az oldalon.

HWND GetHwnd(void)

Ez a metódus a fő párbeszédpanel HWND értékét adja vissza. Ezt a módszert körültekintően használja. Az UDI varázsló alkalmazásprogramozási felülete általában úgy van kialakítva, hogy soha ne dolgozzon közvetlenül ablakfogópontokkal.

IWizardPageView felület

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

Ez a felület a View metódussal (a WizardPageImpl által implementálva) érhető el a lap kódjához.

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

Az UDI varázsló burkolókat használ, amelyek valójában homlokzatok az oldalon lévő vezérlők interakciójához. Ha ezeket a homlokzatokat használja a tényleges vezérlők helyett, sokkal egyszerűbben írhat teszteket az oldalához, mivel a tesztekből szimulálhatja a homlokzatokat.

Ahelyett, hogy közvetlenül használná ezt a metódust, jobb, ha a GetControlWrapper sablonmetódust használja, amely erősen be van állítva – például:

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

Ez a metódus az oldal ablakleíróját adja vissza. Ehhez az ablakleíróhoz általában nincs szükség hozzáférésre.

HWND GetControl(int itemId)

Ha szükséges, meghívhatja ezt a metódust, hogy lekérje az oldal egy vezérlőjének ablakleíróját. (Jobb, ha meghívja a GetControlWrapper sablonfüggvényt).

HRESULT Show (void)

Ez a módszer csak belső használatra használható.

HRESULT Hide(void)

Ez a módszer csak belső használatra használható.

HRESULT Focus(int itemId)

Állítsa a bemeneti fókuszt egy adott vezérlőre.

IWizardPage * Page(void)

Ez a módszer csak belső használatra használható.

IFormController * Form(void)

Ez a módszer csak belső használatra használható.

HRESULT FocusWizardButton(WizardButtons button)

A fókuszt a varázsló egyik gombjára állítja. A WizardButtons két értékkel rendelkezik: BackButton és NextButton.

HRESULT SetEnable(WizardButtons button, BOOL enable)

Kérje meg, hogy engedélyezze vagy tiltsa le az egyik varázslógombot. Előfordulhat, hogy a gomb nem felel meg a kért állapotnak. Ha például az UDI varázslót az /preview kapcsolóval futtatja, a gombok mindig engedélyezve lesznek. A WizardButtons két értékkel rendelkezik: BackButton és NextButton.

void ShowWarningMessage(LPCTSTR-üzenet)

Ez a metódus egy figyelmeztető üzenetet jelenít meg a lap tartalomterületének alján. Ez az üzenet tetszőleges szöveg lehet.

void HideWarningMessage(void)

A ShowWarningMessage hívásával megjelenő figyelmeztető üzenet elrejtése.

IXmlDocument interfész

__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);
};
Áttekintés

Ezt a felületet a ID_IXmlDocument összetevő valósítja meg, amely egy olyan homlokzat, amely megkönnyíti az XML-dokumentumok használatát C++ nyelven.

HRESULT Load(LPCTSTR fájlnév)

Ez a metódus egy XML-dokumentumot tölt be egy külső fájlból. Visszaadja S_OK, hogy a fájl hiba nélkül lett-e betöltve, vagy S_FALSE hiba történt-e. Hiba esetén a getParseErrorMessage meghívásával kaphat hibaüzenetet.

HRESULT LoadXml(LPCTSTR xml)

Ez a metódus egy xml-dokumentumot tölt be egy sztringből külső fájl helyett. Az XML olvasásának forrásán kívül a viselkedés ugyanaz, mint a Load metódus.

HRESULT Save(LPCWSTR fájlnév)

Ez a metódus egy külső fájlba menti a memóriában lévő XML-dokumentumot.

HRESULT GetParseErrorMessage(LPBSTR pMessage)

Ez a metódus egy új sztringet ad vissza, amely az XML-dokumentum betöltésének hibaüzenetével jelenik meg, ha van ilyen. Mindig S_OK ad vissza.

HRESULT SelectNodes(LPCTSTR xpath, IXMLDOMNodeList **ppNodes)

Ez a metódus lehetővé teszi, hogy XPath-kifejezéssel lekérjen egy csomópontgyűjteményt a dokumentumból. Mindig S_OK ad vissza.

HRESULT SelectSingleNode(LPCTSTR xpath, IXMLDOMNode **ppNode)

Ezzel a módszerrel XPath-kifejezéssel lekérhet egy csomópontot a dokumentumból. Mindig S_OK ad vissza.

HRESULT AddSchema(LPCTSTR fájlnév, LPCTSTR ns)

Ez a metódus hozzáadja egy külső sémafájl nevét, amelyet a rendszer az XML-dokumentum sémájának ellenőrzésére fog használni a betöltéskor. A megadott névtér az XPath-lekérdezésekben használható sztring, bár ez még nem lett tesztelve.

HRESULT AddAttribute(IXMLDOMNode *pNode, LPCWSTR name, LPCWSTR value)

Ez a metódus egy új attribútumot ad hozzá egy meglévő csomóponthoz az XML-dokumentumban. Lásd: 53. táblázat.

53. táblázat. HRESULT AddAttribute

Paraméter Leírás
pNode Az a csomópont, amelyhez attribútumot szeretne hozzáadni
Név Az új attribútum neve
Érték Az új attribútum értéke
HRESULT CreateNode(DOMNodeType type, LPCWSTR name, LPCWSTR ns, IXMLDOMNode **ppNode)

Új csomópont létrehozásához hívja meg ezt a metódust:

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

Miután létrehozott egy új csomópontot, gyermekként hozzáadhatja egy másik csomóponthoz a szülő appendChild metódusának meghívásával.

Segédfüggvények

CreateInstance Template Függvény

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

Ez a függvény az IWizardPageContainer.h fájlban van definiálva, és típusbiztos burkolót biztosít az IWizardPageContainer-CreateInstance> metóduson keresztül – például:

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

Ez a kód létrehoz egy új ID_Directory összetevőt az összetevő IDirectory felületének lekéréséhez.

Szolgáltatássablon-függvény lekérése

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

Ez a függvény az IWizardPageContainer.h fájlban van definiálva, és egy típusbiztos burkolót biztosít az IWizardPageContainer-GetService> metóduson keresztül – például:

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

Ez a függvény lekéri a feladatütemezési összetevőt, amely támogatja az ITSVariableBag felületet. ( ItsVariableBag esetén használhatja a WizardPageImpl osztály TSVariables metódusát.)

UDI varázsló Tervező konfigurációs fájl sémareferenciája

Ezt a fájlt az UDI varázsló Tervező használja. Minden egyéni .dll fájlhoz külön fájl jön létre, amely egyéni varázslólapszerkesztőket, egyéni feladatokat vagy egyéni érvényesítőket tartalmazhat. A fájlnak.config kell végződnie, és a installation_folder\Bin\Config mappában kell lennie (ahol installation_folder az a mappa, amelyre az MDT-t telepítette).

Az 54. táblázat az UDI varázsló Tervező konfigurációs fájl elemeit és azok leírását sorolja fel. A DesignerConfig elem a referencia gyökércsomópontja.

54. táblázat. Az UDI varázsló elemei Tervező konfigurációs fájlban és leírásukban

Elem neve Leírás
DesignerConfig Az összes többi elem gyökerét határozza meg
DesignerMappings Lapelemekegy csoportjának csoportosítása
Oldalala Megadja az UDI varázsló Tervező betöltendő varázslólapszerkesztőt, amely a varázslólap konfigurációs beállításainak szerkesztésére szolgál
Param Olyan paramétert ad meg, amelyet a rendszer a szülő Tevékenység vagy Validator elemnek ad át, és megfelel az UDI varázsló konfigurációs fájljában található Setter elemnek Megjegyzés: Az elem attribútumai eltérőek, ha a szülő a Feladat vagy az Érvényesítő elem.
Feladat Feladat megadása a feladattárban
TaskItem A tevékenységnek átadott paraméterek csoportját adja meg
TaskLibrary Tevékenységelemek csoportjainak csoportosítása
Validator Egy érvényesítőt ad meg az érvényesítő kódtárban
ValidatorLibrary Érvényesítő elemek halmazának csoportosítása

DesignerConfig

Ez az elem az összes többi elem gyökerét határozza meg.

Eleminformáció

Az 55. táblázat a DesignerConfig elemről nyújt információt.

55. táblázat. Tervezőkonfigurálási elem adatai

Attribútum Érték
Előfordulások száma Egy: Ez az elem kötelező.
Szülőelemek Egyikre sem.
Tartalom DesignerMappings, TaskLibrary, ValidatorLibrary
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa
<DesignerConfig>
   + <TaskLibrary>
   + <ValidatorLibrary>
   + <DesignerMappings>
</DesignerConfig>

DesignerMappings

Ez az elem lapelemek halmazát csoportosítja.

Eleminformáció

Az 56. táblázat a DesignerMappings elemről nyújt információt.

56. táblázat. DesignerMappings eleminformáció

Attribútum Érték
Előfordulások száma Nulla vagy egy a DesignerConfig elemen belül (Ez az elem nem kötelező, ha nincs olyan egyéni varázslólap a DLL-ben, amely megfelel az UDI varázsló Tervező konfigurációs fájlnak.)
Szülőelemek DesignerConfig
Tartalom Oldalala
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa
<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>

Oldalala

Ez az elem egy varázslólapszerkesztőt határoz meg, amelyet be kell tölteni az UDI varázsló Tervező, amely a varázslólap konfigurációs beállításainak szerkesztésére szolgál.

Eleminformáció

Az 57. táblázat a Page elemről nyújt információt.

57. táblázat. Lapelem adatai

Attribútum Érték
Előfordulások száma A DesignerMappings elemben definiált minden varázslólaphoz egy vagy több
Szülőelemek DesignerMappings
Tartalom Bármilyen jól formázott XML-tartalom
Elemattribútumok

Az 58. táblázat felsorolja a Page elem attribútumait és azok leírását.

58. táblázat. A Lap elem attribútumai és megfelelő értékei

Attribútum Leírás
Leírás Az UDI varázsló Tervező
DesignerAssembly Megadja a varázsló lapszerkesztőjével társított .dll fájl nevét (a .dll fájlnak léteznie kell a installation_folder\Bin mappában (ahol installation_folder az a mappa, amelyre az MDT-t telepítette.)
DesignerType Megadja a varázsló lapszerkesztőjének nevét a DesignerAssembly attribútumban megadott .dll fájlban (ez a varázsló lapszerkesztőjének Microsoft .NET-típusa, a teljes Microsoft .NET-névtérrel).)
Displayname Megadja a lapszerkesztő felhasználóbarát nevét, amely az UDI varázsló Tervező
DLL Megadja a varázslólaphoz társított .dll fájl nevét (a .dll fájlnak a installation_folder\Templates\Distribution\Tools\platform mappában kell lennie (ahol installation_folder az a mappa, amelyre az MDT-t telepítette, a platform pedig x86 a 32 bites verzióhoz, vagy az x64 a 64 bites verzióhoz tartozik.) Megjegyzés: Győződjön meg arról, hogy a DLL processzorarchitektúra megegyezik a telepített MDT processzorarchitektúrával. Ha például az MDT 32 bites verzióját telepítette, győződjön meg arról, hogy 32 bites DLL-t használ a varázslólaphoz.
Kép Megadja a lap PNG formátumú képének nevét (a .png fájlnak a installation_folder\Bin\Images mappában kell lennie (ahol installation_folder az a mappa, amelyre az MDT-t telepítette.)
Típus Megadja a varázsló lapszerkesztőjének nevét, és meg kell egyeznie az egyéni lap regisztrálásakor használt névvel
Megjegyzések

Az UDI varázsló Tervező a Page (Oldal) elemet használja sablonként egy új varázsló kezdeti XML-fájljának létrehozásához. Az UDI varázsló Tervező végrehajtja a sémaérvényesítést, hogy az oldal- és gyermekelemek érvényes formátummal rendelkezzenek. Ez az elem megfeleltetést biztosít az UDI varázsló oldaltípusa és az UDI varázsló Tervező által az ilyen típusú lapok egyéni lapszerkesztővel történő szerkesztéséhez és létrehozásához.

Példa

Nincs.

Param

Ez az elem megad egy paramétert, amelyet a rendszer átad a szülő Feladat vagy Validator elemnek, és megfelel az UDI varázsló konfigurációs fájljában található Setter elemnek.

Megjegyzés:

Az elem attribútumai eltérőek, ha a szülő a Feladat vagy az Érvényesítő elem.

Eleminformáció

Az 59. táblázat a Param elemről nyújt információt.

59. táblázat. Param-elem adatai

Attribútum Érték
Előfordulások száma Egy vagy több minden TaskItem vagy Validator szülőelemhez
Szülőelemek TaskItem, Validator
Tartalom Bármilyen jól formázott XML-tartalom
Elemattribútumok

A 60. táblázat felsorolja a Param elem attribútumait, és mindegyik leírását tartalmazza.

60. táblázat. A Param elem attribútumai és megfelelő értékei

Attribútum Leírás
Leírás Az UDI varázsló Tervező Megjegyzés: Ez az attribútum csak a Validator elemhez érvényes, információt tartalmazó szöveget ad meg a paraméterről.
Displayname Megadja az érvényesítő paraméter felhasználóbarát nevét, amely az UDI varázsló megfelelő lapján jelenik meg az UDI varázsló Tervező (Ez a név általában leíróbb, mint a Name attribútum.) Megjegyzés: Ez az attribútum csak az Érvényesítő elemnél érvényes.
Név Megadja a feladatnak vagy az érvényesítőnek átadott paraméter nevét a szülőelemtől függően (ez az attribútum lesz az UDI varázsló konfigurációs fájljának Setter elemében található Property attribútum.) Megjegyzés: Ez a paraméter a TaskItem és az Validator szülőelemhez is használható.
Megjegyzések

Nincs.

Példa

Nincs.

Feladat

Ez az elem egy tevékenységet határoz meg a feladattárban.

Eleminformáció

A 61. táblázat a Feladat elemről nyújt információt.

61. táblázat. Tevékenységelem adatai

Attribútum Érték
Előfordulások száma Egy vagy több a TaskLibrary elemen belül (Ez az elem nem kötelező, ha a TaskLibrary elem meg van adva.)
Szülőelemek TaskLibrary
Tartalom TaskItem
Elemattribútumok

A 62. táblázat felsorolja a Feladat elem attribútumait, és mindegyik leírását tartalmazza.

62. táblázat. A tevékenységelem attribútumai és megfelelő értékei

Attribútum Leírás
Leírás Az UDI varázsló Tervező
DLL Megadja a feladathoz társított .dll fájl nevét (A .dll fájlnak a installation_folder\Templates\Distribution\Tools\platform mappában kell lennie (ahol installation_folder az a mappa, amelyre az MDT-t telepítette, a platform pedig x86 a 32 bites verzióhoz, vagy x64 a 64 bites verzióhoz.)
Név Megadja a feladat nevét, amely a megfelelő UDI varázsló lapján és az UDI varázsló Tervező
Típus Megadja a feladattípust, amely regisztrálva van a gyári beállításjegyzékben, és egy adott feladat meghívására szolgál egy .dll fájlban
Megjegyzések

Nincs.

Példa

Nincs.

TaskItem

Ez az elem a tevékenységnek átadott paraméterek egy csoportját adja meg.

Eleminformáció

A 63. táblázat a TaskItem elemről nyújt információt.

63. táblázat. TaskItem elem adatai

Attribútum Érték
Előfordulások száma Egy vagy több minden tevékenységelemhez
Szülőelemek Feladat
Tartalom Param
Elemattribútumok

A 64. táblázat felsorolja a TaskItem elem attribútumait, és mindegyik leírását tartalmazza.

64. táblázat. A TaskItem elem attribútuma és megfelelő értékei

Attribútum Leírás
Típus Az UDI varázsló konfigurációs fájljában létrehozandó elemtípust adja meg. Létrejön egy XML-elem, amely megfelel az attribútum értékének. Ha például ennek az attribútumnak az értéke Fájl, akkor az UDI varázsló konfigurációs fájljában létrejön egy Fájl elem.

Jelenleg csak a következő értékek támogatottak:

- Fájl, amelyhez két Param gyermekelemre van szükség (egy Param gyermekelem, amelynek Name attribútuma a Source (Forrás ), egy másik pedig a Name ( Név ) attribútummal dest (Dest) értékű Param gyermekelem.
- Setter, amelyhez egy Param gyermekelem szükséges
Megjegyzések

Nincs.

Példa

Nincs.

TaskLibrary

Ez az elem feladatelemek halmazát csoportosítja.

Eleminformáció

A 65. táblázat a TaskLibrary elemről nyújt információt.

65. táblázat. TaskLibrary elem adatai

Attribútum Érték
Előfordulások száma Nulla vagy egy a DesignerConfig elemen belül (Ez az elem nem kötelező, ha az UDI varázsló Tervező konfigurációs fájlnak megfelelő egyéni feladatok nincsenek a DLL-ben.)
Szülőelemek DesignerConfig
Tartalom Feladat
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa
<DesignerConfig>
   - <TaskLibrary>
        +<Task DLL="" Description="Executes a process with the given command line." Type="Microsoft.Wizard.ShellExecuteTask" Name="Shell Execute Task">
        +<Task DLL="OSDRefreshWizard.dll" Description="Discovers supported applications for install." Type="Microsoft.OSDRefresh.AppDiscoveryTask" Name="Application Discovery">
        +<Task DLL="SharedPages.dll" Description="Check to ensure a wired network connection is available." Type="Microsoft.SharedPages.WiredNetworkTask" Name="Wired Network Check">
        +<Task DLL="OSDRefreshWizard.dll" Description="Check to ensure power source is AC (not battery)." Type="Microsoft.OSDRefresh.ACPowerTask" Name="AC Power Check">
        +<Task DLL="" Description="Check to ensure power source is AC (not battery)." Type="Microsoft.Wizard.CopyFilesTask" Name="Copy Files Task">
     </TaskLibrary>
   + <ValidatorLibrary>
   + <DesignerMappings>
</DesignerConfig>

Validator

Ez az elem egy érvényesítőt határoz meg az érvényesítő kódtárban.

Eleminformáció

A 66. táblázat a Validator elemről nyújt információt.

66. táblázat. Érvényesítő elem adatai

Attribútum Érték
Előfordulások száma Nulla vagy több a ValidatorLibrary elemen belül (ez az elem nem kötelező.)
Szülőelemek ValidatorLibrary
Tartalom Param
Elemattribútumok

A 67. táblázat felsorolja a Validator elem attribútumait, és mindegyik leírását tartalmazza.

67. táblázat. Az Érvényesítő elem attribútumai és megfelelő értékei

Attribútum Leírás
Leírás Az UDI varázsló Tervező
Displayname Az UDI varázsló Tervező megjelenített érvényesítő felhasználóbarát nevét adja meg (ez a név általában leíróbb, mint a Name attribútum.)
DLL Megadja az érvényesítőhöz társított .dll fájl nevét (a .dll fájlnak a installation_folder\Templates\Distribution\Tools\platform mappában kell lennie (ahol installation_folder az a mappa, amelyre az MDT-t telepítette, a platform pedig x86 a 32 bites verzióhoz, vagy x64 a 64 bites verzióhoz.)
Név Megadja az érvényesítő nevét, amely megjelenik a megfelelő UDI varázsló oldalán és az UDI varázsló Tervező
Típus Megadja az érvényesítő típusát, amely a beállításjegyzék-tényezővel van regisztrálva, és egy adott érvényesítő meghívására szolgál egy .dll fájlban
Megjegyzések

Nincs.

Példa

Nincs.

ValidatorLibrary

Ez az elem az Érvényesítő elemek halmazát csoportosítja .

Eleminformáció

A 68. táblázat a ValidatorLibrary elemről nyújt információt.

68. táblázat. ValidatorLibrary elem adatai

Attribútum Érték
Előfordulások száma Nulla vagy egy a DesignerConfig elemen belül (Ez az elem nem kötelező, ha az UDI varázsló Tervező konfigurációs fájlnak megfelelő egyéni érvényesítők nincsenek a DLL-ben.)
Szülőelemek DesignerConfig
Tartalom Validator
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa

<DesignerConfig> + <TaskLibrary> – <ValidatorLibrary> +<Validator DLL="" Description="Szöveg szükséges egy mezőben" Type="Microsoft.Wizard.Validation.NonEmpty" Name="NonEmpty"> +<Validator DLL="" Description="Nem engedélyezze, hogy bizonyos karakterek szerepeljenek egy mezőben" Type="Microsoft.Wizard.Validation.InvalidChars" Name="InvalidChars"> +<Validator DLL="" Description="Előre meghatározott mintát kell követni" Type="Microsoft.Wizard.Validation.RegEx" Name=" NamedPattern"> +<Validator DLL="" Description="Require the contents match a regular expression" Type="Microsoft.Wizard.Validation.RegEx" Name="RegEx"></ValidatorLibrary> + <DesignerMappings></DesignerConfig>

UDI varázsló Tervező referencia

Vezérlők

Az UDI varázsló Tervező egyéni varázslólapszerkesztők létrehozásához használt vezérlők WPF UserControl-példányok. A 69. táblázat felsorolja azokat a vezérlőket, amelyekkel egyéni varázslólapszerkesztőket hozhat létre.

69. táblázat. Egyéni varázslólapszerkesztők létrehozásához használható vezérlők

Ellenőrzés Leírás
CollectionTControl Ez a vezérlő a Page elem Adat elemében tárolt adatok szerkesztésére szolgál.
FieldElementControl Ez a vezérlő egy mező szerkesztésére szolgál, amely általában az .xaml oldalon lévő TextBox vezérlőelemhez van csatolva.
SetterControl Ez a vezérlő az UDI varázsló konfigurációs fájljában található setter elem értékének módosítására szolgál.

CollectionTControl

Ez a vezérlő számos lehetőséget biztosít az adatok szerkesztésére. Ennek a vezérlőnek a használatát legjobban úgy ismerheti meg, ha megnézi a mintát, amely bemutatja, hogyan szerkeszthet adatokat egy lap Adat eleme alatt. A minta bemutatja, hogyan adhat hozzá, távolíthat el és szerkeszthet elemeket ebben a vezérlőben.

FieldElementControl

Ezzel a vezérlővel szerkeszthet egy mezőt, amely általában az .xaml oldalon lévő TextBox vezérlőelemhez van csatolva.

Példa

Az alábbi részlet egy .xaml fájlból azt mutatja be, hogy a FieldElementControl hogyan konfigurálja egy mező alapértelmezett értékét egy varázslólapon egy gyermek TextBox vezérlő használatával:

<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>
Tulajdonságok
FieldData

Ez a sztringtulajdonság információkat tartalmaz a FieldElementControl és a mező mögöttes XML-fájljának összekapcsolásához. A kapcsolat a lapszerkesztő felület egyik tulajdonságához jön létre. Az .xaml fájl alábbi részlete a FieldData tulajdonság használatát mutatja be:

FieldData="{Binding DataContext.Location, ElementName=ControlRoot}"

Ebben a részletben a lapszerkesztő felület neve ControlRoot , és az ElementName paraméterben van megadva. A kötés a ControlRoot lapszerkesztő felület DataContext.Location tulajdonságához lesz végrehajtva. A DataContext egy nézetmodell, amely az UDI varázsló konfigurációs fájljának Page elemére mutat. A Hely a nézet olyan tulajdonsága, amely a lehetséges helyek listáját adja vissza, és az UDI varázsló konfigurációs fájljában található Data elem határozza meg. Minden helyet egy DataItem elem határoz meg az UDI varázsló konfigurációs fájljában.

Fejlécszöveg

Ez a sztringtulajdonság lehetővé teszi a FieldElementControl vezérlő fejlécének megadását. A fejléc a vezérlőelem címeként szolgál, és félkövér, narancssárga szövegként van formázva, amely közvetlenül a vezérlőelem felett jelenik meg.

Utasításszöveg

Ez a sztringtulajdonság lehetővé teszi a FieldElementControl vezérlő információs szövegének megadását. A szöveg általában a mező rövid leírását adja meg, és ismerteti, hogy a mező konfigurálása hogyan befolyásolja a varázsló megfelelő lapját.

HideEnableButton

Ez a logikai tulajdonság lehetővé teszi annak a gombnak a láthatóságát, amely módosítja a Feloldva és a Zárolt (engedélyezett vagy letiltott) állapotot. Ha a értéke:

  • Igaz, a gomb nem látható

  • Hamis, a gomb látható (ez az alapértelmezett érték.)

HideDefaultTab

Ez a logikai tulajdonság lehetővé teszi annak a szakasznak a láthatóságát, amely az alapértelmezett érték beállításához használt vezérlőt tartalmazza. Bár a tulajdonság egy lapra hivatkozik, a FieldElementControl elemen nincs lap, hanem egy rejtett szakasz. Ha a értéke:

  • Igaz, a szakasz nem látható

  • Hamis, a szakasz látható (ez az alapértelmezett érték.)

Border elrejtése

Ez a logikai tulajdonság lehetővé teszi a mezővezérlő körüli szegély láthatóságának szabályozását. Ha a értéke:

  • Igaz, a szegély nem látható

  • Hamis, a szegély látható (ez az alapértelmezett érték.)

HideImage

Ez a logikai tulajdonság lehetővé teszi a FieldImageSource tulajdonság által konfigurált kép láthatóságának szabályozását. Ha a értéke:

  • Igaz, a kép nem látható

  • Hamis, a kép látható (ez az alapértelmezett érték.)

HideValidationTab

Ez a logikai tulajdonság lehetővé teszi annak a szakasznak a láthatóságát, ahol az érvényesítők listája kezelhető. Bár a tulajdonság egy lapra hivatkozik, a FieldElementControl elemen nincs lap, hanem egy rejtett szakasz. Ha a értéke:

  • Igaz, a szakasz nem látható

  • Hamis, a szakasz látható (ez az alapértelmezett érték.)

HideSummaryTab

Ez a logikai tulajdonság lehetővé teszi annak a szakasznak a láthatóságát, amelyben konfigurálja a mezőösszegzési képaláírás. A képaláírás és a mező megfelelő értéke megjelenik a SummaryPage varázsló oldaltípusában egy szakaszfolyamatban. Bár a tulajdonság egy lapra hivatkozik, a FieldElementControl elemen nincs lap, hanem egy rejtett szakasz. Ha a értéke:

  • Igaz, a szakasz nem látható

  • Hamis, a szakasz látható (ez az alapértelmezett érték.)

HideTaskSequenceTab

Ez a logikai tulajdonság lehetővé teszi annak a szakasznak a láthatóságát, amelyben a mezőnek megfelelő feladatütemezési változót konfigurálja. Bár a tulajdonság egy lapra hivatkozik, a FieldElementControl elemen nincs lap, hanem egy rejtett szakasz. Ha a értéke:

  • Igaz, a szakasz nem látható

  • Hamis, a szakasz látható (ez az alapértelmezett érték.)

SetterControl

Ezzel a vezérlővel módosíthatja egy Setter elem értékét az UDI varázsló konfigurációs fájljában. Ez a vezérlő egy gyermekvezérlőt tartalmaz, amely a setter elem értékének módosítására szolgál.

Példa

Az alábbi részlet egy .xaml fájlból azt mutatja be, hogy a SetterControl segítségével módosíthat egy KeyLocationSetter nevű Setter elemet egy gyermek TextBox vezérlő használatával.

<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>
Tulajdonságok
SetterData

Ezt a nézet- vagy nézetmodell egy olyan tulajdonságához kell kötnie, amely a beállítóhoz csatlakozik. Ez hasonló ahhoz, ahogyan egy mezőhöz kötné a FieldElementControl leírásában leírtak szerint.

Fejlécszöveg

Ez a tulajdonság lehetővé teszi a vezérlőelem fejlécében megjelenő szöveg beállítását. Gondoljon erre a tulajdonságra a vezérlőelem címeként; alapértelmezés szerint félkövér, narancssárga szövegként jelenik meg.

Utasításszöveg

Állítsa be ezt a tulajdonságot arra a szövegre, amelyet a fejléc alatt meg szeretne jeleníteni – ez általában olyan utasításszöveg, amely tájékoztatja az egyéni szerkesztő felhasználóját, hogy mikor és miért szeretné módosítani a mező viselkedését.

Felületek

A 70. táblázat felsorolja azokat a felületeket, amelyekkel egyéni varázslólapszerkesztőket hozhat létre.

70. táblázat. Egyéni varázsló lapszerkesztőinek létrehozásához használható felületek

Felület Leírás
IDataService Ezen az felületen mezőket csatlakoztathat az UDI varázsló konfigurációs fájljának Adatelemeihez.
IMessageBoxService Ez a felület hozzáférést biztosít az üzenetmezők megjelenítéséhez használható metódusokhoz.

IDataService

Ez a felület számos tulajdonságot és metódust tartalmaz, de csak egy tulajdonságra van szüksége. Ez a tulajdonság az egyetlen itt dokumentált tulajdonság.

A függőséginjektálással az osztályban az alábbihoz hasonló kóddal kaphat mutatót ehhez a felülethez:

[Dependency]
public IDataService DataService { get; set; }
Tulajdonságok

A 71. táblázat az IDataService felület tulajdonságait sorolja fel.

71. táblázat. Az IDataService felület tulajdonságai

Felület Leírás
CurrentPage Ez a tulajdonság hozzáférést biztosít az UDI varázsló konfigurációs fájljában szerkesztett aktuális lap környezete alatti XML-elemekhez, attribútumokhoz és értékekhez
CurrentPage
XElement CurrentPage { get; set; }

Ez a tulajdonság hozzáférést biztosít az aktuális oldal XML-fájlja számára. Ezt a tulajdonságot soha ne állítsa be, de szabadon módosíthatja a lap XML-fájlját. A mintalapszerkesztő példákat mutat be az XML módosítására. Ezt a tulajdonságot elsősorban akkor használja, ha egyéni adatokkal rendelkezik. Mezők és tulajdonságok (beállítók) esetében használhat előre összeállított vezérlőket, amelyek minden részletet figyelembe vesznek.

IMessageBoxService

Ez a felület hozzáférést biztosít az üzenetmezők megjelenítéséhez használható metódusokhoz. Felmerülhet a kérdés, hogy miért van szükség egy felületre egy üzenetpanel megjelenítéséhez. A valóság az, hogy ön nem: A Microsoft ezt a felületet kódban használja, mert segíti az automatizált tesztek megírását tervezőoldalakhoz.

Ezeknek a módszereknek a használata azonban egy hasznos előnnyel jár: A párbeszédpaneleken mindig a "tulajdonos" van beállítva az UDI varázslóra, ami biztosítja, hogy a párbeszédpanel megfelelően legyen csoportosítva a főablakkal.

A függőséginjektálással az osztályban az alábbihoz hasonló kóddal kaphat mutatót ehhez a felülethez:

[Dependency]
public IMessageBoxService MessageBoxes { get; set; }
Módszerek

A 72. táblázat az IMessageBoxService felület metódusait sorolja fel.

72. táblázat. Az IMessageBoxService felület metódusai

Módszer Leírás
ShowMessageBox Ezzel a túlterhelt módszerrel jeleníthető meg egy üzenetpanel a következő tagokkal:

- ShowMessageBox(String message, String képaláírás, MessageBoxImage icon)
- ShowMessageBox(string message, string képaláírás, MessageBoxButton button, MessageBoxImage icon)
- ShowMessageBox(kivételkivétel)
ShowDialogWindow Ezzel a módszerrel hozzon létre egy új párbeszédpanelt.
ShowWizardWindow Ezzel a módszerrel egy egyéni szerkesztőt jeleníthet meg egy párbeszédpanelen, amely a navigációhoz a Következő és a Vissza gombot tartalmazza.
ShowMessageBox

Ez a metódus egy üzenetpanelt jelenít meg, amely az egyéni varázsló lapszerkesztőjének gyermeke. Ez a tag túlterhelt: A 73. táblázat tartalmazza a tagok listáját és azok rövid leírását. Az egyes tagokkal kapcsolatos teljes körű információkért (beleértve a szintaxist, a használatot és a példákat) tekintse meg az egyes tagoknak megfelelő szakaszt.

73. táblázat. A ShowMessagBox metódus túlterhelt tagjai

Tag Leírás
ShowMessageBox(String message, String képaláírás, MessageBoxImage icon) Üzenetpanel megjelenítése ikonnal és OK gombbal
ShowMessageBox(string message, string képaláírás, MessageBoxButton button, MessageBoxImage icon) Üzenetpanel megjelenítése ikonnal és a gombok különböző lehetséges kombinációival
ShowMessageBox(kivételkivétel) Megjelenít egy üzenetpanelt, amely információkat tartalmaz egy kivételről, és rendelkezik egy OK gombbal
ShowMessageBox(String message, String képaláírás, MessageBoxImage icon)
void ShowMessageBox(String message, String caption, MessageBoxImage icon);

Ez a metódus egy OK gombot tartalmazó üzenetpanelt jelenít meg. Lásd: 74. táblázat.

74. táblázat. A ShowMessageBox(String message, String képaláírás, MessageBoxImage icon) metódus paraméterei

Paraméter Leírás
Üzenetet Az üzenetpanel tartalomterületén megjelenítendő üzenet
képaláírás A párbeszédpanel címsorában megjelenítendő szöveg
Ikon Az üzenetpanelen megjelenítendő ikon típusa
ShowMessageBox(string message, string képaláírás, MessageBoxButton button, MessageBoxImage icon)
MessageBoxResult ShowMessageBox(string message, string caption, MessageBoxButton button, MessageBoxImage icon);

Ez a metódus megjelenít egy üzenetpanelt a megjeleníteni kívánt gombokkal és a kiválasztott gombról. Lásd: 75. táblázat.

75. táblázat. A ShowMessageBox(sztringüzenet, sztring képaláírás, MessageBoxButton gomb, MessageBoxImage ikon) metódus paraméterei

Paraméter Leírás
Üzenetet Az üzenetpanel tartalomterületén megjelenítendő üzenet
képaláírás A párbeszédpanel címsorában megjelenítendő szöveg
Gomb Mely gombok jelenjenek meg?
Ikon Az üzenetpanelen megjelenítendő ikon típusa
ShowMessageBox(kivételkivétel)
void ShowMessageBox(Exception exception);

Ez a metódus egy üzenetpanelt jelenít meg, amely egy kivétellel kapcsolatos információkat jelent. Ez az üzenetmező egyetlen OK gombot tartalmaz. Lásd: 76. táblázat.

76. táblázat. A ShowMessageBox(kivételkivétel) metódus paraméterei

Paraméter Leírás
Kivétel A jelenteni kívánt kivétel (a párbeszédpanel kivételt használ. Üzenet tartalomként.)
ShowDialogWindow
void ShowDialogWindow(Type viewType, DialogInteraction dialogPayload);

Ez a metódus létrehoz egy új párbeszédpanelt, amelynek tartalma a viewType paraméterben megadott szöveg. Az UDI Tervező létrehoz egy ilyen típusú új példányt, és az OK és a Mégse gombokkal rendelkező párbeszédpanelbe burkolja azt.

Az adatokat a dialogPayload paraméterrel adhatja át a vezérlőnek. Az SDK-címtárBan található SampleEditor megoldásban van egy példa a funkció használatára.

ShowWizardWindow
void ShowWizardWindow(Type viewType, DialogInteraction dialogPayload);

Ezzel a módszerrel egyéni szerkesztőt jeleníthet meg egy párbeszédpanelen belül, amely a Navigáláshoz a Következő és a Vissza gombot tartalmazza. A Microsoft nem adott meg mintát a módszer használatához.

Az UDI varázsló konfigurációs fájljának sémareferenciája

Ezt a fájlt az UDI varázsló használja, és az UDI varázsló Tervező konfigurálja. Ez a fájl a következő konfigurálására szolgál:

  • Az UDI varázslóban megjelenő varázslólapok

  • A varázsló oldalainak sorrendje az UDI varázslóban

  • Az egyes varázslólapok mezőinek beállításai

  • Az UDI varázslóban elérhető StageGroups Tervező

  • Az UDI varázsló minden üzembehelyezési varázslójában elérhető szakaszok Tervező

    77 az UDI varázsló konfigurációs fájljának elemeit és azok leírását sorolja fel. A Varázsló elem a referencia gyökércsomópontja.

77. táblázat. Az UDI varázsló konfigurációs fájljának elemei és leírásaik

Elem neve Leírás
Data (Adatok) Csoportosítja az egyes DataItem elemeket egy Page elemen belül, és a Name attribútummal nevezik el.
Adatelem Csoportosítja az egyes Setter-elemeket egy Oldal elemen belül. Hierarchikus adatokat úgy hozhat létre, hogy belevesz egy vagy több Adatelemet egy DataItem elembe. Minden DataItem elem egy-egy elemet jelöl. Az elérhető meghajtók listájában például szerepelhet egy DataItem elem a megjelenítendő névhez és egy másik DataItem elem a megfelelő meghajtóbetűjelhez.
Alapértelmezett A szülőMező vagy Választócsoport elemben megadott mező alapértelmezett értékét adja meg. Az alapértelmezett érték az elem által szögletesített értékre van állítva.
DLL Az UDI varázsló és az UDI varázsló Tervező által betöltendő és hivatkozott DLL-t adja meg.
Dll Csoportosítja az egyes DLL-elemeket.
Hiba Egy lehetséges hibakódot ad meg, amelyet egy tevékenység vissza tud majd adni. A hibakód értékét a tevékenység HRESULT értéke adja vissza, és ez az elem csapdába ejti, hogy pontosabb hibainformációkat adjon meg.
ExitCode Egy tevékenység lehetséges kilépési kódját adja meg. A kilépési kódok a tevékenység által várt visszatérési kódok. Hozzon létre egy ExitCode elemet minden lehetséges kilépési kódhoz. Ellenkező esetben a Value attribútumban megadhat egy csillagot (*) a többi ExitCode-elemben nem szereplő visszatérési kódok kezeléséhez.
ExitCodes Az ExitCode és a Error elemek készletét csoportosítja egy Tevékenység vagy egy Hiba elemhez.
Mező Az XML testreszabásához használt Page elem vezérlőjének egy példányát adja meg. Nem minden vezérlő teszi lehetővé az XML-testreszabást – csak a Mező elemet használó vezérlők.
Mezők Az egyes Mezőelemek csoportosítása egy Lap elemen belül.
Fájl Megadja egy fájlmásolási művelet forrását és célját a Microsoft.Wizard.CopyFilesTask feladattípussal. Külön File (Fájl ) elemet is megadhat, ha egyetlen feladatban több fájlt szeretne másolni.
Oldalala Megadja a lap egy példányát, és tartalmazza az oldal összes konfigurációs beállítását.
PageRef Egy szakaszcsoportonbelüli szakasz lapjának egy példányára mutató hivatkozást ad meg.
Oldalak Csoportosítja az egyes oldalelemeket .
RadioGroup Választógombok csoportját adja meg egy Mező elemen belül.
StageGroup Egy vagy több szakaszcsoportot határoz meg.
Szakaszcsoportok Szakaszcsoportok csoportosítása egy UDI varázsló konfigurációs fájlban.
Szetter A Tulajdonság tulajdonságban megnevezett tulajdonság értékének tulajdonságbeállítását adja meg.
Szakaszban Szakaszcsoporton belüli szakaszt határoz meg, és egy vagy több PageRef elemet tartalmaz.
Stílus Csoportosítja az UDI varázsló megjelenését és működését konfiguráló egyes beállítóelemeket , beleértve a varázsló tetején látható címet és az UDI varázslóban látható szalagcímképet.
Feladat A szülőoldal elemben megadott lapon futtatandó feladatot adja meg.
Feladatok Egy Lapelemhez tartozó feladatkészletet csoportosít.
Validator A szülőMező elemben megadott mezővezérlő érvényesítője.
Varázsló Megadja az összes többi elem gyökerét.

Adatok

Ez az elem a Page elemen belül csoportosítja az egyes DataItem elemeket, és a Name attribútummal nevezi el.

Eleminformáció

A 78. táblázat az Adatelemről nyújt információt.

78. táblázat. Adatelem adatai

Attribútum Érték
Előfordulások száma Nullát vagy többet az egyes Page elemeken belül (Ez az elem nem kötelező.)
Szülőelemek Page, DataItem
Tartalom DataItem, Setter
Elemattribútumok

A 79. táblázat felsorolja az Adat elem attribútumait, és mindegyik leírását tartalmazza.

79. táblázat. Az adatelem attribútumai és megfelelő értékei

Attribútum Leírás
Név Az Adatelem nevét adja meg
Megjegyzések

A Name attribútum lehetővé teszi, hogy a kód lekérjen egy adott adatkészletet.

Példa

Nincs.

Adatelem

Ez az elem csoportosítja az egyes Setter elemeket egy Oldal elemen belül. Hierarchikus adatokat úgy hozhat létre, hogy belevesz egy vagy több Adatelemet egy DataItem elembe. Minden DataItem elem egy-egy elemet jelöl. Az elérhető meghajtók listájában például szerepelhet egy DataItem elem a megjelenítendő névhez és egy másik DataItem elem a megfelelő meghajtóbetűjelhez.

Eleminformáció

A 80. táblázat a DataItem elemről nyújt információt.

80. táblázat. DataItem elem adatai

Attribútum Érték
Előfordulások száma Nulla vagy több az egyes Data elemeken belül (Ez az elem nem kötelező.)
Szülőelemek Data (Adatok)
Tartalom Adatok, Setter
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa

Nincs.

Alapértelmezett

Ez az elem a szülőMező vagy Választócsoport elemben megadott mező alapértelmezett értékét adja meg. Az alapértelmezett érték az az érték, amelyet ez az elem szögletes zárójelekként ad meg.

Eleminformáció

A 81. táblázat az Alapértelmezett elemről nyújt információt.

81. táblázat. Alapértelmezett elem adatai

Attribútum Érték
Előfordulások száma Nulla vagy több egy Mező vagy Választócsoport elemen belül (Ez az elem nem kötelező.)
Szülőelemek Mező, Választócsoport
Tartalom Bármilyen jól formázott XML-tartalom lehet, de általában szabványos szöveg
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa

Az alábbi példában a TimeZone mező alapértelmezett értéke "Csendes-óceáni téli idő":

<Field Name="TimeZone" Enabled="true" VarName="OSDTimeZone" Summary="Time Zone:">
  <Default>Pacific Standard Time</Default>

DLL

Ez az elem egy DLL-t határoz meg az UDI varázslóhoz és az UDI varázslóhoz, Tervező betölteni és hivatkozni.

Eleminformáció

A 82. táblázat a DLL-elemről nyújt információt.

82. táblázat. DLL-elem adatai

Attribútum Érték
Előfordulások száma Egy vagy több a DLL-elemeken belül
Szülőelem Dll
Tartalom Ehhez az elemhez nem engedélyezett tartalom
Elemattribútumok

A 83. táblázat felsorolja a DLL-elem attribútumait, és mindegyik leírását tartalmazza.

83. táblázat. A DLL-elem attribútumai és megfelelő értékei

Attribútum Leírás
Name (Név) Megadja az UDI varázsló és az UDI varázsló dll-jének nevét, Tervező hivatkozni
Megjegyzések

Nincs.

Példa
<DLLs>
  <DLL Name="OSDRefreshWizard.dll" />
  <DLL Name="SharedPages.dll" />
</DLLs>

Dll

Ez az elem csoportosítja az egyes DLL-elemeket.

Eleminformáció

A 84. táblázat a DLL-ekről nyújt információt.

84. táblázat. DLL-elemek adatai

Attribútum Érték
Előfordulások száma Egy
Szülőelemek Varázsló
Tartalom DLL
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa
<DLLs>
   <DLL Name="OSDRefreshWizard.dll" />
   <DLL Name="SharedPages.dll" />
</DLLs>

Hiba

Ez az elem egy lehetséges hibakódot ad meg, amelyet egy tevékenység vissza tud adni. A hibakód értékét a feladat HRESULT-ja adja vissza, és csapdába ejti, hogy pontosabb hibainformációkat adjon meg.

Eleminformáció

A 85. táblázat a Hiba elemről nyújt információt.

85. táblázat. Hibaelem adatai

Attribútum Érték
Előfordulások száma Nulla vagy több az egyes ExitCode elemeken belül (Ez az elem nem kötelező.)
Szülőelemek ExitCodes
Tartalom Bármilyen jól formázott XML-tartalom
Elemattribútumok

A 86. táblázat felsorolja a Hiba elem attribútumait, és mindegyik leírását tartalmazza.

86. táblázat. Hibaelem adatai

Attribútum Leírás
Állapot Egy hibát tapasztaló tevékenység visszatérési állapotát adja meg. Ennek az attribútumnak az értéke általában Hiba értékre van állítva. Ez az érték az UDI varázsló varázslólapjának Állapot oszlopában jelenik meg.
Text (Szöveg) Megadja a feladat által észlelt hibafeltétel leíró szövegét.
Típus Meghatározza, hogy ez az elem hibát, figyelmeztetést vagy sikert jelöl-e. AType (Típus ) mezőben megadott értéknek egyedinek kell lennie az ExitCodes elemen belül. Az elem érvényes értékei a következők:

- **0.**Az elem sikerességet jelöl.
- 1. Az elem egy figyelmeztetést jelöl.
- -1. Az elem hibát jelöl.
Érték Megadja annak a kódnak az értékét, amelyet a feladat numerikus értékként adott vissza. A csillag (*) értékének megadása a visszatérési kódok alapértelmezett elemét jelzi, amely nem szerepel a többi hibaelemben .
Megjegyzések

Nincs.

Példa

Nincs.

ExitCode

Ez az elem egy tevékenység lehetséges kilépési kódját adja meg. A kilépési kódok a tevékenység által várt visszatérési kódok. Hozzon létre egy ExitCode elemet minden lehetséges kilépési kódhoz. Ellenkező esetben a Value attribútumban megadhat egy csillagot (*) a többi ExitCode-elemben nem szereplő visszatérési kódok kezeléséhez.

Eleminformáció

A 87. táblázat az ExitCode elemről nyújt információt.

87. táblázat. ExitCode elem adatai

Attribútum Érték
Előfordulások száma Nulla vagy több az egyes ExitCodes elemeken belül (Ez az elem nem kötelező.)
Szülőelemek ExitCodes
Tartalom Legalább egy ExitCode elem és nulla vagy több hibaelem
Elemattribútumok

A 88. táblázat felsorolja az ExitCode elem attribútumait, és mindegyik leírását tartalmazza.

88. táblázat. Az ExitCode elem attribútumai és megfelelő értékei

Attribútum Leírás
Állapot Egy tevékenység visszatérési állapotát adja meg. Az attribútum értéke az UDI varázsló megfelelő varázslólapjának Állapot oszlopában jelenik meg. Ehhez az attribútumhoz bármilyen értéket használhat, amely jelentéssel bír a feladathoz. Az attribútum jellemző értékei a következők:

-Siker
-Figyelmeztetés
-Hiba
Text (Szöveg) Megadja a tevékenység meglévő kódjának leíró szövegét.
Típus Meghatározza, hogy ez az elem hibát, figyelmeztetést vagy sikert jelöl-e. A típusban megadott értéknek egyedinek kell lennie az ExitCodes elemen belül. Az elem érvényes értékei a következők:

- 0. Az elem a sikert jelöli.
- 1. Az elem egy figyelmeztetést jelöl.
- -1. Az elem hibát jelöl.
Érték Megadja annak a kódnak az értékét, amelyet a feladat numerikus értékként adott vissza. A csillag (*) értékének megadása a visszatérési kódok alapértelmezett elemét jelzi, amely nem szerepel a többi ExitCode-elemben .
Megjegyzések

Nincs.

Példa

Nincs.

ExitCodes

Ez az elem az ExitCode és a Error elemek készletét csoportosítja egy tevékenységhez vagy egy Hiba elemhez.

Eleminformáció

A 89. táblázat az ExitCodes elemről nyújt információt.

89. táblázat. ExitCodes elem adatai

Attribútum Érték
Előfordulások száma Egy az egyes tevékenységelemeken belül
Szülőelemek Feladat
Tartalom Error, ExitCode
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa

Nincs.

Mező

Ez az elem az XML testreszabásához használt Page elem vezérlőjének egy példányát adja meg. Nem minden vezérlő teszi lehetővé az XML-testreszabást – csak a Mező elemet használó vezérlők.

Eleminformáció

A 90. táblázat a Mező elemről nyújt információt.

90. táblázat. Mezőelem adatai

Attribútum Érték
Előfordulások száma Nulla vagy több minden Mező elemen belül (Ez az elem nem kötelező.)
Szülőelemek Mezők
Tartalom Alapértelmezett, Érvényesítő
Elemattribútumok

A 91. táblázat felsorolja a Mező elem attribútumait, és mindegyik leírását tartalmazza.

91. táblázat. A mezőelem attribútumai és megfelelő értékei

Attribútum Leírás
Engedélyezve Megadja, hogy a mező engedélyezve van-e a felhasználói bevitelhez (Az attribútum értéke True vagy False lehet.)
Név A mező nevét adja meg
Összefoglalás Megadja az Összegzés varázsló lapján megjelenő leíró szöveget a mező által megadott értékhez
VarName Meghatározza a feladatütemezési változó nevének olvasását vagy konfigurálását a szülőMező elem mezőjének használatával
Megjegyzések

Ez az elem nulla vagy több Alapértelmezett elemet és nulla vagy több Érvényesítő elemet tartalmazhat.

Példa

Nincs.

Mezők

Ez az elem csoportosítja az egyes Mező elemeket egy Lap elemen belül.

Eleminformáció

A 92. táblázat a Mezők elemről nyújt információt.

92. táblázat. Mezők eleminformációi

Attribútum Érték
Előfordulások száma Nullát vagy többet az egyes Page elemeken belül (Ez az elem nem kötelező.)
Szülőelemek Oldalala
Tartalom Mező, Választócsoport
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa

Nincs.

Fájl

Ez az elem adja meg egy fájlmásolási művelet forrását és célját a Microsoft.Wizard.CopyFilesTask feladattípussal. Külön File (Fájl ) elemet is megadhat, ha egyetlen feladatban több fájlt szeretne másolni.

Eleminformáció

A 93. táblázat a Fájl elemről nyújt információt.

93. táblázat. Fájlelem adatai

Attribútum Érték
Előfordulások száma A Microsoft.Wizard.CopyFilesTask feladattípussal rendelkező feladatokhoz legalább egy
Szülőelemek Feladat
Tartalom Egyikre sem.
Elemattribútumok

A 94. táblázat felsorolja a File elem attribútumait, és mindegyik leírását tartalmazza.

94. táblázat. A fájlelem attribútumai és megfelelő értékei

Attribútum Leírás
Dest Megadja a Forrás attribútumban megadott fájl célmappájának teljes vagy relatív elérési útját. A környezeti változók az elérési út részeként engedélyezettek.
Source (Forrás) Megadja a Microsoft.Wizard.CopyFilesTask feladattípus által másolt forrásfájl teljes vagy relatív elérési útját. Ez az attribútum támogatja a helyettesítő karaktereket, így több fájl is másolható egyetlen Fájl elem használatával. A környezeti változók az elérési út részeként engedélyezettek.
Megjegyzések

Nincs.

Példa

Nincs.

Oldalala

Ez az elem egy lap egy példányát adja meg, és tartalmazza az oldal összes konfigurációs beállítását.

Eleminformáció

A 95. táblázat a Page elemről nyújt információt.

95. táblázat. Lapelem adatai

Attribútum Érték
Előfordulások száma Egy vagy több az egyes Pages elemeken belül
Szülőelemek Oldalak
Tartalom Adatok, Mezők, Setter, Feladatok
Elemattribútumok

A 96. táblázat felsorolja a Page elem attribútumait, és mindegyik leírását tartalmazza.

96. táblázat. A Lap elem attribútumai és megfelelő értékei

Attribútum Leírás
Displayname Az UDI varázsló Tervező megjelenő varázslólap felhasználóbarát nevét adja meg. Ez a név általában beszédesebb, mint a Name attribútum.
Név Megadja az UDI varázsló Tervező megjelenő varázslólap nevét.
Típus Megadja a varázslólap típusát, amely közvetlenül kapcsolódik egy DLL-fájlban lévő adott varázslólaphoz.
Megjegyzések

Nincs.

Példa

Nincs.

PageRef

Ez az elem egy szakaszcsoportonbelüli szakasz lapjának egy példányára mutató hivatkozást ad meg.

Eleminformáció

A 97. táblázat a PageRef elemről nyújt információt.

97. táblázat. PageRef elem adatai

Attribútum Érték
Előfordulások száma Egy vagy több szakaszelemen belül
Szülőelemek Szakaszban
Tartalom Egyikre sem.
Elemattribútumok

A 98. táblázat felsorolja a PageRef elem attribútumát, és megadja annak leírását.

98. táblázat. A PageRef elem attribútumai és megfelelő értékei

Attribútum Leírás
Oldalala Egy szakaszcsoporton belüli lappéldányát adja meg. Állítsa ezt az értéket a Page elem Name attribútumára.
Megjegyzések

Nincs.

Példa

Nincs.

Oldalak

Ez az elem csoportosítja az egyes oldalelemeket .

Eleminformáció

A 99. táblázat a Pages elemről nyújt információt.

99. táblázat. Lapok eleminformációi

Attribútum Érték
Előfordulások száma Egy
Szülőelemek Varázsló
Tartalom Oldalala
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa
<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

Ez az elem egy mezőelemben lévő választógombok csoportját adja meg.

Eleminformáció

A 100. táblázat a RadioGroup elemről nyújt információt.

100. táblázat. RadioGroup elem adatai

Attribútum Érték
Előfordulások száma Nulla vagy több a Mezők elemen belül (Ez az elem nem kötelező.)
Szülőelemek Mezők
Tartalom Alapértelmezett
Elemattribútumok

A 101. táblázat felsorolja a RadioGroup elem attribútumait, és mindegyik leírását tartalmazza.

101. táblázat. A RadioGroup elem attribútumai és megfelelő értékei

Attribútum Leírás
Zárolt Megadja, hogy a választógombok csoportja engedélyezve van-e a felhasználói bevitelhez. Az attribútum a következőre állítható be:

- Igaz. Megadja, hogy a választógombok le vannak tiltva, és a felhasználók nem választhatnak választógombot a csoportban.
- Hamis. Megadja, hogy a választógombok engedélyezve legyenek, és a felhasználók kiválaszthassanak egy választógombot a csoportban.
Név A választógombcsoport nevét adja meg.
Megjegyzések

Nincs.

Példa

Nincs.

StageGroup

Ez az elem egy üzembehelyezési szakaszcsoportot határoz meg.

Eleminformáció

A 102. táblázat a StageGroup elemről nyújt információt.

102. táblázat. A StageGroup eleminformációi

Attribútum Érték
Előfordulások száma Egy vagy több StageGroups elemen belül
Szülőelemek Szakaszcsoportok
Tartalom Szakaszban
Elemattribútumok

A 103. táblázat a StageGroup elem attribútumait és az attribútum leírását sorolja fel.

103. táblázat. A StageGroup elem attribútumai és megfelelő értékei

Attribútum Leírás
Displayname Az UDI varázsló Tervező megjelenő szakaszcsoport felhasználóbarát nevét adja meg. Ez a név általában beszédesebb, mint a Name attribútum.
Megjegyzések

Nincs.

Példa

Nincs.

Szakaszcsoportok

Ez az elem szakaszcsoportok egy halmazát csoportosítja az UDI varázsló konfigurációs fájljába.

Eleminformáció

A 104. táblázat a StageGroups elemről nyújt információt.

104. táblázat. StageGroups eleminformáció

Attribútum Érték
Előfordulások száma Nulla vagy egy varázslóelemen belül
Szülőelemek Varázsló
Tartalom StageGroup
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa

Nincs.

Szetter

Ez az elem a Tulajdonság tulajdonságban megnevezett tulajdonság értékének tulajdonságbeállítását adja meg.

Eleminformáció

A 105. táblázat a Setter elemről nyújt információt.

105. táblázat. Setter-elem adatai

Attribútum Érték
Előfordulások száma Nulla vagy több az egyes szülőelemeken belül (Ez az elem nem kötelező.)
Szülőelemek Data, DataItem, Page, Style, Task, Validator
Tartalom Sztringértéket tartalmaz a Tulajdonság attribútumban
Elemattribútumok

A 106. táblázat felsorolja a Setter elem attribútumát, és megadja annak leírását.

106. táblázat. A Setter elem attribútumai és megfelelő értékei

Attribútum Leírás
Tulajdonság A beállítandó tulajdonság nevét adja meg. A tulajdonság neve arra az értékre van állítva, amelyet ez az attribútum szögletes zárójelként ad meg.
Megjegyzések

Nincs.

Példa

Nincs.

Szakaszban

Ez az elem egy Szakaszcsoporton belüli szakaszt határoz meg, és egy vagy több PageRef elemet tartalmaz.

Eleminformáció

A 107. táblázat a Stage elemről nyújt információt.

107. táblázat. Szakaszelem adatai

Attribútum Érték
Előfordulások száma Egy vagy több StageGroup elemen belül
Szülőelemek StageGroup
Tartalom PageRef
Elemattribútumok

A 108. táblázat felsorolja a Stage elem attribútumait, és mindegyik leírását tartalmazza.

108. táblázat. A Stage elem attribútumai és megfelelő értékei

Attribútum Leírás
Displayname Az UDI varázsló Tervező megjelenő varázslólap felhasználóbarát nevét adja meg. Ez a név általában beszédesebb, mint a Name attribútum.
Név Megadja a szakasz nevét. Ennek az elemnek az értéke akkor használatos, ha az UDI varázslót a /stage: name parancssori paraméterrel indítja el.
Megjegyzések

Nincs.

Példa

Nincs.

Stílus

Ez az elem csoportosítja az UDI varázsló megjelenését és működését konfiguráló egyes Setter-elemeket , beleértve a varázsló tetején látható címet és az UDI varázslón látható szalagcímképet.

Eleminformáció

A 109. táblázat a Stílus elemről nyújt információt.

109. táblázat. Stíluselem adatai

Attribútum Érték
Előfordulások száma Egy
Szülőelemek Varázsló
Tartalom Szetter
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa
<Style>
  <Setter Property="bannerFilename">UDI_Wizard_Banner.bmp</Setter>
  <Setter Property="title">Operating System Deployment (OSD) Refresh Wizard</Setter>
</Style>

Feladat

Ez az elem egy feladatot határoz meg, amelyet a szülőOldal elemben megadott lapon kell futtatni.

Eleminformáció

A 110. táblázat a Feladat elemről nyújt információt.

110. táblázat. Tevékenységelem adatai

Attribútum Érték
Előfordulások száma Egy vagy több a Feladatok elemen belül
Szülőelemek Feladatok
Tartalom ExitCodes, File, Setter
Elemattribútumok

A 111. táblázat felsorolja a Tevékenység elem attribútumait, és mindegyik leírását tartalmazza.

111. táblázat. A tevékenységelem attribútumai és megfelelő értékei

Attribútum Leírás
DependsOn Meghatározza, hogy a tevékenység egy másik tevékenységtől függ-e. Ennek az attribútumnak az értéke egy másik Tevékenység elem Name attribútumára van állítva. Megjegyzés: Ez az attribútum nem konfigurálható az UDI varázsló Tervező. Ezt az attribútumot azonban manuálisan is hozzáadhatja egy Task elemhez a .xml fájl közvetlen módosításával.
Displayname Az UDI varázsló Tervező megjelenített feladat felhasználóbarát nevét adja meg. Ez a név általában beszédesebb, mint a Name attribútum.
Név A tevékenység nevét adja meg. Ennek a névnek egyedinek kell lennie.
Típus Megadja a futtatni kívánt tevékenység tevékenységtípusát, amely a tevékenységet tartalmazó DLL-ben van definiálva.
Megjegyzések

Nincs.

Példa

Nincs.

Feladatok

Ez az elem a Page elemhez tartozó feladatok egy csoportját csoportosítja.

Eleminformáció

A 112. táblázat a Feladatok elemről nyújt információt.

112. táblázat. Tevékenységelem adatai

Attribútum Érték
Előfordulások száma Nulla vagy egy az egyes Page elemeken belül (Ez az elem nem kötelező.)
Szülőelemek Oldalala
Tartalom Feladat
Elemattribútumok

A 113. táblázat felsorolja a Feladatok elem attribútumait, és mindegyik leírását tartalmazza.

113. táblázat. A Feladatok elem attribútumai és megfelelő értékei

Attribútum Leírás
NameTitle Megadja az oszlop tetején megjelenő képaláírás, amely a megfelelő varázslólapon található feladatok nevét tartalmazza.
StatusTitle Megadja az oszlop tetején megjelenő képaláírás, amely a megfelelő varázslólapon található feladatok állapotát tartalmazza.
Megjegyzések

Nincs.

Példa

Nincs.

Validator

Ez az elem egy érvényesítőt ad meg a szülőMező elemben megadott mezővezérlőhöz.

Eleminformáció

A 114. táblázat a Validator elemről nyújt információt.

114. táblázat. Érvényesítő elem adatai

Attribútum Érték
Előfordulások száma Nulla vagy egy mezőelemen belül
Szülőelemek Mező
Tartalom Szetter
Elemattribútumok

A 115. táblázat felsorolja a Validator elem attribútumát, és megadja annak leírását.

115. táblázat. Az Érvényesítő elem attribútumai és megfelelő értékei

Attribútum Leírás
Típus Meghatározza az érvényesítő típusát, amely az érvényesítőt tartalmazó DLL-ben van definiálva
Megjegyzések

Nincs.

Példa

Nincs.

Varázsló

Ez az elem az összes többi elem gyökerét határozza meg.

Eleminformáció

A 116. táblázat a Varázsló elemről nyújt információt.

116. táblázat. Varázsló eleminformációi

Attribútum Érték
Előfordulások száma Egy
Szülőelemek Egyikre sem.
Tartalom DLL-ek, lapok, szakaszcsoportok, stílus
Elemattribútumok

Ez az elem nem rendelkezik attribútumokkal.

Megjegyzések

Nincs.

Példa
<Wizard>
   + <DLLs>
   + <Style>
   + <Pages>
   + <StageGroups>
</Wizard>