Aracılığıyla paylaş


Kullanıcı Odaklı Yükleme - Geliştiriciler Kılavuzu

Kullanıcı Odaklı Yükleme (UDI), Windows 8.1 gibi Windows® istemci işletim sistemlerinin Microsoft® System Center 2012 R2 Configuration Manager işletim sistemi dağıtımı (OSD) özelliğini kullanan bilgisayarlara dağıtımını basitleştirmeye yardımcı olur. UDI, Microsoft Dağıtım Araç Seti'nin (MDT) bir parçasıdır.

Giriş

Genellikle işletim sistemlerini OSD özelliğini kullanarak dağıtırken, işletim sistemini dağıtmak için gerekli tüm bilgileri sağlamanız gerekir. Bilgiler yapılandırma dosyalarında veya veritabanlarında (CustomSettings.ini dosyası veya MDT veritabanı [MDT DB] gibi) yapılandırılır. Dağıtımı başlatabilmeniz için önce tüm yapılandırma ayarlarını sağlamanız gerekir.

UDI, dağıtımı gerçekleştirmeden hemen önce yapılandırma bilgilerini sağlamanıza olanak tanıyan sihirbaz temelli bir arabirim sağlar. Bu davranış, genel OSD görev dizileri oluşturmanıza ve ardından dağıtım sırasında bilgisayara özgü bilgiler sağlamanıza olanak tanır ve bu da dağıtım işleminde daha fazla esneklik sağlar.

Hedef Kitle

Bu kılavuz, UDI Sihirbazı için özel sihirbaz sayfaları ve UDI Sihirbazı Tasarım Aracı için özel sihirbaz sayfası düzenleyicileri oluşturan geliştiriciler için yazılmıştır. Bu kılavuzda, aşağıdakiler kullanılarak Windows uygulamalarının geliştirilmesi konusunda bilgi sahibi olduğunuz varsayılır:

  • Özel sihirbaz sayfaları oluşturmak için kullanılan C++.

  • Özel sihirbaz sayfası düzenleyicileri oluşturmak için kullanılan Microsoft .NET Framework

  • Özel sihirbaz sayfası düzenleyicileri oluşturmak için kullanılan Windows Presentation Foundation (WPF)

  • ÖZEL sihirbaz sayfası düzenleyicileri oluşturmak için kullanılan C#, C++ veya Microsoft Visual Basic® .NET gibi WPF'nin desteklediği diller

Bu Kılavuz Hakkında

Bu kılavuz, kuruluşunuz için UTI'yi özelleştirmenize yardımcı olmak için gerekli başvuru bilgilerini sağlar. Bu kılavuz MDT yükleme (UDI'yi içerir), işletim sistemlerini ve uygulamaları dağıtmak için UDI'yi yapılandırma veya UDI Sihirbazı'nı kullanarak dağıtımlar gerçekleştirme gibi yönetim veya işlem konularını ele almaz. Bu konular hakkında daha fazla bilgi için MDT'ye dahil edilen Microsoft Dağıtım Araç Seti'ni kullanma başlığı altındaki UDI konularına bakın.

UDI Geliştirmeye Genel Bakış

UDI geliştirme, UDI'nin sağladığı özellikleri genişletmenize olanak tanır. Genellikle UDI dağıtım işleminin tükettiği ek bilgileri toplamak istediğinizde UDI geliştirmesi gerekir. Bu ek bilgiler genellikle görev dizisinin okuma Configuration Manager bir UDI görev dizisine uyguladığı görev dizisi değişkenleri olarak kaydedilir.

UDI Mimarisi

UDI geliştirmenin üst düzey hedefi, UDI Sihirbazı'nda görüntülenebilen özel sihirbaz sayfaları oluşturmaktır. Özel sihirbaz sayfaları oluşturarak, kuruluşunuzun iş ve teknik gereksinimlerini karşılamak için UDI'nin mevcut özelliklerini genişletebilirsiniz. Özel sihirbaz sayfası, UDI'nin sağladığı sihirbaz sayfalarının yanı sıra veya yerine bilgi toplar.

Şekil 1'de UDI Sihirbazı Tasarım Aracı ile UDI Sihirbazı arasındaki ilişki gösterilmektedir.

Şekil 1. UDI Sihirbazı ile UDI Sihirbazı arasındaki ilişki Tasarım Aracı Şekil 1. UDI Sihirbazı ile UDI Sihirbazı Tasarım Aracı arasındaki ilişki

Şekil 1. UDI Sihirbazı ile UDI Sihirbazı Tasarım Aracı arasındaki ilişki

Kavramsal düzeyde UDI geliştirme şunların oluşturulmasını içerir:

  • Özel sihirbaz sayfaları. Sihirbaz sayfaları UDI Sihirbazı'nda görüntülenir ve dağıtım işlemini tamamlamak için gereken bilgileri toplar. Microsoft Visual Studio'da® C++ kullanarak sihirbaz sayfaları oluşturursunuz. Özel sihirbaz sayfaları, UDI Sihirbazı'nın okuduğu DLL'ler olarak uygulanır. UDI yazılım geliştirme seti (SDK), özel sihirbaz sayfalarının nasıl oluşturulacağını gösteren bir örnek içerir.

  • Özel sihirbaz sayfası düzenleyicileri. Özel sihirbaz sayfanızın davranışını yapılandırmak için sihirbaz sayfası düzenleyicilerini kullanırsınız. Özel sihirbaz sayfası düzenleyicileri, UDI Sihirbazı'nın Tasarım Aracı okuduğu DLL'ler olarak uygulanır. Aşağıdakileri kullanarak sihirbaz sayfası düzenleyicileri oluşturursunuz:

    • WPF sürüm 4.0

    • Microsoft Prism sürüm 4.0

    • Microsoft Unity Uygulama Bloğu (Unity) sürüm 2.1

      MDT, UDI Sihirbazı Tasarım Aracı kullanmak üzere özel bir sihirbaz sayfası düzenleyicisi oluşturmak için gereken tüm derlemeleri içerir. UDI SDK'sı, özel sihirbaz sayfası düzenleyicilerinin nasıl oluşturulacağını gösteren bir örnek içerir.

    Ayrıca UDI Sihirbazı Tasarım Aracı destekleyici sihirbaz sayfası düzenleyicisi yapılandırma dosyalarını kullanır. Sihirbaz sayfası düzenleyicisi yapılandırma dosyalarını, özel sihirbaz sayfalarınızı ve özel sihirbaz sayfası düzenleyicilerinizi oluşturma işleminin bir parçası olarak oluşturursunuz. UDI Sihirbazı Tasarım Aracı, UDI Sihirbazı yapılandırma dosyasında ve ilgili .app dosyasında gerekli XML bilgilerini oluşturur.

UDI Geliştirme Ortamını Hazırlama

Kendi özel sihirbaz sayfalarınızı ve sihirbaz sayfası düzenleyicilerinizi oluşturmaya başlamadan önce UDI geliştirme ortamını hazırlamak için aşağıdaki adımları uygulayın:

  1. UDI geliştirme ortamı önkoşullarını UDI Geliştirme Ortamı Önkoşulları'nda açıklandığı gibi hazırlama.

  2. UDI geliştirme ortamını UDI Geliştirme Ortamını Yapılandırma bölümünde açıklandığı gibi yapılandırın.

  3. UDI geliştirme ortamının UDI Geliştirme Ortamını Doğrulama bölümünde açıklandığı gibi doğru yapılandırıldığını doğrulayın.

UDI Geliştirme Ortamı Önkoşullarını Hazırlama

UDI geliştirme ortamı önkoşullarını hazırlamak için aşağıdaki adımları uygulayın:

  1. UDI Geliştirme Ortamı Donanım Önkoşulları'nda açıklandığı gibi UDI geliştirme ortamı donanım önkoşullarını hazırlayın.

  2. UDI Geliştirme Ortamı Yazılım Önkoşullarını Hazırlama başlığı altında açıklandığı gibi UDI Geliştirme ortamı yazılım önkoşullarını hazırlayın.

UDI Geliştirme Ortamı Donanım Önkoşullarını Hazırlama

UDI geliştirme ortamı donanım önkoşulları, kullandığınız Microsoft Visual Studio sürümü için aynı donanım gereksinimleridir. Bu gereksinimler hakkında daha fazla bilgi için Visual Studio Belgeleri'ndeki her sürüm için sistem gereksinimlerine bakın.

UDI Geliştirme Ortamı Yazılım Önkoşullarını Hazırlama

UDI geliştirme ortamı aşağıdaki yazılım önkoşullarına sahiptir:

  • Visual Studio 2010'un desteklediği herhangi bir Windows işletim sistemi (Windows 7 veya Windows Server® 2008 R2 önerilir.)

    Geliştirmek istediğiniz işlemci mimarisini destekleyen bir Windows işletim sistemine ihtiyacınız olacaktır. 64 bit işletim sistemi kullanarak 32 bit ve 64 bit UDI geliştirme gerçekleştirebilirsiniz. 32 bit işletim sistemlerinde yalnızca 32 bit UDI geliştirmesi yaparsınız. Bu nedenle 64 bit işletim sistemi kullanmalısınız.

    Not

    Windows işletim sisteminin IntelItanium sürümleri (IA-64), UDI geliştirme ortamlarında desteklenmez.

    Visual Studio 2010'un desteklediği işletim sistemleri hakkında daha fazla bilgi için Visual Studio Belgeleri'ndeki her sürüm için sistem gereksinimlerine bakın.

  • Microsoft .NET Framework sürüm 4.0 (Visual Studio 2010 için gereklidir)

  • C++ dili (UDI Sihirbazı sayfalarını genişletmede kullanılan dil)

  • UDI Sihirbazı Tasarım Aracı sihirbaz sayfası düzenleyicilerini genişletmek için kullanılan C#, Visual Basic .NET veya C++/Common Language Infrastructure gibi WPF'nin desteklediği diğer diller

    Not

    UDI Sihirbazı Tasarım Aracı sihirbaz sayfası düzenleyicileri için örnek kaynak kodu C# dilinde yazılır. Örnek kaynak kodunu kullanmak istiyorsanız C# dilini yükleyin.

UDI Geliştirme Ortamını Yapılandırma

Ardından UDI geliştirme ortamı önkoşulları karşılandığında UDI geliştirme ortamını yapılandırmak için aşağıdaki adımları uygulayın:

  1. Visual Studio 2010'u yükleyin.

    C++ dilini ve WPF'nin desteklediği diğer dilleri yüklediğinizden emin olun.

    Not

    UDI Sihirbazı Tasarım Aracı düzenleyici sayfaları için örnek kaynak kodu C# dilinde yazılır. Örnek kaynak kodunu kullanmak istiyorsanız C# dilini yükleyin.

    Visual Studio 2010'u yükleme hakkında daha fazla bilgi için bkz. Visual Studio'yu Yükleme.

  2. MDT'yi yükleyin.

    MDT'yi yükleme hakkında daha fazla bilgi için, Microsoft Dağıtım Araç Setini Kullanma MDT belgesindeki "MDT'ye Yükleme veya MDT'ye Yükseltme" bölümüne bakın.

  3. Windows Gezgini'nde local_folder oluşturun (burada local_folder geliştirme bilgisayarındaki yerel bir sürücüde bulunan herhangi bir klasördür).

  4. installation_folder\SDK klasörünü local_folder kopyalayın (burada installation_folder, MDT'yi yüklediğiniz klasördür ve local_folder geliştirme bilgisayarındaki yerel bir sürücüde bulunan herhangi bir klasördür).

    MDT program dosyaları klasörüne yüklendiğinden SDK klasörünü başka bir konuma kopyalarsınız ve bu klasöre yükseltilmiş izinler olmadan yazılamaz. SDK klasörünü başka bir konuma kopyalamak, SDK klasöründeki dosyaları yükseltilmiş izinlere gerek kalmadan değiştirmenize olanak tanır.

  5. installation_folder\Templates\Distribution\Tools klasörünü local_folder kopyalayın (burada installation_folder MDT'yi yüklediğiniz klasördür ve local_folder işlemde daha önce oluşturduğunuz klasördür).

  6. local_folder\Tools klasörünü local_folder\OSDSetupWizard olarak yeniden adlandırın (burada local_folder işlemde daha önce oluşturduğunuz klasördür).

    Tamamlandığında, local_folder altındaki klasör yapısı Şekil 2'de gösterilen klasör yapısına benzer olmalıdır (burada local_folder işlemde daha önce oluşturduğunuz klasördür ve şekilde UDIDevelopment olarak gösterilir).

    Şekil 2. UDI geliştirme şekil 2 için klasör yapısı . UDI geliştirme için klasör yapısı

    Şekil 2. UDI geliştirme için klasör yapısı

UDI Geliştirme Ortamını Doğrulama

UDI geliştirme ortamı yapılandırıldığında, örnek projelerin Visual Studio 2010'da doğru şekilde derlendiğinden emin olarak UDI geliştirme ortamının doğru yapılandırıldığını doğrulayın.

Aşağıdakilerin yapılıp yapılmadığını belirleyerek UDI geliştirme ortamının doğru yapılandırıldığını doğrulayın:

SamplePage Projesinin Doğru Derlendiğini Doğrulama

SamplePage projesi, UDI Sihirbazı için özel bir sihirbaz sayfasının nasıl oluşturulacağını gösteren bir örnek sağlar. SamplePage projesi hakkında daha fazla bilgi için bkz. SamplePage Visual Studio Çözümünü Gözden Geçirme.

SamplePage projesinin doğru şekilde derlendiğini doğrulamak için

  1. Visual Studio 2010'ı başlatın.

  2. SamplePage projesini açın.

    SamplePage projesi local_folder\SDK\UDI\SamplePage klasöründe bulunur (burada local_folder işlemde daha önce oluşturduğunuz klasördür).

  3. Visual Studio 2010'da, Çözüm Gezgini SamplePage projesine sağ tıklayın ve özellikler'i seçin.

    SamplePage Özellik Sayfaları iletişim kutusu görüntülenir.

  4. SamplePage Özellik Sayfaları iletişim kutusunda Yapılandırma Özellikleri/Hata Ayıklama'ya gidin.

  5. Hata ayıklama özellikleri'ndeki Yapılandırma'nın altında Tüm Yapılandırmalar'ı seçin.

  6. Hata ayıklama özelliklerinde, Command'un altında $(TargetDir)\OSDSetupWizard.exe yazın.

  7. Hata ayıklama özelliklerinde , Çalışma Dizini'nin altına $(TargetDir)yazın.

  8. SamplePage Özellik Sayfaları iletişim kutusunda Yapılandırma Özellikleri/Derleme Olayları/Derleme Sonrası Olay'a gidin.

  9. Derleme Sonrası Olay özelliklerinde, Komut Satırı'nın altında aşağıdakileri yazın:

    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. SamplePage Özellik Sayfaları iletişim kutusunda Tamam'ı seçin.

  11. Projeyi kaydedin.

  12. Hata Ayıklama menüsünde Hata Ayıklamayı Başlat'ı seçin.

    Kaynağın güncel olmadığını belirten Microsoft Visual Studioiletişim kutusu görüntülenir ve projeyi oluşturmak isteyip istemediğinizi sorar.

  13. Microsoft Visual Studio iletişim kutusunda Evet'i seçin.

    hata ayıklama bilgilerinin OSDSetupWizard.exe için kullanılabilir olmadığını bildiren Hata Ayıklama Bilgileri Yok iletişim kutusu görüntülenir.

  14. Hata Ayıklama Bilgisi Yok iletişim kutusunda Evet'i seçin.

    UDI Sihirbazı açılır ve özel sihirbaz sayfası görüntülenir.

  15. Konumunuzu seçin bölümünde bir değer seçebildiğinizi doğrulayın.

  16. Örnek sayfalı sihirbaz formunda İptal'i seçin.

    Sihirbazı İptal Et iletişim kutusu görüntülenir.

  17. Sihirbazı İptal Et iletişim kutusunda Evet'i seçin.

  18. Visual Studio 2010'ı kapatın.

SampleEditor Projesinin Doğru Derlendiğini Doğrulama

SampleEditor projesi, UDI Sihirbazı Tasarım Aracı için özel sihirbaz sayfası düzenleyicisinin nasıl oluşturulacağını gösteren bir örnek sağlar. SampleEditor projesi hakkında daha fazla bilgi için bkz. SamplePage Visual Studio Çözümünü Gözden Geçirme.

SampleEditor projesinin doğru şekilde derlendiğini doğrulamak için

  1. Visual Studio 2010'ı başlatın.

  2. SampleEditor projesini açın.

    SampleEditor projesi local_folder\SDK\UDI\SampleEditor klasöründe bulunur (burada local_folder işlemde daha önce oluşturduğunuz klasördür).

  3. Visual Studio 2010'da, Çözüm Gezgini SampleEditor projesini seçin.

  4. Projemenüsünden Başvuru Ekle'yi seçin.

    Başvuru Ekle iletişim kutusu açılır.

  5. Başvuru Ekle iletişim kutusunda Gözat sekmesini seçin.

  6. Gözat sekmesinde installation_folder\Bin'e gidin (burada installation_folder, MDT'yi yüklediğiniz klasördür). Aşağıdaki dosyaları ve ardından Tamam'ı seçin:

    • 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

    Not

    Dosyaları seçerken CTRL tuşunu basılı tutarak Gözat sekmesinde birden çok dosya seçebilirsiniz.

  7. Çözüm Gezgini'da SampleEditor/References'a gidin.

  8. Başvurulardan hiçbirinde uyarı veya hata olmadığını doğrulayın.

  9. Çözüm Gezgini'da SampleEditor projesine sağ tıklayın ve özellikler'i seçin.

    SampleEditor Özellik Sayfaları iletişim kutusu görüntülenir.

  10. SampleEditor Özellik Sayfaları iletişim kutusunda Hata Ayıkla sekmesini seçin.

  11. Hata Ayıkla sekmesinde Dış programı başlat'ı seçin.

  12. Dış programı başlat'ainstallation_folder\Bin\UDIDesigner.exe yazın (burada installation_folder MDT'yi yüklediğiniz klasördür) ve ardından Tamam'ı seçin.

    İpucu

    Üç nokta (...) düğmesini seçerek klasöre göz atabilir ve UDIDesigner.exe seçebilirsiniz.

  13. Dosya menüsünde Tümünü Kaydet'i seçin.

  14. local_folder\SDK\SamplePage\SamplePage.dll.config dosyasını installation_folder\Bin\Config klasörüne kopyalayın (burada local_folder, yapılandırma işleminde daha önce geliştirme bilgisayarında oluşturduğunuz klasördür veinstallation_folder MDT'yi yüklediğiniz klasördür).

  15. Visual Studio 2010'da Hata Ayıklamamenüsünden Hata Ayıklamayı Başlat'ı seçin.

    UDI Sihirbazı Tasarım Aracı başlatılır.

  16. UDI Sihirbazı Tasarım Aracı Şeritte Aç'ı seçin.

    iletişim kutusu görüntülenir.

  17. iletişim kutusunda local_folder\SDK\SamplePage\SamplePage\Config.xml dosyasını açın (burada local_folder, yapılandırma işleminin önceki bölümlerinde geliştirme bilgisayarında oluşturduğunuz klasördür).

    Config.xml dosyası açılır ve Özel StageGroup ayrıntılar bölmesinde görüntülenir.

  18. Ayrıntılar bölmesinde Yapılandır sekmesini seçin.

  19. Konum kutusunun yapılandırma bilgilerini gözden geçirin ve aşağıdakileri de ekleyin:

    • Konum kutusunu etkinleştirdiğiniz veya devre dışı bırakabileceğiniz kilitsiz düğme

    • Konum kutusunda görüntülenecek varsayılan değeri girdiğiniz varsayılan değer kutusu

    • Özet sayfasında görünen kolay görünen ad; Özet sayfasında görüntülenen bilgiler için başlık girdiğiniz

    • Olası konumların listesini içeren konum listesi kutusu

  20. UDI Sihirbazı Tasarım Aracı kapatın.

  21. Visual Studio 2010'ı kapatın.

UDI SDK Örneklerini Gözden Geçirme

Geliştirmeye başlamadan önce UDI SDK'sında sağlanan örnekleri gözden geçirin. Kendi UDI özel sihirbaz sayfalarınızı ve sihirbaz sayfası düzenleyicilerinizi oluşturmanıza yardımcı olması için bu kılavuzdaki bilgileri ve örneklerdeki kaynak kodunu kullanın.

UDI SDK örneklerini gözden geçirerek aşağıdakileri gözden geçirin:

SDK Klasörünün İçeriğini Gözden Geçirme

UDI geliştirme ortamının yapılandırması sırasında, SDK klasörünü MDT'yi yüklediğiniz klasörden oluşturduğunuz başka bir klasöre kopyalamışsınızdır. Tablo 1, SDK klasörünün hemen altındaki klasörleri listeler ve her birinin kısa bir açıklamasını sağlar.

Tablo 1. UDI SDK'sında klasörler

Klasör Bu klasör
Içerir UDI Sihirbazı için özel sihirbaz sayfaları oluşturmak için gereken C++ üst bilgi dosyaları
Libs Özel sayfanıza bağlanacak C++ kitaplık dosyaları; statik bağlantı kitaplıklarının 32 bit ve 64 bit sürümleri vardır. Not: Kitaplıkların Itanium sürümleri (IA-64) kullanılamaz.
SampleEditor C dilinde yazılan UDI Sihirbazı Tasarım Aracı'nde SamplePage sayfasını düzenlemek için kullanılan özel bir düzenleyici oluşturmaya yönelik visual studio projesi#
SamplePage Visual C++ ile yazılmış özel bir UDI sihirbaz sayfası oluşturmaya yönelik bir Visual Studio projesi

SamplePage Visual Studio Çözümünü Gözden Geçirme

Özel sihirbaz sayfalarınızı ve sihirbaz sayfası düzenleyicilerinizi oluşturmaya başlamadan önce, UDI geliştirme ortamını hazırlamak için aşağıdaki görevleri gerçekleştirin:

Sihirbaz Sayfası Yaşam Döngüsünü Gözden Geçirme

UDI sihirbaz sayfası, sayfanın yaşam döngüsünün her aşamasına (veya aşamasına) karşılık gelen yöntemlere sahiptir. Özel sihirbaz sayfanızı oluşturmanın bir parçası olarak, bu yöntemleri kodunuzla geçersiz kılmanız gerekir. Tablo 2'de geçersiz kılmanız gereken yöntemler listelenir ve sihirbaz sayfası yaşam döngüsünde yöntemin ne zaman kullanılacağı da dahil olmak üzere her yöntemin kısa bir açıklaması sağlanır.

Tablo 2. Sihirbaz Sayfası Yaşam Döngüsündeki Yöntemler

Yöntem Açıklama
OnWindowCreated Bu yöntem, sayfanın penceresi oluşturulduktan sonra bir kez çağrılır.

Bu yöntem için, sayfayı ilk kez başlatan ve yalnızca bir kez gerçekleştirilmesi gereken kod yazın. Örneğin, alanları başlatmak veya UDI Sihirbazı yapılandırma dosyasındaki Setter öğelerinden yapılandırma bilgilerini okumak için bu yöntemi kullanın.
OnWindowShown Bu yöntem, sayfa UDI Sihirbazı'nda her görüntülendiğinde (gösterildiğinde) çağrılır. Sayfa ilk kez görüntülendiğinde ve sihirbazda İleri veya Geri'yi seçerek sayfaya her gitmenizde çağrılır.

Bu yöntem için, sayfayı görüntülenmek üzere hazırlayan kod yazın; örneğin, bellek değişkenlerini, görev dizisi değişkenlerini veya ortam değişkenlerini okuma ve bu değişkenlerdeki değişikliklere göre sayfayı güncelleştirme.
OnCommonControlEvent Bu yöntem, sihirbaz sayfası her görüntülendiğinde çağrılabilir ve bir alt öğeden WM_NOTIFY iletisi alır (genellikle yaygın denetimler).

Bu yöntem için, bildirim iletisine göre WM_NOTIFY işleyen kod yazın. Örneğin, bir TreeView denetimi için olayları seçme veya çift tıklama gibi yaygın bir denetimden gelen olaylara yanıt vermek isteyebilirsiniz.
OnUnhandledEvent Sihirbaz sayfanız için işlenmeyen bir pencere iletisi oluştuğunda bu yöntem çağrılır. Bu yöntem, bu işlenmemiş pencere iletilerini kesme ve işleme fırsatı sağlar.

Bu yöntem için, sihirbaz sayfanızla ilgili pencere iletilerini işleyen kod yazın. Genellikle bu yöntemi geçersiz kılmanız gerekmez.
OnNextSelected Sihirbazda İleri'yi seçtiğinizde bu yöntem çağrılır.

Bu yöntem için, sonraki sihirbaz sayfasına geçmeden önce gerekli eylemleri gerçekleştiren bir kod yazın; örneğin, doğrulama işlemi uzun sürebilir. Doğrulama başarısız olursa, Sonraki isteği iptal edebilir ve bir ileti görüntüleyebilirsiniz.
OnWindowHidden Bu yöntem, önceki veya sonraki sihirbaz sayfası gösterildiğinde sayfa her gizlendiğinde çağrılır.

Bu yöntem için, başka bir sayfa gösterilmeden önce, sayfa gizlenmeden önce herhangi bir eylem gerçekleştiren kod yazın. Genellikle bu yöntemi geçersiz kılmanız gerekmez.

SamplePage Örneğini Gözden Geçirin

SamplePage örneğinin sihirbaz sayfası yaşam döngüsü sırasındaki olayların sırasını temsil eden aşağıdaki listeyi kullanarak SamplePage örneğini gözden geçirin:

  1. OSDSetupWizard.exe UDI Sihirbazı, 1. Adım: UDI Sihirbazı (OSDSetupWizard.exe) Config.xml Dosyasını Okur bölümünde açıklandığı gibi örnekteki UDI Sihirbazı yapılandırma dosyasındaki yapılandırma bilgilerini (Config.xml dosyası) okur.

  2. UDI Sihirbazı, UDI Sihirbazı yapılandırma dosyasında listelenen her sihirbaz sayfası için gereken DLL'leri 2. Adım: UDI Sihirbazı Özel Sihirbaz Sayfası için DLL'yi yükler.

  3. UDI Sihirbazı özel sihirbaz sayfasını görüntüler ve 3. Adım: UDI Sihirbazı Özel Sihirbaz Sayfasını Görüntüler bölümünde açıklandığı gibi istenen denetim etkileşimine izin verir.

  4. Özel sihirbaz sayfası bilgileri topladığında, sonraki sihirbaza geçmek için İleri'yi seçmeden önce, 4. Adım: Özel Sihirbaz Sayfasında Sonraki Düğme Seçilidir bölümünde açıklandığı gibi gerekli görevleri gerçekleştirin.

1. Adım: UDI Sihirbazı (OSDSetupWizard.exe) Config.xml Dosyasını Okur

UDI Sihirbazı (OSDSetupWizard.exe) başlatıldığında, UDI Sihirbazı'nın birincil yapılandırma dosyası olan UDIWizard_Config.xml dosyası olan UDI Sihirbazı yapılandırma dosyasını varsayılan olarak okur.

Not

Örnek, yapılandırma dosyası olarak Config.xml dosyasını kullanır. MDT'de varsayılan yapılandırma dosyası, yapılandırma için MDT Dosyaları paketindeki Betikler klasöründe bulunan UDIWizard_Config.xml dosyasıdır.

UDI Sihirbazı görev dizisi adımını /definition parametresini kullanacak şekilde değiştirerek UDI Sihirbazı'nın kullandığı varsayılan yapılandırma dosyasını geçersiz kılabilirsiniz. UDI Sihirbazı'nın kullandığı varsayılan yapılandırma dosyasını geçersiz kılma hakkında daha fazla bilgi için bkz. "UDI Sihirbazı'nın Kullandığı Yapılandırma Dosyasını Geçersiz Kılma".

Config.xml dosyasındaki en üst düzey öğeler şunlardır:

  • DLL'ler öğesi

  • Stil öğesi

  • Pages öğesi

  • StageGroups öğesi

    UDI Sihirbazı yapılandırma dosyasının şeması ve bu öğelerin her biri hakkında daha fazla bilgi için bkz. UDI Sihirbazı Yapılandırma Dosyası Şema Başvurusu.

    UDI Sihirbazı, yüklenemiyor .dll dosyaları aramak için DLL'ler öğesini tarar. Örnekte iki .dll dosyası listelenmiştir: SamplePage.dll ve SharedPages.dll. Bu .dll dosyaları OSDSetupWizard.exe ile aynı klasörde bulunmalıdır: Araçlar\platform klasörü (burada platform 32 bit sürüm için x86 veya 64 bit sürüm için x64'tür).

    UDI Sihirbazı, tanımlanan sayfaları aramak için Pages öğesini tarar. Örnekte iki sayfa tanımlanmıştır: Özel ve SummaryPage. Page öğesinin Type özniteliği PageClassIDs.h dosyasında tanımlanır ve özel sayfanızın türünü benzersiz olarak tanımlar.

    Örnekte, tanımlanan tür Microsoft.SamplePage.LocationPage'dir. Özel sayfanız için, gelecekte oluşturabileceğiniz diğer sayfalarla olası çakışmaları önlemek için aşağıdakileri kullanın:

  • Kuruluşunuzun adı Microsoft yerine.

  • SamplePage yerine projenizin adı.

  • LocationPage yerine özel sihirbaz sayfanızın adı.

2. Adım: UDI Sihirbazı Özel Sihirbaz Sayfası için DLL'yi Yükler

UDI Sihirbazı DLL'nizi yüklediğinde, .dll dosyanızda uygulanması gereken RegisterFactories işlevini çağırır. Örnekte, bu işlev dllmain.ccp dosyasında uygulanır. Oluşturduğunuz her sihirbaz sayfasının RegisterFactories işlevini uygulaması gerekir.

RegisterFactories işlevi, sihirbaz sayfanızın fabrika sınıfını UDI Sihirbazı için sınıf fabrika kayıt defterine kaydetmek için kullanılır. Sınıf fabrikaları , başka bir sınıfın örneğini oluşturabilen sınıflardır. RegisterFactories işlevi, fabrika sınıfının yeni bir örneğini oluşturur ve bu sınıfı UDI Sihirbazı için sınıf fabrika kayıt defterine geçirir ve bu da bu fabrika sınıfını sihirbaz için kullanılabilir hale getirir. UDI Sihirbazı, özel sihirbaz sayfasının Page öğesinin Type özniteliğiyle eşleşen bir kimlikle kaydedilmiş bir fabrika sınıfı arar.

Örnekte kimlik, PageClassIds.h dosyasındaki ID_Location olarak Microsoft.SamplePage.LocationPage olarak tanımlanır ve bu, Config.xml dosyasındaki Page öğesinin Type özniteliğiyle eşleşir. ID_Location , dllmain.ccp dosyasında uygulanan RegisterFactories işlevinde parametre olarak geçirilir.

yeni bir fabrika örneği oluşturmayı basitleştirmek ve yeni oluşturulan örneği kaydetmek için Register_name işlev şablonunu kullanarak bir işlev oluşturabilirsiniz. Register işlevi şablonu kullanılarak sağlanan ad değeri iClassFactory arabirimini uygulamalıdır. ClassFactoryImpl Sınıfı, sınıf fabrikası uygulamayla ilgili ayrıntıların çoğunu işler.

Görev türlerini ve doğrulayıcı türlerini kaydetmek için RegisterFactories işlevini de kullanabilirsiniz. Daha fazla bilgi için aşağıdakilere bakın:

Not

Örnek yalnızca bir özel sihirbaz sayfasını içerir ve kaydeder. Örnek özel görevler veya doğrulayıcılar içermez ve bu nedenle özel görevleri veya doğrulayıcıları kaydetmez.

3. Adım: UDI Sihirbazı Özel Sihirbaz Sayfasını Görüntüler

Örnekteki özel sihirbaz sayfası LocationPage.cpp dosyasında tanımlanmıştır. Sihirbaz sayfaları, bir sayfanın sahip olduğu işlevlerin çoğunu sağlayan şablon sınıflarından türetilir. Tüm sihirbaz sayfaları, IWizardPage Arabirimini uygulayan WizardPageImpl Şablon Sınıfından türetilmelidir. Her sihirbaz sayfası, sayfanın gereksinimlerine göre diğer isteğe bağlı şablon sınıflarını ve ilgili arabirimleri uygulayabilir.

WizardPageImpl Şablon Sınıfı, özel sihirbaz sayfaları yazmanıza yardımcı olabilecek çeşitli yararlı arabirimlere sahiptir. WizardPageImpl Şablon Sınıfı'nı özel sihirbaz sayfanızın temel sınıfı olarak uygulayın.

Kullanılabilir listenin listesi için:

  • Sihirbaz sayfaları için şablon sınıfları, bkz . Sihirbaz Sayfası Yardımcı Sınıfları

  • Sihirbaz sayfası şablon sınıfları için arabirimler, bkz . Sihirbaz Sayfası Arabirimleri

    Örnekteki özel sihirbaz sayfası WizardPageImpl Şablon Sınıfından türetilir ve IWizardPage Arabirimini uygular. Ayrıca, özel sihirbaz sayfası IFieldCallback arabirimini uygular. Bunların ikisi de LocationPage.cpp dosyasında uygulanır.

    Örnek özel sihirbaz sayfası aşağıdaki yöntemleri geçersiz kılar:

  • OnWindowCreated. Örnek sihirbaz sayfasındaki OnWindowCreated yöntemi aşağıdaki yöntemleri çağırır:

    • AddField. Bu yöntem, IDD_LOCATION_PAGE kaynağındaki IDC_COMBO_LOCATION kutusu denetimini Config.xml dosyasındaki Location adlı Veri öğesiyle ilişkilendirmektedir.

      AddField yöntemine ek olarak, diğer denetimleri ve davranışları desteklemek için AddRadioGroup ve AddToGroup yöntemlerini kullanabilirsiniz.

      Not

      InitFields yöntemini çağırmadan önce AddField, AddRadioGroup veya AddToGroup yöntemini çağırdığınızdan emin olun.

    • InitFields. Forma eklediğiniz alanları (denetimleri) başlatmak için bu yöntemi kullanın. Sayfanın işaretçisi bir parametredir. Örnekte, geçerli sayfaya başvuran bu işaretçi geçirilir.

      Not

      Bu işaretçinin kullanımını desteklemek için, WizardPageImpl Şablon Sınıfı'nın desteklediği arabirimlere ek olarak IFieldCallback arabirimini de uygulamanız gerekir.

      IFieldCallback arabirimi, metin kutusu ve onay kutusu denetimleri dışındaki denetimlerin varsayılan değerlerini ayarlamak için kullanılan SetFieldDefault yöntemini çağırır. Örnekte SetFieldDefault yöntemi, birleşik giriş kutusu denetiminin ilk dizinini Config.xml dosyasındaki Field öğesinin Default öğesinde belirtilen varsayılan değere göre ayarlar.

      OnWindowCreated yöntemi, IFormController arabirimini kullanarak form denetleyicisini ayarlar. Form denetleyicisini ayarlama hakkında daha fazla bilgi için bkz. Formu Ayarlama.

  • InitLocations. Bu yöntem, Config.xml dosyasındaki konum listesinden birleşik giriş kutusunu doldurur. Data öğesi ve alt DataItem öğeleri, Confg.xml dosyasının olası değerlerin listesini sağlar.

  • OnNextSelected. Bu yöntem aşağıdaki görevleri gerçekleştirir:

    • SaveFields yöntemini kullanarak TSLocation görev dizisi değişkenini birleşik giriş kutusunda seçilen değerle Güncelleştirmeler

    • SaveFields yöntemini kullanarak Özet sayfasında gösterilecek bilgileri ekler

4. Adım: Özel Sihirbaz Sayfasında sonraki düğme seçilir

Kullanıcı özel sihirbaz sayfasındaki alanları tamamladığında İleri'yi seçer ve bu da OnNextSelected yöntemini çağırır. OnNextSelected yöntemi, bir sonraki sihirbaz sayfasına geçmeden önce özel sihirbaz sayfasında yapılan yapılandırma değişikliklerini kaydetme gibi gerekli görevleri gerçekleştirir.

Örnek özel sihirbaz sayfası için , OnNextSelected yönteminin geçersiz kılma işlemi LocationPage.ccp dosyasında uygulanır. Örnek özel sihirbaz sayfasındaki OnNextSelected yönteminde aşağıdaki yöntemler çağrılır:

  1. InitSection. Bu yöntem, Özet sayfasında görüntülenen özet verileri için üst bilgiyi (etiket başlık) başlatır. Genellikle, DisplayName() işlevini kullanarak bu değeri ayarlayabilirsiniz. Bu başlık ilişkili veriler SaveFields yöntemi kullanılarak kaydedilir.

  2. SaveFields. Bu yöntem, alan değerlerini görev dizisi değişkenlerine ve Özet sayfasında görüntülenen verilere kaydeder.

SampleEditor Visual Studio Çözümünü Gözden Geçirme

Kendi özel sihirbaz sayfalarınızı ve sihirbaz sayfası düzenleyicilerinizi oluşturmaya başlamadan önce UDI geliştirme ortamını hazırlamak için aşağıdaki adımları uygulayın:

UDI Sihirbazı Tasarım Aracı Mimarisini Gözden Geçirme

UDI Sihirbazı Tasarım Aracı WPF, Prism ve Unity kullanılarak geliştirilmiştir. UDI Tasarım Aracı, UDI Sihirbazı'nın (OSDSetupWizard.exe) çalışma zamanında okuduğu UDI Sihirbazı yapılandırma dosyasını (UDIWizard_Config.xml) düzenlemek için kullanılır. UDI Sihirbazı yapılandırma dosyasındaki Sayfalar öğesi, her sihirbaz sayfası için ayrı bir Page öğesine sahip sayfaların listesini içerir.

Sihirbaz sayfasının yapılandırma ayarlarını düzenlediğinizde, UDI Sihirbazı Tasarım Aracı sihirbaz sayfa türüne karşılık gelen özel sayfa düzenleyicisini yükler. Özel sihirbaz sayfası düzenleyicileri WPF kullanıcı denetimleri olarak geliştirilmiştir. Özel sihirbaz sayfası düzenleyici sayfaları WPF için Model-View-ViewModel (MVVM) tasarım desenini kullanır.

MVVM tasarım deseni, kullanıcı arabirimini (UI; sunu) sunulan verilerden ayırmaya yardımcı olur. Veriler, IDataService arabiriminin CurrentPage özelliği kullanılarak erişilen UDI Sihirbazı yapılandırma dosyasındaki Page öğesinin (örnekteki Config.xml dosyası) bir cephedir.

UDI Sihirbazı Tasarım Aracı, Unity'deki bağımlılık ekleme çerçevesine göre DataService sınıfına erişim elde etmek için DependencyAttribute kullanır. Unity'deki bağımlılık birleştirme çerçevesi hakkında daha fazla bilgi için bkz. Uygulamalarınıza Biraz Yaşam Ekleme— Unity Uygulama Bloğunu Tanıma.

UDI Sihirbaz Sayfasının Yapılandırılabilir Bileşenlerini Gözden Geçirme

Özel sihirbaz sayfanızı oluştururken, yapılandırma ayarlarından bazıları kodda ayarlanabilir ve sayfayı derledikten sonra değiştirilemez. Ancak, diğer yapılandırma ayarları için bu yapılandırma ayarlarının UDI Sihirbazı Tasarım Aracı kullanılarak değiştirilmesine izin vermeniz gerekir.

Genellikle, UDI Sihirbazı Tasarım Aracı kullanarak yapılandırmak istediğiniz yapılandırma ayarları UDI Sihirbazı yapılandırma dosyasına (örnekteki Config.xml dosyası) kaydedilir. Ancak, gerekirse kendi ayrı yapılandırma dosyanızı da oluşturabilirsiniz. Ayrı bir yapılandırma dosyası kullanmanın bir örneği, Application Discovery görevinin ve ApplicationPage sihirbazı sayfa türünün kullandığı UDIWizard_Config.xml.app dosyasıdır.

Aşağıda, UDI Sihirbazı Tasarım Aracı kullanarak yönetebileceğiniz tipik yapılandırma ayarlarının listesi verilmiştir:

  • Alan. Kullanıcıların giriş sağlamasına izin veren alanları kullanın. Alanlar, her alanın yapılandırma ayarlarını içeren UDI Sihirbazı yapılandırma dosyasında (UDIWizard_Config.xml) Alan öğeleri olarak görünür. İlgili sihirbaz sayfası düzenleyicisinin FieldElementControl kullanarak alanın alan yapılandırma ayarlarını düzenlemek için bir yöntem sağlaması gerekir.

  • Özellikler'i seçin. Ayarlayıcılar sayfa öğesindeki sayfalar, Field öğesindeki alanlar veya Data ya da DataItem öğelerindeki veriler gibi sayfadaki varlıklar için özellikler oluşturmaya yardımcı olur. Setter öğelerinde özellikleri yapılandırabilirsiniz. Tanımlamak istediğiniz her özellik için ayrı bir Setter öğesi ekleyin. SetterControl kullanarak özellikleri düzenler ve diğer denetimleri kullanarak diğer Setter öğelerini yapılandırabilirsiniz.

  • Veriler. Veriler, sihirbaz sayfası ve diğer bileşenler tarafından kullanılmak üzere bilgileri depolamak için kullanılır. Data veya DataItem öğelerini kullanarak sayfalar veya alanlar için veri tanımlayabilirsiniz. Veriler , Data veya DataItem öğelerinin düzgün kullanımı aracılığıyla düz veya hiyerarşik bir yapıda tanımlanabilir. SDK'daki örnekteki Config.xml düz veri yapıları oluşturmayı gösterir.

    Oluşturduğunuz özel sihirbaz sayfası düzenleyicisinin bu yapılandırma ayarlarını yönetebilmesi gerekir.

EditorPage Örneğini Gözden Geçirme

EditorPage örneği, UDI Sihirbazı yapılandırma dosyasındaki SamplePage sihirbaz sayfasının yapılandırma ayarlarını yapılandırmak için kullanılır. EditorPage örneği aşağıdaki birincil bileşenlere sahiptir:

  • Konum birleşik giriş kutusu ayarlarını yapılandırmak için kullanıcı arabirimi

  • Konum birleşik giriş kutusunda gösterilen olası konumlar listesinde konum eklemek veya düzenlemek için kullanıcı arabirimi

  • UDI Sihirbazı yapılandırma dosyasından okunan ve kaydedilen yapılandırma ayarları

  • Diğer bileşenler için destekleyici kod

    Aşağıdaki adımları gerçekleştirerek Visual Studio'daki EditorPage örneğini gözden geçirin:

  1. Gözden Geçirme Sihirbazı Sayfa Düzenleyicisi Yükleme ve Başlatma bölümünde açıklandığı gibi, SampleEditor sihirbaz sayfası düzenleyicisinin UDI Sihirbazı Tasarım Aracı nasıl yüklendiğini ve başlatıldığını gözden geçirin.

  2. LocationPageEditor.xaml dosyasında Konum birleşik giriş kutusunu düzenlemek için kullanılan kullanıcı arabirimini gözden geçirin ve Konum Birleşik Giriş Kutusunu Yapılandırmak için Kullanılan Kullanıcı Arabirimini Gözden Geçirme bölümünde açıklandığı gibi dosyaları LocationPageEditor.xaml.cs.

  3. AddEditLocationView.xaml dosyasındaki listeye konum eklemek veya düzenlemek için kullanılan kullanıcı arabirimini gözden geçirin ve Olası Konumlar Listesini Değiştirmek için Kullanılan Kullanıcı Arabirimini Gözden Geçirme bölümünde açıklandığı gibi dosyaları AddEditLocationView.xaml.cs.

  4. Yapılandırma Bilgilerini Yönetmek için Kullanılan Kodu Gözden Geçirme bölümünde açıklandığı gibi UDI Sihirbazı yapılandırma dosyasına kaydedilen yapılandırma bilgilerini yönetmek için kullanılan kodu gözden geçirin.

Gözden Geçirme Sihirbazı Sayfa Düzenleyicisi Yükleme ve Başlatma

Özel sihirbaz sayfası düzenleyicileri UDI Sihirbazı Tasarım Aracı tarafından gerektiği gibi yüklenir. UDI Sihirbazı Tasarım Aracı yapılandırma dosyaları UDI Sihirbazı Tasarım Aracı başlatıldığında yüklenir. UDI Sihirbazı Tasarım Aracı, .config dosya uzantısına sahip dosyalar için install_folder\Bin\Config klasörünü (burada install_folder MDT'nin yüklü olduğu klasörün adıdır) tarar.

UDI geliştirme ortamının yapılandırması sırasında, SamplePage.dll.confg dosyasını install_folder\Bin\Config klasörüne kopyalamıştınız. UDI Sihirbazı Tasarım Aracı başlattığınızda, SamplePage.dll.confg dosyası bulunur ve yüklenir.

UDI Sihirbazı Tasarım Aracı, EditorPage örneğini yüklemek ve başlatmak için SamplePage.dll.confg dosyasındaki Page öğesinin aşağıdaki özniteliklerini kullanır:

  • DesignerAssembly. Bu öznitelik yüklenecek DLL'nin adını belirler. Bu DLL dosyasının, install_folder\Bin klasörü olan UDIDesigner.exe dosyasıyla aynı klasöre yerleştirilmesi gerekir (burada install_folder , MDT'nin yüklü olduğu klasörün adıdır).

  • DesignerType. Bu öznitelik, WPF kullanıcı denetimini içeren sınıfın Microsoft .NET tür adıdır.

  • Yazın. UDI Sihirbazı'nın yüklediği özel sihirbaz sayfasının sayfa türünü yapılandırmak için bu özniteliği kullanın. UDI Sihirbazı Tasarım Aracı, UDI Sihirbazı yapılandırma dosyasında uygun Page öğesini bulmak için bu özniteliği kullanır.

  • Dll. UDI Sihirbazı'nın oluşturduğu UDI Sihirbazı yapılandırma dosyasındaki DLL öğesini yapılandırmak Tasarım Aracı bu özniteliği kullanın.

  • Açıklama. Sihirbaz sayfası düzenleyicisi hakkında bilgi sağlamak için bu özniteliği kullanın. Bu özniteliğin değeri, sihirbaz sayfasını "Sayfa Kitaplığı"na eklemek için kullanılan UDI Sihirbazı Tasarım Aracı Yeni Sayfa Ekle iletişim kutusunda gösterilir.

  • DisplayName. UDI Sihirbazı Tasarım Aracı görüntülenen özel sihirbaz sayfasının adını sağlamak için bu özniteliği kullanın. Bu özniteliğin değeri, sihirbaz sayfasını "Sayfa Kitaplığı"na eklemek için kullanılan UDI Sihirbazı Tasarım Aracı Yeni Sayfa Ekle iletişim kutusunda gösterilir.

    Örnekte, SamplePage özel sihirbaz sayfasının türü, Config.xml dosyasına kaydedilen Microsoft.SamplePage.LocationPage'dir. Config.xml dosyası local_folder\SDK\SamplePage\SamplePage klasöründe bulunur (burada local_folder , yapılandırma işleminin önceki bölümlerinde geliştirme bilgisayarında oluşturduğunuz klasördür).

Konum Birleşik Giriş Kutusunu Yapılandırmak için Kullanılan Kullanıcı Arabirimini Gözden Geçirin

Sihirbaz sayfası düzenleyicisi yüklenip başlatıldığında, Microsoft.SamplePage.LocationPage türündeki bir sayfa düzenlendiğinde SampleEditor sihirbaz sayfası düzenleyicisi yüklenir. Sayfa düzenleyicisinin kullanıcı arabirimi LocationPageEditor.xaml dosyasında depolanır.

Tasarım sekmesindeki kullanıcı arabirimini ve XAML sekmesindeki kodu incelerseniz, grafik kullanıcı arabirimi ile Genişletilebilir Uygulama Biçimlendirme Dili'ndeki (XAML) öğeler ve öznitelikler arasındaki ilişkiyi görebilirsiniz.

Örneğin, XAML'deki Controls:FieldElementControl öğesini gözden geçirirseniz, bunun ilgili kullanıcı arabiriminin düzeniyle nasıl ilişkili olduğunu görebilirsiniz. FieldElementControl denetimini tanımlamak için Controls:FieldElementControl öğesini kullanın.

XAML dosyasındaki Bağlama parametreleri, örnek sayfa düzenleyicisindeki alanları UDI sihirbazı yapılandırma dosyasındaki bilgilerle bağlar. Örneğin, aşağıdaki kod Varsayılan değer metin kutusunu UDI sihirbazı yapılandırma dosyasındaki Default öğesiyle bağlar (örnekte Config.xml):

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

Daha fazla bilgi için bkz . Nasıl yapılır: XAML'de Bağlama için Verileri Kullanılabilir Hale Getirme.

Kılavuz görünümünde kullanılabilir konumların listesini düzenlemek için XAML'deki Views:CollectionTControl.ColumnCollectionView öğesini kullanın. Kılavuz görünümünü görüntülemek ve kılavuz görünümünü UDI yapılandırma dosyasında konum adıyla Data öğesine bağlamak için CollectionTControl denetimini kullanırsınız.

Olası Konumların Listesini Değiştirmek için Kullanılan Kullanıcı Arabirimini Gözden Geçirin

Olası konumların listesini değiştirmek için kullanıcı arabirimi şunlardan oluşur:

Konum Listesini Değiştirmek için Bağlama Duyarlı Menü ve Şerit Düğmelerini Gözden Geçirin

Konum listesini içeren liste kutusuna sağ tıkladığınızda bağlama duyarlı bir menü görüntülenir. Şeritte aynı görevleri gerçekleştirmenizi sağlayan ilgili düğmeler vardır. LocationPageEditor.xaml dosyasındaki Views:CollectionsTControl denetim öğesi, gerçekleştirilen eyleme ve aşağıdaki gibi ayarladığınız özelliklere göre çağrılan yöntemleri tanımlar:

  • SelectedItem. Bu veriye bağlı özellik, kullanıcı listeden bir öğe seçtiğinde etkinleştirilir. Bu özellik, LocationPageEditorViewModel.cs dosyasında bulunan ve CollectionTControl denetimi tarafından varolan bir öğeyi düzenlerken veya kaldırdığınızda seçilen öğeyi geçirmek için kullanılan görünüm modelindeki CurrentLocation özelliğine bağlıdır.

  • AddItemAction. Bu eylem, kullanıcı bağlama duyarlı menüden Öğe Ekle seçeneğini veya Şeritteki ilgili düğmeleri seçtiğinde gerçekleştirilir. Görünüm modelinde AddLocationAction nesnesini döndüren bir özelliğe veri bağlaması vardır. Bu nesne, LocationPageEditorViewModel.cs dosyasında bulunan AddLocationCallback yöntemidir ve Iletişim kutusunu AddEditLocationView.xaml dosyasında görüntüler.

  • EditItemAction. Bu eylem, kullanıcı bağlama duyarlı menüden Öğeyi Düzenle seçeneğini seçtiğinde gerçekleştirilir. Görünüm modelinde EditLocationAction nesnesini döndüren bir özelliğe veri bağlaması vardır. Bu nesne, LocationPageEditorViewModel.cs dosyasında bulunan EditLocationCallback yöntemidir ve AddEditLocationView.xaml dosyasında iletişim kutusunu görüntüler.

  • RemoveAction. Bu eylem, kullanıcı bağlama duyarlı menüden Öğeyi Kaldır seçeneğini seçtiğinde gerçekleştirilir. Görünüm modelinde RemoveAction nesnesini döndüren bir özelliğe veri bağlaması vardır. Bu nesne, LocationPageEditorViewModel.cs dosyasında bulunan EditLocationCallback yöntemidir ve konumun silinmesini onaylayan bir ileti gösterir.

Konum Ekleme veya Düzenleme İletişim Kutusunu Gözden Geçirme

Konum listesine yeni bir konum eklerseniz veya mevcut bir konumu düzenlerseniz, AddEditLocationView.xaml dosyasındaki bir ileti görüntülenir. İleti, LocationPageEditorViewModel.cs dosyasındaki ShowDialogWindow pencere yöntemi kullanılarak görüntülenir.

AddEditLocationView.xaml dosyasındaki kullanıcı arabirimi şunlardan oluşur:

  • Aşağıdaki öğeleri içeren DialogFrame adlı bir iletişim kutusu çerçevesi:

    • İletişim çerçevesinin DialogTitle özniteliğini kullanarak yapılandırdığınız başlık

    • Approved özelliği için dönüş durumunu True olarak ayarlayan Bir Tamam düğmesi (Dönüş durumu, kullanıcının Tamam'ı seçerek seçmediğini belirlemek için LocationPageEditorViewModel.cs dosyasındaki AddLocationCallback yönteminde denetlenmektedir.)

    • Approved özelliği için dönüş durumunu False olarak ayarlayan İptal düğmesi (Kullanıcının İptal'i seçerek seçmediğini belirlemek için LocationPageEditorViewModel.cs dosyasındaki AddLocationCallback yönteminde iade edilir.)

  • Şu öğeleri içeren bir WPF öğesi:

    • content özniteliğini kullanarak yapılandırdığınız bir etiket

    • UDI yapılandırma dosyasındaKi Konum adlı Data öğesine bağlı bir metin kutusu (örnekteki Config.xml dosyası)

Yapılandırma Bilgilerini Yönetmek için Kullanılan Kodu Gözden Geçirme

Özel sihirbaz sayfanızın yapılandırma bilgileri UDI Sihirbazı yapılandırma dosyasında depolanır. Bu dosya şu şekildedir:

  • UDI SDK ile sağlanan örnekteki Config.xml dosyası (Bu dosya yalnızca örneğin yapılandırma ayarlarını içerir.)

  • MDT ile sağlanan UDIWizard_Config.xml dosyası, installation_folder\Templates\Distribution\Scripts klasöründe depolanır (burada installation_folder , MDT'yi yüklediğiniz klasördür); bu dosya, tüm yerleşik sihirbaz sayfaları ve aşamaları için yapılandırma ayarlarını içerir

    SampleEditor örneğinde Locations yordamı yapılandırma bilgilerinin yönetilmesine yardımcı olur ve LocationPageEditorViewModel.cs dosyasında bulunur. Konumlar yordamı UDI Sihirbazı yapılandırma dosyasındaki konumların listesini döndürür. Özellikle, döndürülen liste UDI Sihirbazı yapılandırma dosyasındaki her DataItem öğesi için bir öğe içerir.

Özel UDI Sihirbazı Sayfaları Oluşturma

Özel UDI sihirbaz sayfaları oluşturmaya yönelik üst düzey işlem aşağıdaki gibidir:

  1. Başlangıç noktası olarak SamplePage çözümünün bir kopyasını oluşturun.

  2. İstenen denetimleri (alanları) forma yerleştirin.

  3. Sihirbaz sayfası yüklendiğinde uygun görevleri gerçekleştirmek için kod yazın ( OnWindowCreated yöntemi için geçersiz kılmalar), aşağıdaki adımlar da dahil:

    1. Formu başlatın.

    2. Bellek değişkenlerini, görev dizisi değişkenlerini, ortam değişkenlerini veya XML dosya bilgilerini ( Setter özellikleri gibi) okuyun.

  4. Aşağıdaki adımlar da dahil olmak üzere, sayfa gösterildiğinde uygun görevleri gerçekleştirmek için herhangi bir kod yazın ( OnWindowShown yöntemi için geçersiz kılmalar):

    1. Sayfa 3. adımda yüklendiğinde okunan bilgilere göre denetimleri etkinleştirin veya devre dışı bırakın.

    2. 3. adımda sayfa yüklendiğinde okunan bilgilere (okunan bilgilere göre denetimlerin popülasyonu gibi) göre denetimleri güncelleştirin.

  5. Kullanıcı sihirbaz sayfasıyla etkileşim kurarken uygun görevleri gerçekleştirmek için herhangi bir kod yazın.

  6. Kullanıcı UDI Sihirbazı'nda İleri'yi seçtiğinde ( OnNextSelected yöntemi için geçersiz kılmalar) aşağıdaki adımlar da dahil olmak üzere uygun görevleri gerçekleştirmek için herhangi bir kod yazın:

    1. Tüm bellek değişkenlerini, görev dizisi değişkenlerini, ortam değişkenlerini veya XML dosya bilgilerini güncelleştirin.

    2. Özet sayfa bilgilerini güncelleştirin (sayfadaki alanlar tarafından gerçekleştirilmediyse).

  7. Çözümü oluşturun.

    Oluşturduğunuz DLL sürümünün MDT yüklemesi ile aynı işlemci platformu olduğundan emin olun; özellikle de Windows Önyükleme Ortamı (Windows PE) için işlemci platformu. UDI Sihirbazı şu durumlarda çalıştırılabilir:

    • Hedef bilgisayardaki mevcut işletim sistemi. Sihirbaz sayfanızın 32 bit sürümlerini 32 bit veya 64 bit Windows işletim sistemlerinde çalıştırabilirsiniz. Ancak, sihirbaz sayfanızın yalnızca 64 bit sürümlerini 64 bit Windows işletim sistemlerinde çalıştırabilirsiniz.

    • Hedef bilgisayarda Windows PE. Windows PE, Windows PE'nin 64 bit sürümünde 32 bit uygulamaları çalıştırmayı desteklemez. Bu nedenle, windows PE'nin kullanmayı planladığınız her işlemci mimarisi için sihirbaz sayfanız için bir sürüm oluşturmalısınız.

  8. Özel sihirbaz sayfanızın DLL dosyasını installation_folder\Templates\Distribution\Tools\ platform klasörüne kopyalayın (burada installation_folder MDT'yi yüklediğiniz klasördür ve platform 32 bit sürüm için x86 , 64 bit sürüm için ise x64'tür ).

  9. Özel sayfa düzenleyicisi oluşturma adımlarını tamamlayın.

Özel Sihirbaz Sayfası Düzenleyicileri Oluşturma

Özel UDI sihirbazı sayfa düzenleyicileri oluşturmaya yönelik üst düzey işlem aşağıdaki gibidir:

  1. Başlangıç noktası olarak SampleEditor çözümünün bir kopyasını oluşturun.

  2. Bir .xaml dosyasında birincil sayfa düzenleyicisi kullanıcı arabirimini oluşturun.

  3. Yapılandırılacak sihirbaz sayfasının gerektirdiği şekilde FieldElementControl denetiminin örneklerini ekleyin (gerekirse).

  4. Yapılandırılacak sihirbaz sayfasının gerektirdiği şekilde SetterControl denetiminin örneklerini ekleyin (gerekirse).

  5. Yapılandırılacak sihirbaz sayfasının gerektirdiği şekilde CollectionTControl denetiminin örneklerini ekleyin (gerekirse).

  6. IDataService arabirimini ekleyin.

  7. Özel sihirbaz sayfa düzenleyiciniz kullanılarak yapılandırılacak yapılandırma ayarlarına göre UDI Sihirbazı yapılandırma dosyasını güncelleştirmek için uygun kodu yazın.

  8. Bir .xaml dosyasında alt iletişim kutuları oluşturun ve sihirbaz sayfasının yapılandırılması için gereken IMessageBoxService arabirimini kullanarak bunları birincil sayfa düzenleyicisinden çağırın.

  9. Yapılandırılacak sihirbaz sayfasının gereksinimlerine göre UDI Sihirbazı Tasarım Aracı Şeridine uygun arabirimleri ekleyin.

  10. Çözümü oluşturun.

    Not

    Oluşturduğunuz DLL sürümünün MDT yüklemesi ile aynı işlemci platformu olduğundan emin olun. Örneğin, MDT'nin 64 bit sürümünü yüklerseniz, özel sayfa düzenleyicinizin 64 bit sürümünü derleyin.

  11. Gerekli DLL'leri yüklemek için bir UDI Sihirbazı Tasarım Aracı yapılandırma dosyası oluşturun ve sihirbaz sayfası düzenleyicisini ilgili sihirbaz sayfasıyla (örnekteki SamplePage.dll.config dosyası) eşleyin.

    Sihirbaz sayfası ile sihirbaz sayfası düzenleyicisi arasındaki eşlemeyi gerçekleştirmek için gereken öğeler hakkında daha fazla bilgi için bkz . DesignerMappings öğesi, alt öğeler ve ilgili öznitelikler.

  12. Önceki adımda oluşturduğunuz UDI Sihirbazı Tasarım Aracı yapılandırma dosyasını installation_folder\Bin\Config klasörüne kopyalayın (burada installation_folder, MDT sürümünü yüklediğiniz klasördür).

  13. Özel sihirbaz sayfa düzenleyicinizin DLL dosyasını installation_folder\Bin klasörüne kopyalayın (burada installation_folder , MDT'yi yüklediğiniz klasördür).

Özel UDI Görevleri Oluşturma

UDI görevleri , ITask arabirimini uygulayan C++ dilinde yazılmış DLL'lerdir. UDI Sihirbazı Tasarım Aracı yapılandırma dosyası (.config dosyası) oluşturup installation_folder\Bin\Config klasörüne (burada installation_folder MDT'yi yüklediğiniz klasördür) yerleştirerek DLL'yi UDI Sihirbazı Tasarım Aracı görev kitaplığına kaydedersiniz.

Not

Aynı .dll dosyasında sihirbaz sayfaları, görevler ve doğrulayıcılar içeren bir DLL oluşturabilirsiniz. Dll'deki sihirbaz sayfaları, görevler ve doğrulayıcılar için yapılandırma ayarlarını içeren tek bir UDI Sihirbazı Tasarım Aracı yapılandırma dosyası (.config) da oluşturabilirsiniz.

Özel UDI görevleri oluşturmak için

  1. ITask Arabirimini ve aşağıdaki yöntemleri uygulayan kod yazın:

    • Başlatma. Bu yöntem, görevinizi başlatmak için çağrılır.

    • Yürüt'e geçin. Bu yöntem, görevinizi çalıştırmak için çağrılır.

  2. Özel görev sınıfı fabrikasını fabrika kayıt defterine kaydeden kod yazın.

  3. Özel göreviniz için çözümü oluşturun.

    Not

    Oluşturduğunuz DLL sürümünün MDT yüklemesi ile aynı işlemci platformu olduğundan emin olun. Örneğin, MDT'nin 64 bit sürümünü yüklerseniz, özel UDI görevinizin 64 bit sürümünü derleyin.

  4. UDI Sihirbazı Tasarım Aracı yapılandırma dosyasındaki TaskLibrary öğesi altında aşağıdaki alıntıya benzer bir Görev öğesi oluşturun:

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

    Not

    Tüm Görev öğeleri BitmapFilename parametresini içermelidir. Görevin gerektirdiği diğer tüm parametreleri belirtin. Örneğin, önceki alıntıda günlük parametresi, günlük dosyasının konumu için bir parametre belirtmek için kullanılır.

  5. Önceki adımda oluşturulan UDI Sihirbazı Tasarım Aracı yapılandırma dosyasını installation_folder\Bin\Config klasörüne kopyalayın (burada installation_folder, MDT'yi yüklediğiniz klasördür).

  6. Özel göreviniz için DLL dosyasını installation_folder\Templates\Distribution\Tools\ platform klasörüne kopyalayın (burada installation_folder , MDT'yi yüklediğiniz klasördür ve platform 32 bit sürüm için x86 , 64 bit sürüm için ise x64'tür ).

Özel UDI Doğrulayıcıları Oluşturma

UDI doğrulayıcıları , IValidator arabirimini uygulayan C++ dilinde yazılmış DLL'lerdir. UDI Sihirbazı Tasarım Aracı yapılandırma dosyası (.config dosyası) oluşturup installation_folder\Bin\Config klasörüne (burada installation_folder MDT'yi yüklediğiniz klasördür) yerleştirerek DLL'yi UDI Sihirbazı Tasarım Aracı doğrulayıcı kitaplığına kaydedersiniz.

Özel UDI doğrulayıcıları oluşturmak için

  1. BaseValidator sınıfının bir alt sınıfını oluşturan ve aşağıdaki yöntemleri uygulayan kod yazın:

    • Init(IControl *pControl, IWizardPageContainer *pContainer, IStringProperties *pProperties). Form denetleyicisi, doğrulayıcıyı başlatmak için Init üyesini çağırır. Bu yöntem BaseValidator sınıfı için Init yöntemini çağırmalıdır. Genellikle UDI Sihirbazı yapılandırma dosyasından doğrulayıcı için ayarlanan tüm özellikleri okur. Örneğin, InvalidCharactersValidator doğrulayıcı bu yöntemi kullanarak InvalidChars özelliğinin değerini alır.

    • IsValid. Form denetleyicisi, denetimin geçerli metin içerip içermediğini görmek için bu yöntemi çağırır. Aşağıda, alanın boş olmadığını doğrulayan bir doğrulayıcı için IsValid yöntemi örneği verilmiştir:

      BOOL IsValid(LPBSTR pMessage)
      {
          __super::IsValid(pMessage);
      
          _bstr_t text;
          m_pText->GetText(text.GetAddress());
          return (text.length() > 0);
      }
      
    • Init(IControl *pControl, LPCTSTR iletisi). Form denetleyicisi, her tuş vuruşu ve diğer olaylar için bu üyeyi çağırır, böylece doğrulayıcı denetimin içeriğini doğrulayabilir ve sihirbaz sayfasının en altındaki iletileri güncelleştirebilir (veya bunları temizleyebilir).

      Genellikle, geçersiz kılmanız gereken tek yöntemler bunlardır. Ancak, doğrulayıcıya bağlı olarak, oluşturduğunuz BaseValidator sınıfının alt sınıfında yer alan diğer yöntemleri geçersiz kılmanız gerekebilir. Bu diğer yöntemler hakkında daha fazla bilgi için bkz. BaseValidator sınıfı.

  2. Özel görev sınıfını kayıt defteri fabrikasına kaydeden kod yazın.

  3. Özel göreviniz için çözümü oluşturun.

    Not

    Oluşturduğunuz DLL sürümünün MDT yüklemesi ile aynı işlemci platformu olduğundan emin olun. Örneğin, MDT'nin 64 bit sürümünü yüklerseniz, özel UDI görevinizin 64 bit sürümünü derleyin.

  4. UDI Sihirbazı Tasarım Aracı yapılandırma dosyasındaki ValidatorLibrary öğesi altında aşağıdaki alıntıya benzer bir Validator öğesi oluşturun:

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

    Uyarı

    Tüm Doğrulayıcı öğeleri İleti parametresini içermelidir. Doğrulayıcının gerektirdiği diğer tüm parametreleri belirtin. Örneğin, önceki alıntıda NamedPattern parametresi önceden tanımlanmış normal ifade deseninin adı için bir parametre belirtmek için kullanılır.

  5. Önceki adımda oluşturulan UDI Sihirbazı Tasarım Aracı yapılandırma dosyasını installation_folder\Bin\Config klasörüne kopyalayın (burada installation_folder, MDT'yi yüklediğiniz klasördür).

  6. Özel göreviniz için DLL dosyasını installation_folder\Templates\Distribution\Tools\ platform klasörüne kopyalayın (burada installation_folder , MDT'yi yüklediğiniz klasördür ve platform 32 bit sürüm için x86 , 64 bit sürüm için ise x64'tür ).

UDI Sihirbazı Başvurusu

Sihirbaz Sayfası Bileşenleri

Özel sayfalarınızı oluşturmak için önceden oluşturulmuş birkaç bileşenden herhangi birini kullanabilirsiniz.

Bileşen Örnekleri Oluşturma

UDI Sihirbazı, sizin için yeni nesne örnekleri oluşturmak için sınıf fabrikalarını kullanır. Bu fabrikalar, fabrikanın anahtarı olarak bir dize kullanılarak bir fabrika kayıt defterine kaydedilir. Örneğin WmiRepository bileşeni, IWmiRepository üst bilgi dosyasında ID_WmiRepository olarak bulunan "Microsoft.Wizard.WmiRepository" dizesiyle tanımlanır.

Sayfanızı WizardPageImpl'in alt sınıfı olarak yazdığınızı varsayarsak, aşağıdaki gibi yeni bir WmiRepoistory örneği oluşturabilirsiniz:

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

CreateInstance işlevi, yeni bileşen örnekleri oluşturmaya yönelik tür açısından güvenli bir şablon işlevidir. PWmiRepository akıllı bir işaretçidir, bu nedenle başvuru sayma işlemini sizin için işler.

Creatable Components

Kayıt defterine kaydedebileceğiniz bir bileşen kümesi vardır. Ana UDI Sihirbazı yürütülebilir dosyası tarafından sağlandığından, ilk bileşen kümesi her zaman kaydedilir. Diğer iki bileşen kümesi "isteğe bağlı" DLL'lerde sağlanır. Bu bileşenlerin kullanılabilir olması için DLL dosyasının .config XML dosyasının DLL'ler bölümünde listelenmiş olması gerekir. Kodunuzun hangi yürütülebilir dosyanın belirli bir bileşen içerdiğini bilmesi gerekmez.

Fabrika kayıt defterine (OSDSetupWizard'da tanımlanan) kaydedilen bileşenler için bileşen kimliklerinin listesi (bileşen adı kimlikle aynıdır ancak ilk ID_ olmadan) Tablo 3'te gösterilir.

Tablo 3. Bileşen Kimlikleri

KİMLİĞİ Açıklama
ID_ACPowerTask (ITask, IWizardComponent) Bilgisayarınızın yalnızca pille çalışmamasını sağlayan bir denetim öncesi görevi
ID_AppDiscoveryTask (ITask, IWizardComponent) Bilgisayarınızda hangi yazılım öğelerini yüklediğinizi bulmak için özel bir görev
ID_BackgroundTask (IBackgroundTask, IWizardComponent) Görevi başka bir iş parçacığında çalıştırmak için kullanılabilir
ID_CopyFilesTask (ITask, IWizardComponent) Bir veya daha fazla dosyayı kopyalama görevi
ID_FormController (IFormController) Sayfanız kendi örneğini aldığından, en çok kendiniz örnek oluşturmanız gerekmez
ID_InvalidCharactersValidator (IValidator) Hiçbir metin alanının, doğrulayıcıya sağlanan listeden karakterler içermemesini sağlar
ID_Logger (ILogger) Sayfanız paylaşılan örneğe yönelik bir işaretçi aldığından, en çok kendiniz örnek oluşturmanız gerekmez
ID_NonEmptyValidator (IValidator) Hiçbir alanın boş olmamasını sağlayan bir doğrulayıcı
ID_PasswordValidator (IValidator) İki metin alanının aynı içeriğe sahip olmamasını sağlayan bir doğrulayıcı
ID_Regex (IRegEx) Eşleşmeleri arayarak normal ifadeleri değerlendirir
ID_RegExValidator (IValidator) Normal bir ifadeye veya bilinen bir desene göre doğrulayan bir doğrulayıcı
ID_SimpleStringProperties (IStringProperties, ISimpleStringProperties) XML kullanmadan görevlere özellik göndermenin basit bir yolunu sağlar
ID_ShellExecuteTask (ITask, IWizardComponent) Dış program yürütme
ID_SummaryBag (ISummaryBag) Form yöntemi aracılığıyla sayfanızdan dolaylı olarak kullanılabilir
ID_TaskManager (ITaskManager, IBackgroundCallback, IWizardComponent) Bir görev kümesini ve kullanıcı arabirimini çalıştırmayı yönetir
ID_WmiRepository (IWmiRepository, IWizardComponent) Windows Yönetim Araçları (WMI) sorgularını çalıştırmanıza olanak tanır
ID_IXmlDocument (IXmlDocument) XML belgelerini okumak ve yazmak için bir cephe sağlar

Tanımlanan OSDRefreshWizard.dll, paylaşılan sayfalar ve diğer denetim bileşenleri Tablo 4 ve Tablo 5'te gösterilir.

Tablo 4. Dizin Denetimleri

KİMLİĞİ Açıklama
ID_Directory (IDirectory) Dosya sisteminden dizin bilgilerini almak için bir cephe

Tablo 5. Tanımlı SharedPages.dll

KİMLİĞİ Açıklama
ID_ADHelper (IADHelper) Active Directory® Etki Alanı Hizmetleri (AD DS) içinde sınırlı bir özellik kümesi için bir cephe sağlar
ID_CpuInfo (ICpuInfo) CPU'nuzun 32 bit mi yoksa 64 bit mi olduğunu belirler
ID_DomainJoinValidator (IDomainJoinValidator) Bir kimlik bilgileri kümesinin bir etki alanına katılmasına izin verilip verilmeyeceğini denetlemek için bazı yöntemleri vardır
ID_DriveList (IDriveList, IBindableList, IWizardComponent) Bilgisayarınızdaki sürücülerin listesini almak için WMI kullanır
ID_WiredNetworkTask (ITask) Ağa bağlı olup olmadığınızı (kablosuz ağ bağdaştırıcısı yerine) sabit kablolu olup olmadığınızı denetleen görevler

Denetim Bileşenleri

Tablo 6'da listelenen bileşen türlerinden birine erişim sağlayan GetControlWrapper şablon işlevi aracılığıyla sayfanızdaki denetimlerle etkileşim kurarsınız.

Tablo 6. Bileşen

İletişim kutusu denetim türleri Açıklama
CONTROL_CHECK_BOX (ICheckBox) Onay kutusu denetimleriyle çalışmak için bir cephe
CONTROL_COMBO_BOX (IComboBox) Birleşik giriş kutusu denetimleri için bir cephe
CONTROL_GENERIC (IControl) Etkinleştirme ve görünür durumunu denetlemek için çoğu denetim türüyle çalışmanıza olanak tanır
CONTROL_LIST_VIEW (IListView) Liste görünümü denetiminin özelliklerine erişim sağlayan bir cephe
CONTROL_PROGRESS_BAR (IProgressBar) İlerleme çubuğu denetiminin konumuyla çalışmak için bir cephe
CONTROL_RADIO_BUTTON (IRadioButton) Radyo düğmesi denetimleriyle çalışmak için bir cephe
CONTROL_STATIC_TEXT (IStaticText) Etiket veya metin kutusu gibi bir denetimin metnine okuma/yazma izni sağlayan bir cephe
CONTROL_TREE_VIEW (ItreeView) Ağaç görünümü denetimiyle çalışmak için bir cephe

Resim Listesi Bileşeni

Bu bileşen, sayfanızdaki ImageList denetiminin bir cephesidir. IListView veya ITreeView arabirimi aracılığıyla bir görüntü listesi oluşturursunuz.

FormController Bileşeni

Sihirbaz bu bileşeni sizin için oluşturur ve sayfanıza geçirir. WizardPageImpl temel sınıfının uyguladığı Form yöntemini kullanarak sayfanızdan erişebilirsiniz.

InvalidCharacterValidator Bileşeni

Bu, bir sayfaya ekleyebileceğiniz bir doğrulayıcı türüdür. Kimlik, "Microsoft.Wizard.Validation.InvalidChars" metin değerine sahip ID_InvalidCharactersValidator (IValidator.h içinde tanımlanır).

Bu doğrulayıcı, izin verilmeyen karakterlerin listesi olan InvalidChars adlı tek bir özelliği (.config dosyasındaki bir Setter öğesi) arar. Metin kutusundaki karakterleri denetler; metin bu listeden herhangi bir karakter içeriyorsa, bileşen hata bildirir.

NonEmptyValidator Bileşeni

Bu, bir sayfaya ekleyebileceğiniz bir doğrulayıcı türüdür. Kimlik, "Microsoft.Wizard.Validation.NonEmpty" metin değerine sahip ID_NonEmptyValidator (IValidator.h'de tanımlanır).

Metin kutusunun (veya IStaticText'i destekleyen başka bir denetimin) boş bir dize değeri varsa bu doğrulayıcı hata bildirir.

PasswordValidator Bileşeni

Bu, bir sayfaya ekleyebileceğiniz bir doğrulayıcı türüdür. Kimlik, "Microsoft.Wizard.Validation.Password" metin değerine sahip ID_PasswordValidator (IValidator.h içinde tanımlanır).

Bu doğrulayıcı iki farklı metin denetimiyle ( IStaticText'i destekleyen denetimler) çalışır ve aynı değerleri içermiyorsa hata bildirir. Başka bir deyişle, Parola ve ParolayıOnayla metin kutuları eşleşmezse başarısız olur.

Bu doğrulayıcı iki denetim gerektirdiğinden, diğer doğrulayıcılardan daha fazla kuruluma ihtiyacı vardır. Kurulum şuna benzer olabilir:

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

İlk olarak, Parolayı Onayla denetimini Paroladenetiminin " alt öğesi" olarak tanımlarsınız. Bu şekilde, form denetleyicisi Parola denetimini devre dışı bırakırsa Parolayı Onayla denetimini de devre dışı bırakır. Ardından, forma bir parola doğrulayıcı ekleyin. Son olarak parola doğrulayıcıyı Parolayı Onayla denetimi arabirimiyle birlikte sağlayın.

İki denetim gereksinimi nedeniyle, .config XML dosyası yerine bu doğrulayıcıyı ayarlamak için kod kullanmanız gerekir.

RegExValidator Bileşeni

Bu, bir sayfaya ekleyebileceğiniz bir doğrulayıcı türüdür. Kimlik, "Microsoft.Wizard.Validation.RegEx" metin değerine sahip ID_RegExValidator (IValidator.h içinde tanımlanır).

Bu doğrulayıcı, metin denetiminin içeriğini ( IStaticText'i destekleyen bir ifade) normal bir ifadeyle karşılaştırır ve metin normal ifadeyle eşleşmezse başarısız olur.

Alternatif olarak, bu doğrulayıcıyı önceden tanımlanmış adlandırılmış desenle kullanabilirsiniz. Normal ifade kullanmak için XML, Pattern adlı bir ayarlayıcı özelliği içermelidir. Bunun yerine adlandırılmış desen kullanmak istiyorsanız, Tablo 7'deki değerlerden birine ayarlanmış NamedPattern adlı bir ayarlayıcı kullanın.

Tablo 7. Adlandırılmış Desen Ayarlayıcıları

Desen Açıklama
Kullanıcı Adı Metnin etkialanı\kullanıcı veya user@domain biçiminde olduğunu doğrular
Bilgisayaradı Ad 1 ile 15 karakter uzunluğunda olmalıdır ve bir karakter kümesi içeremez (örneğin: ve ?)
Workgroup Ad 1 ile 15 karakter arasında olmalı ve bir karakter kümesi (=, +ve ?) içeremez

FactoryRegistry Bileşeni

Bu bileşen tüm sınıf fabrikalarını ve hizmetlerini izler. IFactoryRegistry arabirimini uygular ve sayfanızın Container yöntemi aracılığıyla dolaylı olarak kullanılabilir. Ayrıca, kayıt defteri uzantı DLL'lerini yükler. Bir DLL yükledikten sonra kayıt defteri RegisterFactories adlı dışarı aktarılan bir işlevi arar. Bu işlevi uygulamanız ve içinde sayfalarınız, görevleriniz ve doğrulayıcılarınız (ve kaydetmek istediğiniz diğer tüm sınıf fabrikaları) için sınıf fabrikalarını kaydetmeniz gerekir. Örnek projeden bir örnek aşağıda verilmiştir:

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

Günlükçü Bileşeni

Bu bileşen sayfanızda Logger yöntemi ( WizardPageImpl tarafından uygulanır) aracılığıyla kullanılabilir. Günlük dosyasına girdi yazmak için bu yöntemi kullanırsınız. Günlük dosyasının içeriği, kullanıcıların UDI Sihirbazı'nı çalıştırabileceği sorunları tanılamak için kullanışlıdır.

PropertyBag Bileşeni

Özellik paketi, bellek değişkenleri için bir kapsayıcıdır. Container()->Properties() kullanarak sayfanızdan kullanılabilir. Bellek değişkenleri, geçici verileri farklı sayfalar arasında geçirmek için kullanışlıdır.

TSVariableBag ve TSRepository Bileşenleri

TSVariableBag bileşeni, görev dizisi değişkenlerini okumanızı ve yazmanızı sağlar. Kullanıcı Son'u (varsayılan olarak) seçene kadar değerleri bellekte tutar. TSVariable paketine sayfanın TSVariables yöntemi (WizardPageImpl temel sınıfı tarafından uygulanır) aracılığıyla erişebilirsiniz. Bu bileşenler, görev dizisi değişkenlerinin tüm okuma ve yazmalarını günlüğe kaydeder.

WmiRepository Bileşeni

Bu bileşen, WMI sorgularıyla çalışmak için bir cephe sağlar. IWmiRepository arabirimini destekleyen bu bileşenin bir örneğini almak için createInstance yardımcı işlevini ID_WmiRepository ile çağırabilirsiniz. Bu bileşen , IWmiIterator arabirimi aracılığıyla sonuç kayıtlarını döndürür.

Sihirbaz Sayfası Yardımcı Sınıfları

UDI SDK ile sağlanan yerleşik yardımcı sınıflarını kullanarak özel UDI sihirbaz sayfaları oluşturabilirsiniz. Tablo 8'de, özel sihirbaz sayfaları oluşturmak için kullanabileceğiniz yardımcı sınıflar listelenir.

Tablo 8. Yardımcı Sınıflar

Yardımcı sınıfı Açıklama
ClassFactoryImpl Sınıfı Bu, daha sonra fabrika kayıt defterine kaydedebileceğiniz bir sınıf fabrikası oluşturmak için kullanışlı bir temel sınıftır.
Arabirim Şablonu Sınıfı Birden fazla arabirim uygulayan bir bileşen oluşturmak istediğinizde bu şablon sınıfını kullanın.
Yol Yardımcısı Sınıfı Bu sınıf yaygın dosya/dizin işlemleri sağlar.
İşaretçi Şablonu Sınıfı Bu sınıf, COM bileşenlerinde yaşam süresi yönetimi için başvuru sayımı sağlar. İşiniz bittiğinde arabirimleri serbest bırakmak önemlidir. Bu şablon sınıfı, yaşam ömrünü otomatik olarak işler.
PUnknown Sınıfı Bu sınıf, özellikle IUnknown arabirimi için akıllı bir işaretçidir. Diğer tüm arabirimler için İşaretçi şablon sınıfını kullanın.
StringUtil Yardımcı Sınıfı Bu sınıf, dizelerle çalışmayı kolaylaştıran yardımcı yöntemler sağlar.
SubInterface Şablon Sınıfı Bu temel sınıf, kendisini başka bir arabirimden devralan bir arabirimi destekleyen bir bileşenin uygulanmasını kolaylaştırır.
UnknownImpl Şablon Sınıfı Bu sınıf, COM bileşeni oluşturmanın ayrıntılarının çoğunu işler.
WizardComponent Şablon Sınıfı Bu temel sınıf, bileşen oluşturma ve günlüğe kaydetme gibi sihirbaz hizmetlerine erişmesi gereken bileşenler oluşturmak için kullanılır.
WizardPageImpl Şablon Sınıfı Bu temel sınıf, tüm özel sihirbaz sayfaları için temel sınıf olarak kullanılmalıdır

ClassFactoryImpl Sınıfı

Bu, daha sonra fabrika kayıt defterine kaydedebileceğiniz bir sınıf fabrikası oluşturmak için kullanışlı bir temel sınıftır.

Aşağıda, ClassFactoryImpl sınıfını tanımlamak için örnek projedeki LocationPage.h dosyasından bir alıntı verilmiştir.

#pragma once

#include "ClassFactoryImpl.h"

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

Aşağıda, sayfanın sınıf fabrikasını tanımlamak için kullanılan örnek sihirbaz sayfasındaki LocationPage.cpp dosyasından bir alıntı verilmiştir.

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

Arabirim Şablonu Sınıfı

Birden fazla arabirim uygulayan bir bileşen oluşturmak istediğinizde bu şablon sınıfını kullanın; örneğin:

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

Bu kod, hem IFieldCalback'i hem de WizardPageImpl'in desteklediği arabirimleri destekleyen bir temel sınıf zinciri oluşturur ( bu, IWizardPage olur).

Yol Yardımcısı Sınıfı

Bu sınıf yaygın dosya/dizin işlemleri sağlar:

static inline std::wstring GetModulePath(HINSTANCE hModule)

Ayrıca, bu yönteme sağladığınız örnek tanıtıcısıyla .exe veya .dll dosyasının tam yolunu döndürür:

static inline std::wstring GetModuleFilename(HINSTANCE hModule)

sınıfı, .exe ve .dll dosyasının tam yolunu ve dosya adını, bu yönteme sağladığınız örnek tanıtıcısıyla döndürür:

static inline std::wstring GetDirectoryName(LPCWSTR fullName)

. . . veya dosya adını çıkarırken yalnızca yolu seçin:

static inline std::wstring GetFileName(LPCWSTR fullName)

Dosya adına sahip bir yol verilip yol yardımcı sınıfı yalnızca dosya adını döndürür:

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

Son olarak, sınıfı birleştirilmiş yol ve dosya adı (veya başka bir yol) olan yeni bir dize döndürür.

İşaretçi Şablonu Sınıfı

Bu sınıf Pointer.h dosyasında tanımlanır. COM bileşenleri yaşam süresi yönetimi için başvuru sayımı kullandığından, arabirimleri işiniz bittiğinde her zaman serbest bırakmanız önemlidir. Microsoft, ömrü otomatik olarak işleyen bir şablon sınıfı sağlar. Örneğin, xml arabirimi için akıllı işaretçi istiyorsanız, şöyle bir şey yazabilirsiniz:

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

İlk satır akıllı işaretçiyi tanımlar. İkinci satırda akıllı işaretçinin başka bir çağrı aracılığıyla alınması gösterilir. & işleci, varsa her zaman var olan bir arabirimi serbest bırakır ve iç işaretçinin adresini döndürür. Bunun gibi bir işaretçiyi aldıktan sonra, değişken kapsam dışına çıktığında İşaretçi örneği sizin için Release'ı çağırır. Microsoft, AddRef ve Release'ı el ile çağırmak yerine akıllı işaretçiler kullanmanızı önerir.

Buna ek olarak, İşaretçi akıllı işaretçi sınıfı QueryInterface'ı çağırarak sizin için diğer arabirimleri alır. Örneğin, fabrika kayıt defteri bir bileşenin yeni bir örneğini oluşturduğunda şuna benzer bir koda sahiptir:

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

İlk satır, IWizardComponent arabirimini istemek için arka planda QueryInterface öğesini çağırır. Bileşen bu arabirimi desteklemiyorsa, sonuçta elde edilen akıllı işaretçi nullptr'ye eşit olur.

PUnknown Sınıfı

Bu sınıf, özellikle IUnknown arabirimi için akıllı bir işaretçidir. Diğer tüm arabirimler için İşaretçi şablon sınıfını kullanın.

StringUtil Yardımcı Sınıfı

Bu sınıf Utilities.h içinde tanımlanır ve dizelerle çalışmayı kolaylaştıran yardımcı yöntemler sağlar:

static inline int CompareIgnore(LPCWSTR first, LPCWSTR second)

Bu yöntem, büyük/küçük harf yoksayırken iki dizeyi karşılaştırır (bkz. Tablo 9).

Tablo 9. StringUtil Yardımcı Sınıfı

Döndürür Açıklama
0 Dizeler eşleşiyor, büyük/küçük harf yoksayıyor
<0 İlk < saniye
>0 İlk > saniye

Aşağıda bir örnek verilmiştir:

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

Bu yöntemler, parametrelerin biçiminde {0}olması açısından Microsoft .NET Biçim yöntemlerine biraz benzer. Ancak, girişin herhangi bir biçimlendirmesini gerçekleştirmez; yalnızca değiştirme:

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)

Dizeler veya arabellekler için bellek ayırmanız gerekmemesi için dize döndüren StringCchPrintf çevresindeki sarmalayıcılardır.

SubInterface Şablon Sınıfı

Bu temel sınıf, kendisini başka bir arabirimden devralan bir arabirimi destekleyen bir bileşenin uygulanmasını kolaylaştırır. Örneğin, ICheckBox arabirimi IControl'den devralınır. Bu sınıf CheckBoxWrapper'ı tanımlamak için şu şekilde kullanılır:

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

Temel arabirim ilk parametre, türetilen arabirim ise ikinci parametredir.

UnknownImpl Şablon Sınıfı

Bu sınıf UnknownImpl.h içinde tanımlanır ve COM bileşeni oluşturmanın ayrıntılarının çoğunu işler. Bu temel sınıfı nasıl kullanacağınıza yönelik bir örnek aşağıda verilmiştir:

classDirectory :public UnknownImpl<IDirectory>

Bu kod , IDirectory arabirimini destekleyen bir sınıf tanımlar.

WizardComponent Şablon Sınıfı

Bu sınıf IWizardComponent.h içinde tanımlanır ve bileşen oluşturma ve günlüğe kaydetme gibi sihirbaz hizmetlerine erişmesi gereken bileşenler oluşturmak için kullanışlı bir temel sınıftır.

Örnek olarak, CopyFilesTask bileşeni şu şekilde tanımlanır:

classCopyFilesTask :public WizardComponent<ITask>
{
    ...

Bu şablon sınıfının parametresi, bileşeniniz için kullanmak istediğiniz "ana" arabirimdir ve bu durumda görevler ITask'tır. WizardComponent kullanmak, bileşeninizin sağladığınız arabirimi (bu örnekte ITask) ve IWizardComponent'ı desteklediği anlamına gelir.

Yeni bir bileşen oluşturmak için sınıf fabrikası kayıt defterini her kullandığınızda, kayıt defteri bileşeninizin sihirbaz hizmetlerine erişimini sağlamak için bileşenin IWizardComponent-SetContainer> yöntemini çağırır.

WizardPageImpl Şablon Sınıfı

Bu sınıfı özel sayfalarınız için temel sınıf olarak kullanın; örneğin:

class LocationPage :public WizardPageImpl<IDD_LOCATION_PAGE>

parametresi, iletişim kutusu şablonunuz için kaynak kimliğidir.

Sihirbaz Sayfası Arabirimleri

UDI Sihirbazı, sayfanızdaki farklı denetimlere erişmek için arabirimleri kullanır. Sayfanızda, denetim sarmalayıcısını almak için GetControlWrapper işlevini kullanırsınız. Aşağıda bir örnek verilmiştir:

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

Burada PStaticText, IStaticText arabirimine bir akıllı işaretçidir . Akıllı işaretçiler kapsam dışına çıktığında veya bir değişkenin adresini (&pFormat gibi) bir yönteme geçirdiğinizde COM Release() yöntemini otomatik olarak çağırır.

IADHelper Arabirimi

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

Bilgileri günlüğe kaydedebilmesi için bu bileşeni günlükçüye geçirerek başlatın.

HRESULTValidLogon(LPCTSTR userName, LPCTSTR parolası, LPCTSTR etki alanı)

Bu yöntem, Tablo 10'da gösterildiği gibi bir kimlik bilgileri kümesinin geçerli olup olmadığını doğrular.

Tablo 10. HResultValidLogon

Hresult Açıklama
S_OK Kimlik bilgileri geçerli
S_FALSE Kimlik bilgileri geçerli değil
E_FAIL Etki alanı denetleyicisi bulunamadı; ayrıntılar için günlükleri denetleme
HRESULT HasAccess(LPCTSTR kullanıcı adı, LPCTSTR parolası, LPCTSTR etki alanı, LPCTSTR computerName, LPCTSTR accountDomain)

Bu yöntem, Tablo 11'de gösterildiği gibi bir kimlik bilgisi kümesinin AD DS'deki bilgisayar nesnesine okuma/yazma erişimi olup olmadığını doğrular.

Tablo 11. HResult HasAccess

HRESULT Açıklama
S_OK Kullanıcının erişimi var
E_FAIL Kullanıcının erişimi yok. Ek bilgi için günlük dosyasını denetleyin.

IBackgroundTask Arabirimi

__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);
};
Genel Bakış

İlerleme sayfası, görevleri ayrı bir iş parçacığında çalıştırmak için bu sınıfı kullanır. Ayrı bir iş parçacığında işlem gerçekleştirmek istediğinizde de bu sınıfı kullanabilirsiniz. Görevler, ITask arabirimini destekleyen herhangi bir sınıftır.

Bu arabirim, IBackgroundTask.h arabiriminde tanımlanan ID_BackgroundTask ("Microsoft.Wizard.BackgroundTask") bileşeni tarafından uygulanır.

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

Bu arabirim, Tablo 12'de gösterildiği gibi bileşeni başlatır.

Tablo 12. HRESULT Başlatma

Parametre Açıklama
pTask Başka bir iş parçacığında çalıştırmak istediğiniz kodu içeren sınıfın işaretçisi
Kimlik Geri çağırmanın Bitti yönteminde hangi görevin çalışmasının bittiğini söylemek için kullanabileceğiniz bir sayı; aynı geri çağırma yöntemiyle birkaç görev başlatırsanız yararlı olur
pCallback Bir görevin çalışması her tamamlandığında çağrılan Finished yöntemini uygulayan bir sınıf; Finished yöntemine yapılan çağrı ui iş parçacığında değil arka plan iş parçacığında olur
void Start(void)

Bu yöntem görevi bir arka plan iş parçacığında başlatır ve Tablo 13'te gösterilen öğeleri döndürür.

Tablo 13. Arka Plan İş Parçacığı Döndürme

Döndürür Açıklama
E_INVALIDARG Görev zaten çalışıyor, bu nedenle şu anda başlatamazsınız.
E_FAIL İş parçacığı başlatılırken bir sorun oluştu.
S_OK İş parçacığı başlatıldı.
BOOL Running()

Bu yöntem, arka plan görevi şu anda çalışıyorsa TRUE, çalışmıyorsa YANLIŞ döndürür.

HRESULT Wait(DWORD waitMilliseconds)

Bu yöntem, iş parçacığı çalışmayı durdurana veya milisaniye sayısı geçene kadar bekler.

HRESULT Terminate(DWORD exitCode)

Bu yöntem çalışmakta olan iş parçacığını öldürür (bkz. Tablo 14 ve Tablo 15). Bu yöntem döndükten sonra bu işlemin tamamlanması kısa sürebilir.

Tablo 14. HRESULT Sonlandırma Çıkış Kodu

Parametre Açıklama
Exitcode GetExitCode yönteminden de kullanılabilen Finished geri çağırma yöntemine gönderilecek çıkış kodu.

Tablo 15. Sonlandırma Kodları

Döndürür Açıklama
E_FAIL Sonlandırma çağrısı başarısız oldu.
S_OK İş parçacığını sonlandırma isteği başarılı oldu.
HRESULT GetExitCode(LPDWORD pCode, HRESULT *pHresult)

Görevi arka plan iş parçacığında çalıştırmanın sonuçlarını almak için bu yöntemi kullanın (bkz. Tablo 16).

Tablo 16. Sonuç Kodları

Parametre Açıklama
pCode Dönüş değerine ihtiyacınız yoksa return veya nullptr üzerinde ayarlanacak bir DWORD işaretçisi. Çıkışta, iş parçacığı çalışıyorsa, görevin Execute yöntemi tarafından döndürülen kod veya bu yöntemi çağırdıysanız Terminate yöntemine geçirilen değer STILL_ACTIVE olarak ayarlanır.
pHresult HRESULT değerine ihtiyacınız yoksa return veya nullptr üzerinde ayarlanacak bir HRESULT işaretçisi.
HRESULT Close(void)

Bu yöntem arka plan iş parçacığını serbest bırakır. İş parçacığı şu anda çalışıyorsa E_INVALIDARG döndürür ve aksi takdirde S_OK .

ICheckBox Arabirimi

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

Onay kutusunun işaretli durumunu ayarlayın. Yöntem TRUE olduğunda, onay kutusu seçilidir; yöntem YANLIŞ olduğunda, onay kutusu temizlenir.

BOOL IsButtonChecked()

Bu yöntem, bir onay kutusunun geçerli onay durumunu bildirir.

IComboBox Arabirimi

__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();
};
Genel bakış

Bu arabirim CheckBoxWrapper bileşeni tarafından uygulanır. CONTROL_COMBO_BOX türündeki GetControlWrapper yardımcı işlevini kullanarak bu bileşenin bir örneğini alırsınız.

HRESULT Bind([in] IBindableList *pList)

IBindableList arabirimini uygulayan bir veri kaynağınız olduğunda bu yöntemi kullanın. Liste kutusu, içeriği bu listedeki açıklamalı alt yazılarla başlatır.

HRESULT Select(int dizini)

Dizindeki birleşik giriş kutusunda öğeyi seçin.

int Selected(void)

Bu yöntem, seçili öğenin dizinini veya hiçbir şey seçilmediyse -1 değerini döndürür.

void Add([in] LPCTSTR başlık)

Birleşik giriş kutusuna el ile öğe ekleyin.

HRESULT GetText([out, retval] LPBSTR pText)

Birleşik giriş kutusunda seçili durumdaki öğenin dizesini alın.

void Clear()

Birleşik giriş kutusundan tüm öğeleri kaldırın.

IControl Arabirimi

__interface IControl : IUnknown
{
    HRESULT SetEnable(BOOL enable);
    BOOL IsEnabled(void);
    HRESULT SetVisible(BOOL visible);
};
Genel Bakış

Bu arabirim ControlWrapper bileşeni tarafından uygulanır. CONTROL_GENERIC türündeki GetControlWrapper yardımcı işlevini kullanarak bu bileşenin bir örneğini alırsınız.

HRESULT SetEnable(BOOL etkinleştirme)

Denetimi etkinleştirin veya devre dışı bırakın.

BOOL IsEnabled(void)

Denetim etkinse TRUE, etkin değilse YANLIŞ döndürür.

HRESULT SetVisible(BOOL görünür)

Denetimi gösterin veya gizleyin.

ICpuInfo Arabirimi

__interface ICpuInfo : IUnknown
{
    BOOL Is64Bit(void);
};
Genel bakış

Yeni bir ID_CpuInfo bileşeni oluşturarak bu arabirimi elde edebilirsiniz. Tek yöntem, CPU'un 32 veya 64 bit olup olmadığını bildirir. 64 bit bir bilgisayarda 32 bit işletim sisteminiz varsa, bu yöntemin yalnızca CPU genişliğini (işletim sistemi değil) raporlaması nedeniyle TRUE döndürdüğünü unutmayın.

IDirectory Arabirimi
__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);
};
Genel bakış

ID_Directory kullanarak oluşturduğunuz Dizin bileşeni, dosya sistemindeki dizinlerle çalışmak için bir cephe sağlar.

BOOL FileExists(LPCWSTR adı)

Sağladığınız ada sahip bir dosya varsa bu yöntem TRUE döndürür.

BOOL FindFirst([in] LPCWSTR adı)

Bu yöntem, sağladığınız ad için ilk eşleşmeyi bulur. Joker karakterleri destekler ve hem dosya hem de dizin adlarını döndürür. Yöntem, eşleşme bulunursa TRUE, aksi takdirde YANLIŞ döndürür.

HRESULT FoundName([out, retval] LPBSTR adı)

Bu yöntem , FindFirst veya FindNext çağrısıyla bulunan dosyanın adını alır.

DWORD FoundAttributes(void)

Bu yöntem, en son bulunan dosya veya dizinin özniteliğini döndürür. Bir dizin olup olmadığını test etmek için kodu aşağıdaki gibi kullanabilirsiniz:

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

Sonrakini bulun. Başka bir eşleşme bulunursa bu yöntem TRUE döndürür, aksi takdirde YANLIŞ.

void FinishFind(void)

Bu yöntem, Bul işlemi için kullanılan kaynakları serbest bırakır.

IDomainJoinValidator Arabirimi

__interface IDomainJoinValidator : IUnknown
{
    HRESULT Init(ILogger *pLogger, IWizardPageContainer *pContainer, IStaticText *pUsername, IStaticText *pPassword, IStaticText *pComputerName);
    HRESULT IsUsernameValid(LPCWSTR domainName);
    BOOL CanModifyComputerAdEntry(LPCWSTR domainName);
};
Genel Bakış

CreateInstance şablon işlevine ID_DomainJoinValidator değerini kullanarak bu arabirimin bir örneğini alırsınız.

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

Tablo 17'de gösterildiği gibi örneği başlatın.

Tablo 17. HRESULT Init - Örnek Başlatma

Parametre Açıklama
pLogger Sayfanın Günlükçü yöntemi aracılığıyla sayfanızda kullanılabilen günlükçü örneği
pContainer Sayfanızın Container yönteminden sonuçları geçirir
pUsername Doğrulanacak kullanıcı adını içeren metin kutusu
pPassword Doğrulanacak parolayı içeren metin kutusu
PComputerName Sonunda etki alanına eklenecek bilgisayarın adını içeren metin kutusu
HRESULT IsUsernameValid(LPCWSTR domainName)

Bu yöntem, işi yapmak için IADHelper-ValidLogon> yöntemini kullanır. Ayrıntılar için bu yönteme bakın.

BOOL CanModifyComputerAdEntry(LPCWSTR domainName)

Kullanıcının bilgisayar girdisini değiştirme haklarına sahip olup olmadığını doğrulayın. İşin çoğu IADHelper-HasAccess> tarafından gerçekleştirilir. Bu yöntem YANLIŞ döndürürse, ayrıntılar için günlük dosyasını denetleyin.

IDriveList Arabirimi

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

Diğer bileşenleri çağırmadan önce bu yöntemi çağır. Bu yöntemi çağırmadan önce yeni bir WmiRepository oluşturmanız gerekir.

HRESULT SetWhereClause(LPCTSTR whereClause)

Bu yöntem, sorguda "where" yan tümcesi olarak görünecek metin eklemenize olanak tanır. Örneğin, aşağıdaki satır yalnızca USB sürücüleri döndürür:

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

Sorgudan döndürülecek sürücüler için sürücü boyutunu bayt cinsinden en aza indirin.

HRESULT Güncelleştirmesi(geçersiz)

Sorguyu yürütür. Bu yöntem çağrıldıktan sonra kullanılabilen sürücü listesi sürücü harfine göre sıralanır.

HRESULT AddProperty(ENUM_DISK_QUERY_SECTION bölümü, LPCTSTR propName, LPCTSTR propNameReturned)

Bu yöntem, sorgu sonuçlarında kullanılabilir hale getirmek istediğiniz ek özelliklerin adlarını ekler. Update'i çağırmadan önce bu yöntemi çağır. Tablo 18'de yararlı üç özellik gösterilmektedir.

Tablo 18. HRESULT AddProperty: Yararlı Özellikler

Bölüm Özellik Açıklama
DISKQUERY_LOGICALDISK Boyut Dize olarak gösterilen bayt cinsinden boyut
DISKQUERY_DISKPARTITION DiskIndex 0 ile başlayan tamsayı olarak disk numarası
DISKQUERY_LOGICALDISK VolumeName Birim etiketi
size_t Sayısı (geçersiz)

Sorgunun döndürdüğü kayıt sayısı. Bu yöntemi çağırmadan önce Update'i çağır.

HRESULT GetProperty(size_t dizini, LPCTSTR propName, LPVARIANT değeri)

Bu yöntem, Tablo 19'da gösterildiği gibi sorgu sonuçlarından bir özelliğin değerini alır.

Tablo 19. HRESULT GetProperty

Parametre Açıklama
Dizin Sonuç kaydına sıfır tabanlı dizin
propName Özelliğin adı, örneğin "Boyut"
Değer Sonuç olarak, bu parametre özelliğin değişken değerini içerir
HRESULT GetCaption(size_t dizini, LPBSTR pCaption)

Bu yöntem, Caption özelliğiyle aynı olan bir kayıt için başlık alır.

IImageList Arabirimi

__interface IImageList
{
    HRESULT CreateImageList(int width, int height, UINT flags);
    HImageList GetImageList(void);
    int AddImage(HInstance hInstance, int resourceId);
};
Genel Bakış

Bu arabirim ImageList bileşeni tarafından uygulanır. Bu bileşenin bir örneğini IListView arabiriminden alırsınız.

HRESULT CreateImageList(int width, int height, UINT bayrakları)

Bu bileşenin yönettiği yeni bir görüntü listesi oluşturun. Bu yöntemi yalnızca bir kez çağır.

HImageList GetImageList(void)

Bu yöntem, görüntü listesindeki diğer işlemleri gerçekleştirmeniz gerekirse görüntü listesinin tutamacını döndürür.

int AddImage(HInstance hInstance, int resourceId)

Tablo 20'de gösterildiği gibi bir kaynaktan görüntü listesine yeni bir görüntü ekleyin.

Tablo 20. HRESULT IImageList Arabirimi

Parametre Açıklama
Hınstance Bit eşlem kaynağını içeren modülün örnek tanıtıcısı
Resourceıd Görüntü listesine yüklenemiyor kaynağın kimliği

IListView Arabirimi

__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);
};
Genel Bakış

Bu arabirim ControlWrapper bileşeni tarafından uygulanır. CONTROL_LIST_VIEW türündekiGetControlWrapper yardımcı işlevini kullanarak bu bileşenin bir örneğini alırsınız.

int AddItem([in] LPCTSTR metni)

Liste kutusuna yeni bir satır ekleyin. yöntemi, yeni eklenen öğenin dizinini döndürür.

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

Liste görünümüne yeni bir sütun ekleyin.

HRESULT SetSubItem(int dizini, int sütunu, [in] LPCTSTR metni)

Tablo 21'de gösterildiği gibi, liste kutusunun ilk sütunu dışındaki bir sütundaki metni ayarlayın.

Tablo 21. HRESULT SetSubItem

Parametre Açıklama
Dizin Değiştirmek istediğiniz liste öğesinin dizini
Sütun Güncelleştirmek istediğiniz sütunun dizini; İlk sütun AddItem ile ayarlanır, iki ve aşağıdaki sütunlar bu yöntemle ayarlanır
Metin Sütunda gösterilecek dize
int GetWidth(void)

Bu yöntem, metin kutusunun tamamının genişliğini döndürür.

void SetExtendedStyle(DWORD stili)

Bu yöntem, liste kutusunda genişletilmiş stiller ayarlamanıza olanak tanır; örneğin:

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

Bu yöntem, seçili durumdaki liste görünümü öğesinin dizinini döndürür.

HRESULT SelectItem(int dizini)

Listedeki seçili öğeyi bu dizin olarak ayarlayın.

BOOL IsItemChecked(int dizini)

Listedeki bir öğe seçiliyse bu yöntem TRUE döndürür. Bu yöntem, onay kutusu stilini ayarlamak için SetExtendedStyle çağırmanızı gerektirir.

int GetItemCount(void)

Bu yöntem, liste görünümündeki öğe sayısını döndürür.

HRESULT CreateImageList(int width, int height, UINT bayrakları)

Yeni bir resim listesi oluşturun ve liste görünümüne ekleyin.

int AddImage(HINSTANCE hInstance, int resourceId)

Liste görünümünün resim listesine bir resim ekleyin. Önce CreateImageList'i çağırmanız gerekir.

HRESULT SetImage(int index, int imageIndex)

Belirli bir liste görünümü öğesi için sol tarafta gösterilecek görüntüyü ayarlayın.

HRESULT Clear(void)

Liste görünümündeki tüm öğeleri kaldırın.

IProgressBar Arabirimi

__interface IProgressBar : IControl
{
    HRESULT SetPercentage(int position);
    int GetPercentage(void);
};
Genel Bakış

Bu arabirim ProgressBarWrapper bileşeni tarafından uygulanır. CONTROL_PROGRESS_BAR türüne sahip GetControlWrapper yardımcı işlevini kullanarak bu bileşenin bir örneğini alırsınız.

HRESULT SetPercentage(int konumu)

0 ile 100 arasında bir sayı kullanarak ilerleme çubuğunun konumunu ayarlayın. Varsayılan olarak, yeni Win32® ilerleme çubukları en fazla 100 aralığa sahiptir.

int GetPercentage(void)

Bu yöntem ilerleme çubuğunun geçerli konumunu döndürür.

IRadioButton Arabirimi

__interface IRadioButton : IControl
{
public:
    void SetGroup(int firstId, int lastId);
    void CheckRadio(int id);
    BOOL IsButtonChecked(int id);
    void EnableRadio(int id, BOOL enable);
};
Genel bakış

Bu arabirim RadioButtonWrapper bileşeni tarafından uygulanır. CONTROL_RADIO_BUTTON türündekiGetControlWrapper yardımcı işlevini kullanarak bu bileşenin bir örneğini alırsınız.

void SetGroup(int firstId, int lastId)

Sarmalayıcıya grup olarak ele alınması gereken radyo düğmeleri aralığını sağlayın. CheckRadio'yı çağırmadan önce bu yöntemi çağır.

void CheckRadio(int id)

Seçilen radyo düğmeleri grubundaki tek düğme olarak belirli bir radyo düğmesini ayarlayın. Bu yöntemi çağırmadan önce SetGroup'ı çağır.

BOOL IsButtonChecked(int id)

Radyo düğmesi seçiliyse bu yöntem TRUE döndürür; aksi takdirde YANLIŞ olur.

void EnableRadio(int id, BOOL enable)

Bu yöntem bir radyo düğmesini etkinleştirir veya devre dışı bırakır.

IStaticText Arabirimi

__interface IStaticText : IControl
{
    HRESULT SetText([in] LPCTSTR pText);
    HRESULT GetText([out, retval] LPBSTR pText);
};
Genel Bakış

Bu arabirim StaticTextWrapper bileşeni tarafından uygulanır. CONTROL_STATIC_TEXT türüne sahip GetControlWrapper yardımcı işlevini kullanarak bu bileşenin bir örneğini alırsınız.

HRESULT SetText([in] LPCTSTR pText)

Denetimin metnini ayarlayın.

HRESULT GetText([out, retval] LPBSTR pText)

Bu yöntem, denetimin metninin geçerli değerini döndürür.

ITask Arabirimi

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

Bileşeninizin denetim öncesi sayfasında görev olarak kullanılabilir olmasını istiyorsanız veya arka plan iş parçacığında iş yapmak için BackgroundTask bileşenini kullanmak istiyorsanız bu arabirimi uygulayın.

ITask arabirimini uygulayan bileşenler şunlardır:

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

Denetim öncesi sayfası için bir görev yazıyorsanız, görevinizi başlatmak için bu yöntemi çağırın. .config dosyası aşağıdakine benzer olabilecek XML içeriyor:

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

pProperties parametresi üç ayarlayıcı değerine erişim sağlarken pTaskSettings parametresi Task öğesine ve alt öğelerine erişim sağlar. Çoğu görev yalnızca pProperties parametresinden veri okuması gerekir.

Yürütme
HRESULT Execute(LPDWORD pReturnCode)

Görevi gerçekleştiren kodu burada yazabilirsiniz. Bu yöntem hata yoksa S_OK döndürmelidir ve görev çalışırken bir hata oluşursa başka bir HRESULT döndürebilir. Bu yöntemin döndürdüğü S_OK dışındaki değerler, denetim öncesi sayfasını kullanıyorsanız ExitCodes> bölümündeki Hata> öğeleriyle <eşleştirilir<.

pReturnCode parametresi, görevin durumunu bildiren bir sayı ile güncelleştirilmelidir. Bu değerler, preflights sayfası tarafından ExitCode> öğeleriyle <eşleştirilir.

ITreeView Arabirimi

__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);
};
Genel bakış

Bu arabirim TreeViewWrapper bileşeni tarafından uygulanır. CONTROL_TREE_VIEW türündekiGetControlWrapper yardımcı işlevini kullanarak bu bileşenin bir örneğini alırsınız.

void EnableCheckboxes(void)

Bu yöntem, TVS_CHECKBOXES stilini ayarlayarak ağaç görünümü denetimindeki onay kutularını açar.

HRESULT CreateImageList(int width, int height, UINT bayrakları)

Ağaç görünümü denetimine yeni bir görüntü listesi ekleyin. flags parametresi, ImageList_Create Win32 işlevine yapılan çağrıda geçirilir.

int AddImage(HINSTANCE hInstance, int resourceId)

Örnek tanıtıcısı hInstance ile modüldeki bir kaynaktan (resourceId) görüntü listesine bir görüntü ekleyin.

HTREEITEM AddItem(LPCTSTR metni, HTREEITEM hParent = NULL)

Ağaç görünümüne bir düğüm ekleyin. hParent NULL ise yeni düğüm en üst düzeye eklenir. Aksi takdirde, yeni öğenin eklenmesini istediğiniz üst öğeye tanıtıcıyı sağlayın. Bu yöntem tanıtıcıyı yeni öğeye döndürür.

void SetImage(HTREEITEM öğesi, int görüntüsü, int expandImage)

Bir ağaç görünümü öğesi için kullanılacak görüntüyü ayarlayın. Hem normal hem de genişletilmiş görüntüyü ayarlayabilirsiniz.

void Clear(void)

Ağaç görünümündeki tüm öğeleri kaldırın.

BOOL SetFirstVisible(HTREEITEM öğesi)

Ağaç görünümü öğesinin görünür olduğundan emin olun. Bu öğenin görünür olması için gerekirse ağaç görünümü kaydırılır.

BOOL SelectItem(HTREEITEM öğesi)

Seçili durumdaki öğeyi sağladığınız öğe olarak ayarlayın. Yeni seçilen öğenin görünür olduğundan emin olmak için bundan sonra SetFirstVisible'ı çağırabilirsiniz.

void CheckItem(HTREEITEM öğesi, UINT checkState)

yöntemi temelde ağaç görünümündeki onay kutusu için gösterilecek görüntüyü ayarlar. Bu görüntüler, ağaç görünümünün yönettiği ayrı bir ImageList denetimindedir. Varsayılan olarak, bu görüntü listesinde Tablo 22'de gösterilen üç resim vardır.

Tablo 22.void CheckItem Görüntü Listesi Varsayılanı

Checkstate Açıklama
0 Boş
1 Temizlenmiş
2 Seçili
HTREEITEM SelectedItem(void)

Bu yöntem, seçili durumdaki ağaç görünümü öğesinin tutamacını döndürür.

int SetItemHeight(SHORT height)

Bu yöntem, ağaç görünümü denetimindeki tüm öğelerin yüksekliğini piksel olarak ayarlar. Önceki yüksekliği piksel cinsinden döndürür.

HRESULT EnableItem(HTREEITEM öğesi, BOOL etkinleştirme)

Bu yöntem ağaçtaki tek bir öğeyi etkinleştirir veya devre dışı bırakır. Bir öğeyi alt öğelerle devre dışı bırakmak, alt öğeleri devre dışı bırakmaz.

void Expand(HTREEITEM hItem, BOOL expand)

Bu yöntem, ağaçtaki bir düğümü genişletir veya daraltir.

HTREEITEM GetChild(HTREEITEM hParent)

Bu yöntem, bir ağaç görünümü öğesinin ilk alt öğesini veya alt öğe yoksa NULL değerini döndürür.

HTREEITEM GetParent(HTREEITEM hNode)

Bu yöntem, ağaç görünümündeki bir düğümün üst öğesinin tanıtıcısını veya düğüm en üst düzeydeyse NULL değerini döndürür.

HTREEITEM GetNextItem(HTREEITEM hPrevious)

GetChild'in bir düğümün tüm alt öğelerinde yinelemek için döndürdüğü bir tanıtıcıyla bu yöntemi çağırabilirsiniz. Bu yöntem, aynı üst öğeyi paylaşan ağaçtaki bir sonraki eşdüzey değeri döndürür.

UINT IsChecked(HTREEITEM öğesi)

Bu yöntem, ağaç görünümü düğümü seçili değilse 0 , seçiliyse 1 döndürür.

BOOL IsEnabled(HTREEITEM öğesi)

Bu yöntem, ağaç görünümü düğümü etkinse TRUE, aksi takdirde YANLIŞ döndürür.

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

Bu yöntem yalnızca iç kullanım içindir.

HRESULT SetEventHandler(ITreeViewEvent *pEventHandler)

Seçili öğe değiştiğinde veya kullanıcı ağaç görünümü öğesinin denetim durumunu değiştirdiğinde bildirim almak istiyorsanız bu yöntemi çağırın. Bu geri çağırmaları almak için bileşeninizde ITreeViewEvent'i uygulamanız gerekir.

void SetSelectedBackColor(COLORREF rengi)

Seçili öğe için kullanılan arka plan rengini ayarlayın.

IWmiIteration Arabirimi

__interface IWmiIterator : IUnknown
{
    HRESULT Next(void);
    HRESULT GetProperty(LPCTSTR propertyName, [out] LPVARIANT pValue);
};
Genel Bakış

Bu arabirimi genellikle WMI çağrılarıyla çalışırken IWmiRepository ile birlikte kullanırsınız. IWmiIteration arabirimi, sorgunun döndürdüğü değerler arasında yineleme yapmanızı sağlar.

HRESULT Next(void)

Tablo 23'te gösterildiği gibi sorgu sonuçlarında bir sonraki öğeye gitme.

Tablo 23. HRESULT Next(void) Sorgu Dönüşleri

HRRESULT Açıklama
S_OK Sonraki sonuda taşındı; Bu sonucun özelliklerini almak için GetProperty kullanabilirsiniz.
S_FALSE Listede başka öğe yok.
E_NOT_SET Sorgu sonucu yok
HRESULT GetProperty(LPCTSTR propertyName, [out] LPVARIANT pValue)

Bu yöntem, Tablo 24 ve Tablo 25'te gösterildiği gibi geçerli sonuç kaydından bir özelliğin değerini alır.

Tablo 24. HRESULT GetProperty

Parametre Açıklama
Propertyname Almak istediğiniz özelliğin adı
pValue Dönüşte özellik değerini içeren VARIANT yapısına işaret eder

Tablo 25. HRESULT GetProperty Sonucu

HRESULT Açıklama
S_OK Özellik değeri alındı.
WBEM_E_NOT_FOUND Adlı bir özellik yoktur.
E_NOT_VALID_STATE Geçerli kayıt yok.

Not

GetProperty yöntemi, Tablo 25'te listelenenler dışında başka WMI hata kodları döndürebilir. Listelenen değerler, döndürülen yaygın sonuçlardır.

IWmiRepository Arabirimi

__interface IWmiRepository : IUnknown
{
    HRESULT SetNamespace(LPCWSTR namespaceName);
    HRESULT ExecQuery(LPCWSTR query, [out] IWmiIterator **ppIterator);
};
Genel bakış

Bu arabirim WmiRepository bileşeni (ID_WmiRepository) tarafından uygulanır.

HRESULT SetNamespace(LPCWSTR namespaceName)

Bu yöntem, sorgu için kullanılacak WMI ad alanını ayarlar. ExecQuery'i çağırmadan önce bu yöntemi çağır. Bu yöntemi çağırmazsanız, ad alanı root\cimv2 olur. Bu yöntem her zaman S_OK döndürür.

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

Tablo 26 ve Tablo 27'de gösterildiği gibi SetNamespace çağrısıyla WMI ad alanı kümesine karşı bir sorgu yürütür.

Tablo 26. HRESULT ExecQuery

Parametre Açıklama
Sorgu Yürütmek istediğiniz WMI sorgusunun dizesi
ppIterator Bir işaretçiyi bir arabirim işaretçisine geçirin; dönüşte bir arabirimle doldurulur ve sorgu sonuçlarına erişmenizi sağlar

Tablo 27. HRESULT Sorgu Sonucu

HRESULT Açıklama
S_OK Sorgu başarılı oldu
Diğer Sorgu başarılı olmazsa WMI HRESULT döndürür

IFormController Arabirimi

__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);
 };
Genel Bakış

UDI Sihirbazı'ndaki her sayfanın bu arabirimi uygulayan kendi form denetleyicisi vardır. .config XML dosyasındaki alan verilerini sayfanızdaki denetimlere bağlamak için bu denetleyiciyi kullanırsınız. Form denetleyicisi daha sonra sizin için birçok ayrıntıyı işler.

Formu Ayarlama

Genel olarak, sayfanızın OnWindowCreated yönteminde form denetleyicisini ayarlayın. Bunun yapılması genellikle Tablo 28'de gösterilen yöntemleri çağırmayı içerir.

Tablo 28. OnWindowCreated Yöntemi

Yöntem Açıklama
Init Form denetleyicisini başlatır
AddField .config XML dosyasındaki dize adı olan alan ile sayfanızın iletişim kutusundaki kimlik olan bir denetim arasında bağlantı sağlar
AddRadioGroup İletişim kutunuzdaki bir radyo düğmesini hem gruba hem de denetime bağlamak için kullanılır
AddToGroup Ebeveyniyle birlikte veya hangi radyo düğmesinin seçili olduğuna bağlı olarak etkinleştirilen veya devre dışı bırakılan "alt" denetimlere izin verir
InitFields Formu ayarlamak için tüm Add yöntemlerini çağırdıktan sonra çağırın
Doğrulamak İlk doğrulamayı gerçekleştirir
Form Olaylarını İşleme

OnControlEvent yönteminize aşağıdaki çağrıyı ekleyin:

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

Bu çağrı, formla ilgili olayları işleyebilmesi için olayları form denetleyicisine geçirir.

Form Verilerini Kaydet

OnNextSelected yönteminde Tablo 29'da gösterilen form yöntemlerini çağırın.

Tablo 29. OnNextSelected Yöntemi

Yöntem Açıklama
InitSection Bu sayfanın Özet sayfasında gösterilecek bölümün adını sağlar
SaveFields Alan değerlerini görev dizisi değişkenlerine ve Özet sayfasına kaydetme
Init
HRESULT Init(IWizardPageView *pView, IWizardPageContainer *pContainer)

Bu yöntemi genellikle sayfanızın OnWindowCreated yönteminin başında çağırırsınız. Komut şuna benzer olmalıdır:

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

Bu yöntem dahili olarak çağrılır ve kendiniz çağırmamalısınız. Sayfanın XML'ini form denetleyicisine sağlar.

Doğrulamak
HRESULT Validate(void)

Bu yöntem denetimlere eklenen tüm doğrulayıcıları yürütür. Doğrulayıcı geçmezse, form denetleyicisi bir uyarı iletisi görüntüler ve İleri düğmesini devre dışı bırakır, ardından doğrulayıcıları işlemeyi durdurur. Genellikle, bu yöntemi yalnızca OnWindowCreated yönteminizin sonunda çağırmanız gerekir; her zaman S_OK döndürür.

AddToGroup
AddToGroup(int groupControlId, int controlId)

Bu yöntem, Tablo 30'da gösterildiği gibi bir denetimi onay kutusunun veya radyo düğmesinin "alt öğesi" olarak ekler. Üst denetim seçilmediğinde bu tür alt denetimlerin tümü devre dışı bırakılır. yöntemi her zaman S_OK döndürür.

Tablo 30. AddToGroup

Parametre Açıklama
groupControlId Alt denetimin etkinleştirme durumunu denetleyecek onay kutusunun veya radyo düğmesinin kimliği
Denetimli Alt öğe olarak eklemek istediğiniz denetimin kimliği
UpdateCheckGroup
HRESULT UpdateCheckGroup(int groupControlId)

Bu yöntem, bir grubun alt denetimlerinin durumunu üst denetimin durumuna göre etkinleştirir veya devre dışı bırakır. Genellikle, form denetleyicisi sizin için çağırdığı için bu yöntemi kendiniz çağırmanız gerekmez.

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

Bu yöntemi yalnızca XML yerine kodda oluşturmak istediğiniz bir doğrulayıcınız varsa çağırın. Bu yöntem her zaman S_OK döndürür.

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

Bu yöntemi yalnızca XML yerine kodda oluşturmak istediğiniz bir doğrulayıcınız varsa çağırın.

DisableValidation
HRESULT DisableValidation(int controlId, BOOL disable)

Tablo 31'de gösterildiği gibi bir denetim için doğrulayıcıyı açıkça devre dışı bırakmak veya normal doğrulamayı geri yüklemek için bu yöntemi çağırabilirsiniz. Bu yöntem, örneğin form doğrulaması kapsamında olmayan denetimler için etkinleştirme/devre dışı bırakma kurallarınız olduğunda ve bir denetim için doğrulamayı devre dışı bırakmanız gerektiğinde yararlıdır. Başka bir deyişle, normalde bu yöntemi çağırmazsınız. Bu yöntem her zaman S_OK döndürür.

Tablo 31. HRESULT DisableValidation

Parametre Açıklama
Controlıd Doğrulamayı etkinleştirmek veya devre dışı bırakmak istediğiniz denetim
Devre dışı bırakmak Doğrulamayı devre dışı bırakmak için TRUE, normal doğrulamayı geri yüklemek için FALSE olarak ayarlayın
AddField
HRESULT AddField(LPCWSTR fieldName, int controlId, BOOL suppressLog, DialogControlTypes type)

Tablo 32'de gösterildiği gibi, .config XML dosyasının Field öğesindeki ad ile sayfanızın iletişim kutusundaki denetim kimliği arasında bir denetim eşlemesi ekleyin. InitFields bu bilgileri kullandığından, InitFields çağrısından önce bu yöntemi çağırmalısınız. Bu yöntem her zaman S_OK döndürür.

Tablo 32. HRESULT AddField

Parametre Açıklama
Fieldname Alanın, sayfanızın XML'sinde göründüğü şekilde adı
Controlıd Sayfanızın iletişim kutusu şablonundaki denetimin kimliği
suppressLog Bu alandaki değerlerin günlük dosyasına yazılmasını istemiyorsanız TRUE olarak ayarlayın; Parola veya PIN alanları için bu parametreyi her zaman TRUE olarak ayarlayın
Tür Aşağıdakilerden biri olan denetim türü:

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

Bu yöntem, Tablo 33'te gösterildiği gibi adlandırılmış bir radyo düğmesi grubuna denetim ekler. Bu yöntem gruptaki tüm radyo düğmesi denetimlerinin ayarlarını denetlemek için RadioGroup öğesindeki öznitelikleri kullandığından, bunu InitFields yönteminden önce çağırmalısınız. Radyo grupları kilitlenebilir, böylece tüm radyo düğmeleri devre dışı bırakılır, ancak alt denetimler yalnızca hangi radyo düğmesinin seçili olduğuna bağlı olarak etkinleştirilir veya devre dışı bırakılır. Bu yöntem her zaman S_OK döndürür.

Tablo 33. HRESULT AddRadioGroup

Parametre Açıklama
groupName Bu sayfadaki bir grup radyo düğmesini tanımlayan dize
radioControlId Bu gruba eklenecek tek bir radyo düğmesinin kimliği
EnableRadioGroup
HRESULT EnableRadioGroup(LPCWSTR groupName, BOOL enable)

Bu yöntem, bir radyo düğmesi grubunun tamamını etkinleştirmenize veya devre dışı bırakmanıza olanak tanır. Bir radyo grubunu devre dışı bırakmak, gruptaki tüm radyo düğmesi denetimlerinin yanı sıra AddToGroup ile eklenen bu radyo düğmelerinin alt öğelerini devre dışı bırakır. Bkz. Tablo 34 ve Tablo 35.

Tablo 34. EnableRadioGroup

Parametre Açıklama
groupName AddRadioGroup çağrısıyla önceden tanımladığınız bir radyo düğmesi grubunun adı
Etkinleştirmek Radyo düğmesi grubunu etkinleştirmek için TRUE, grubu devre dışı bırakmak için FALSE olarak ayarlayın

Tablo 35. HRESULT EnableRadioGroup

HRESULT Açıklama
S_OK Grup etkin veya devre dışı
E_INVALIDARG Sağladığınız adda bir radyo düğmesi grubu yok
InitFields
HRESULT InitFields(IFieldCallback *pFieldCallback = nullptr)

Bu yöntemi çağırmadan önce, XML'nin denetleyebileceği her alan için AddField'ı çağırın. Bu yöntem her zaman S_OK döndürür.

pFieldCallback parametresi isteğe bağlıdır. Bunu sağlarsanız, form denetleyicisi CONTROL_STATIC_TEXT veyaCONTROL_CHECK_BOX olmayan denetimler için SetFieldDefault'ı çağırır. Bu davranış, XML'den varsayılan bir değer almanıza ve bunu denetimde kendiniz ayarlamanıza olanak tanır.

SaveFields
HRESULT SaveFields(IFieldCallback *pFieldCallback = nullptr)

Bu yöntem, alan değerlerini görev dizisi değişkenlerine ve Özet sayfasında gösterilecek özet verilerine kaydeder. pFieldCallback'te bir işaretçi sağlamak, CONTROL_STATIC_TEXT desteklemeyen denetimler için kaydetme değerlerini işlemenize olanak tanır.

IsFieldDisabled
BOOL IsFieldDisabled(int controlId)

Bu yöntem, XML'de bir alanın devre dışı bırakılıp bırakılmadığını belirlemenize olanak tanır.

InitSection
HRESULT InitSection(LPCWSTR key, LPCWSTR sectionCaption)

Bu yöntem, Tablo 36'da gösterildiği gibi Özet sayfasında gösterilecek özet verilerini başlatır. SaveFields'i çağırmadan önce OnNextSelected yönteminizde bu yöntemi çağırın. Bu yöntem her zaman S_OK döndürür.

Tablo 36. HRESULT InitSection

Parametre Açıklama
Anahtar Bu parametre sayfanıza özgü olmalıdır. Her sayfanın kendi özet bilgilerine sahip olduğundan emin olmak için kullanılır.
sectionCaption Bu sayfanın özet bilgileri için Özet sayfasında gösterilecek üst bilgi. Genellikle, bu parametrenin değeri olarak DisplayName() kullanırsınız.
AddSummaryItem
HRESULT AddSummaryItem(LPCWSTR first, LPCWSTR second)

Bu yöntem, ÖZET sayfasına XML ile ayarlanan öğelerin üstüne ve ötesine özet öğeleri eklemenize olanak tanır. Bkz. Tablo 37.

Tablo 37. HRESULT AddSummaryItem

Parametre Açıklama
Ilk Sol tarafta gösterilen özet öğesinin başlık
Ikinci Sağ tarafta gösterilecek değer
SuppressLogValue
HRESULT SuppressLogValue(LPCWSTR tsVariableName)

Değerlerinin günlük dosyasına yazılmasını istemediğiniz görev dizisi değişkenleri için bu yöntemi çağırın. Parolaları, PIN'leri veya kullanıcının girebileceği diğer hassas değerleri depolayan görev dizisi değişkenleri için bu yöntemi çağırabilirsiniz.

SaveText
HRESULT SaveText(int controlId, LPCWSTR tsVariableName, LPCWSTR summaryCaption)

Bu yöntem, metin denetiminin değerini hem görev dizisi değişkenine hem de özet bölümüne kaydeder. Form denetleyicisi bunu tüm alanlar için yaptığı için genellikle bu yöntemi kendiniz çağırmanız gerekmez. Bkz. Tablo 38.

Tablo 38. HRESULT SaveText

Parametre Açıklama
Controlıd Kaydetmek istediğiniz değeri içeren metin kutusunun kimliği (veya metin döndürebilen başka bir denetim)
tsVariableName Değiştirmek istediğiniz görev dizisi değişkeninin adı
summaryCaption Bu değerin Özet sayfasındaki başlık
LoadText
HRESULT LoadText(int controlId, LPCWSTR tsVariableName)

Bu yöntem bir görev dizisi değişkeninin değerini okur ve metin kutusunu bu değere ayarlar.

ControlEvent
void ControlEvent(WORD eventId, WORD controlId)

Form denetleyicisinin doğru çalışması için yapması gereken denetim olaylarını işleyebilmesini sağlamak için OnControlEvent yönteminizde bu yöntemi çağırın. Bu yönteme geçirdiğiniz değerler , OnControlEvent yöntemine geçirilen değerlerle aynıdır.

Isvalid
BOOL IsValid(void)

Bu yöntem, formun en son doğrulanma durumunu döndürür. Denetim doğrulayıcılarından herhangi biri hata bildirdiyse, bu yöntem YANLIŞ döndürür. Başka bir deyişle, yalnızca sayfadaki tüm denetimler geçerliyse TRUE döndürür.

IValidator Arabirimi

__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);
};
Genel Bakış

Doğrulayıcılar , sayfanızdaki tek bir denetimi doğrulayan bileşenlerdir. Doğrulayıcı uygulamanın en kolay yolu, bunu BaseValidator.h üst bilgi dosyasında tanımlanan BaseValidator sınıfının alt sınıfı yapmaktır.

HRESULT Init(IControl *pControl, LPCTSTR iletisi)

Kodda bir doğrulayıcı oluşturursanız, doğrulayıcıyı başlatmak için bu yöntemi çağırabilirsiniz. Bkz. Tablo 39.

Tablo 39. HRESULT Başlatma

Parametre Açıklama
pControl Doğrulayıcınızın doğrulaması gereken denetim
İleti Denetim geçerli değilse sayfada görüntülenecek ileti
HRESULT Init(IControl *pControl, IWizardPageContainer *pContainer, IStringProperties *pProperties)

Form denetleyicisi, sayfanın XML'sini temel alarak oluşturduğu doğrulayıcıları başlatmak için bu yöntemi çağırır. Bkz. Tablo 40.

Tablo 40. HRESULT Init Yöntemi

Parametre Açıklama
pControl Doğrulayıcınızın doğrulaması gereken denetim
pContainer Doğrulayıcınızın günlükçüye erişmesi veya başka bileşenler oluşturması gerektiğinde
pProperties Doğrulayıcınızın özelliklerine (ayarlayıcı öğeleri) erişim sağlar
BOOL, IsValid(LPBSTR pMessage)

Bu yöntem, denetim geçerliyse TRUE veya denetim geçersizse YANLIŞ döndürür. Sonuç olarak pMessage , denetim geçerli olmadığında görüntülenecek iletiyi içeren yeni bir BSTR ile doldurulmalıdır.

HRESULT SetProperty(int propertyId, LPVARIANT pValue)

XML'de sağlanmayan ek değerlere ihtiyacınız varsa bu yöntemi uygulayabilirsiniz.

HRESULT SetProperty(int propertyId, IUnknown *pUnknown)

XML'de sağlanmayan ek değerlere ihtiyacınız varsa bu yöntemi uygulayabilirsiniz.

HRESULT SetProperty)(int propertyId, LPCTSTR pValue)

XML'de sağlanmayan ek değerlere ihtiyacınız varsa bu yöntemi uygulayabilirsiniz.

IRegEx Arabirimi

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

Bu yöntem ID_Regex bileşeni (IRegex.h) tarafından uygulanır ve normal ifade işleme için destek sağlar.

BOOL MatchesRegex(LPCTSTR girişi, LPCTSTR regex)

Bu yöntem, normal ifadeyi giriş metnine karşı çalıştırır. Asıl işi yapmak için C++ standart kitaplığının regex_match işlevini kullanır. Yöntemi, eşleşmeler varsa TRUE, aksi takdirde YANLIŞ döndürür.

HRESULT GetMatch(size_t dizini, LPBSTR pValue)

Bu yöntem, en son MatchesRegex çağrısından eşleşmeleri almanızı sağlar. Bu yöntemde hata işleme olmadığını ve S_OK döndürdüğünü veya bir özel durum oluşturduğunu unutmayın.

ISummaryInfo Arabirimi

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

Bu arabirimi doğrudan kullanmanız gerekmez. Bunun yerine IFormController kullanın.

ISummaryBag

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

Bu arabirimi doğrudan kullanmanız gerekmez. Bunun yerine IFormController kullanın.

ITSVariableBag Arabirimi

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

Bu arabirim, görev dizisi değişkenlerine erişim sağlar. Sayfanızın TSVariables() yöntemini kullanarak bu arabirime erişebilirsiniz.

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

Bu yöntem bir görev dizisi değişkeninin değerini okur.

Not

Değerler ilk okunduktan sonra önbelleğe alınır.

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

Bu yöntem bir görev dizisi değişkeninin değerini ayarlar. Bu değer belleğe kaydedilir. Görev dizisi değerleri UDI Sihirbazı'nda Son'u seçtiğinizde yazılır.

void Clear(void)

Bu yöntem, belleğe kaydedilmiş tüm görev dizisi değerlerini kaldırır.

HRESULT Remove([in] LPCTSTR variableName)

Bu yöntem bellekten belirli bir görev dizisi değerini kaldırır. GetValue'yi aynı görev dizisi adıyla bir sonraki çağırışınızda, yöntemi bunu görev dizisinden almaya çalışır.

HRESULT SuppressLogValue([in] LPCTSTR variableName)

UDI Sihirbazı'nda Son'u seçtiğinizde olduğu gibi görev dizisi değişkenleri her yazıldığında, adlar ve değerler günlük dosyasına yazılır. Belirli bir görev dizisi değişkeni için parolalar veya PIN'ler gibi hassas değerlerin günlüğe kaydedilmesini engellemek için bu yöntemi çağırın.

void Save(void)

Bu yöntem , SetValue çağrılarıyla ayarlanmış tüm görev dizisi değerlerini kaydeder.

ITSVariableRepository Arabirimi

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

Bu arabirim, görev dizisi değişkenlerini okumak ve yazmak için TSVariableBag tarafından iç kullanıma yöneliktir.

IWizardFinish Arabirimi

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

Bu arabirim, UDI Sihirbazı'nda Son veya İptal'i seçtiğinizde ek işlem gerçekleştirmek istediğiniz gelişmiş senaryolarda kullanışlıdır. UDI Sihirbazı, Son'u seçtiğinizde görev dizisi değişkenlerini kaydeden bir Son görevi içerir. Sihirbazı iptal ederseniz, görev yalnızca OSDSetupWizCancelled görev dizisi değişkenini TRUE olarak ayarlar ve diğer görev dizisi değişkenlerindeki değişiklikleri kaydetmez.

Kendi bitiş bileşeninizi oluşturursanız, bunu aşağıdaki gibi bir kodla kaydetmeniz gerekir:

Register<MyFinishTaskFactory>(ID_MyFinishTask, pRegistry);

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

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

pService->Register(pFinish);

IBindableList Arabirimi

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

Bağlama yöntemini çağırarak birleşik giriş kutusuna bağlamak istediğiniz bir veri kaynağı bileşeniniz varsa bu arabirimi uygulayın.

size_t Sayısı (geçersiz)

Bu yöntem listedeki öğelerin sayısını döndürür.

HRESULT GetCaption(size_t dizini, LPBSTR pCaption)

Bu yöntem, öğenin belirli bir dizindeki başlık döndürür.

IDataNodes Arabirimi

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

Bu arabirim, bir sayfaya kaydedilebilen hiyerarşik verilere erişim sağlar. Bu arabirimi, Ayarlar yöntemi aracılığıyla sayfanızda kullanılabilen ISettingsProperties arabirimindeki yöntemler aracılığıyla alırsınız.

Sayfanın XML'sindeki veriler şuna benzer olabilir

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

Settings()->GetDataNode(L"Network", &pData) çağrısı size iki veri öğesi içeren bir IDataNodes örneği verir (her biri sırayla iki özelliğe sahiptir).

size_t Count()

Bu yöntem DataItem öğelerinin sayısını döndürür.

HRESULT SetCaptionProperty(LPCTSTR captionProperty)

Bu arabirimi destekleyen bileşen ayrıca IBindableList'i de destekler ve bu da birleşik giriş kutusunu sayfanın XML'sinden alınan verilerle doldurmayı kolaylaştırır. Bu yöntem, bu bağlama için her DataItem öğesinde hangi özelliğin (setter) kullanılacağını denetler. Örneğin, bu yöntemi DisplayName ile çağırabilirsiniz ve veri bağlama için bu ayarlayıcı özelliğini kullanır. Birleşik giriş kutusu daha sonra genel ve geliştirme ekibi öğelerini içerir.

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

Bu yöntem DataItem öğelerinden birinden bir özellik alır. Bkz. Tablo 41 ve Tablo 42.

Tablo 41. DataItem GetProperty

Parametre Açıklama
Dizin Özellik değerini almak istediğiniz DataItem'in dizin değeri (0 ile başlayarak)
Propertyname Değer almak istediğiniz ayarlayıcı özelliğinin adı
Propertyvalue Dönüşte, bir özelliğin dize değerini içerir

Tablo 42. HRESULT GetProperty

HRESULT Açıklama
S_OK özelliği alındı.
E_INVALIDARG Dizin, dizinin sonunu geçmiştir.
HRESULT GetNode(size_t index, [out] ISettingsProperties **ppNode)

Bu yöntem GetProperty'ye benzer, ancak DataItem'den bir değer döndürmek yerine, bir ISettingsProperties arabiriminde sarmalanmış DataItem'in tamamını döndürür. Bkz. Tablo 43 ve Tablo 44.

Tablo 43. HRESULT GetNode

Parametre Açıklama
Dizin Özellik değerini almak istediğiniz DataItem'in dizin değeri (0 ile başlayarak)
ppNode Çıkışta, DataItem düğümünü sarmalayan ISettingsProperties arabirimi

Tablo 44. HRESULT GetNode Sonuçları

HRESULT Açıklama
S_OK Düğüm alındı.
E_INVALIDARG Dizin, dizinin sonunu geçmiştir.

IFactoryRegistry Arabirimi

__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);
};
Genel Bakış

Yeni bir özel sayfa oluşturduğunuzda, en azından IClassFactory uygulayan bir sınıf olan bir sayfa fabrikası oluşturmanız gerekir. ( ClassFactoryImpl'i fabrikanız için temel sınıf olarak kullanabilirsiniz.)

void Register(LPCTSTR türü, IClassFactory *pFactory)

Bu yöntem, bir sınıf fabrikasını kayıt defterine kaydeder. Bkz. Tablo 45.

Tablo 45. IClassFactory void Register

Parametre Açıklama
Tür Kaydettiğiniz fabrikayı tanımlayan bir dize; genellikle bu parametrenin benzersiz olduğundan emin olmak için dizede şirketinizin adı olmalıdır
pFactory Sınıf fabrikası örneğinize bir işaretçi
HRESULT LoadAndRegister(LPCTSTR dllName, ILogger *pLogger)

Bu yöntem yalnızca iç kullanım içindir.

BOOL Contains(LPCTSTR türü)

Bu yöntem genellikle iç kullanım içindir. Bir sınıf fabrikasının bir tür için kaydedilip kaydedilmediğini denetler.

HRESULT GetFactory(LPCTSTR türü, IClassFactory **ppFactory)

Bu yöntem, sınıf fabrikasını almanıza olanak tanır. Genellikle CreateInstance'ı çağırırsınız. Ancak, aynı bileşenin büyük bir kısmını oluşturacaksanız, fabrikayı almak ve ardından örnekleri sizin için oluşturmasını istemek daha verimlidir.

HRESULT CreateInstance(LPCTSTR türü, IUnknown **ppInstance)

Bu yöntem, türüne göre bir bileşenin yeni bir örneğini oluşturur. Bunun yerine tür güvenli nesne oluşturmaya izin veren CreateInstance şablon yöntemini kullanın.

HRESULT SetContainer(IWizardPageContainer *pContainer)

Bu yöntem yalnızca iç kullanım içindir.

HRESULT RegisterService(REFGUID iid, IUnknown *pService)

Hizmetler , bir bileşenin birden çok yerde kullanılabilen tek örnekleridir. Bir hizmeti bir sayfaya kaydetmek ve sonra aynı örneği başka bir sayfadan almak için bu yöntemi kullanabilirsiniz.

HRESULT GetService(REFGUID iid, IUnknown **ppService)

Bu yöntem, daha önce RegisterService çağrısıyla kaydedilmiş bir hizmeti alır.

HRESULT SetLanguage(LANGID languageId)

Bu yöntem, UDI Sihirbazı'nın dilini languageId parametresinde sağladığınız dil tanımlayıcısına ayarlar.

LANGID GetLanguage()

Bu yöntem, UDI Sihirbazı için /locale komut satırı parametresiyle sağladığınız dil tanımlayıcısının değerini döndürür. yöntemi aşağıdaki değerlerden birini döndürür:

  • /locale komut satırı parametresiyle sağlanan dil tanımlayıcısının değeri

  • 0, /locale komut satırı parametresini sağlamadıysanız

ILogger Arabirimi

__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);
};
Genel Bakış

UDI Sihirbazı bilgileri bir günlük dosyasına kaydeder ve bu da alanda bulunan sorunları gidermeye yardımcı olur. Sayfalarınızın bilgileri günlüğe kaydetmesi iyi bir fikirdir. Sayfanın Logger() yöntemini kullanarak sayfanızın içinden bu arabirime bir işaretçi alabilirsiniz. Günlük dosyasındaki satırlar hata, normal, ayrıntılı veya hata ayıklama iletilerini temsil eden bir "düzey" numarası içerir.

Not

Hata ayıklama desteği açılmadığı sürece hata ayıklama iletileri günlük dosyasına kaydedilmez. .config dosyasındaki Style öğesine aşağıdaki satırı ekleyerek hata ayıklama desteğini açabilirsiniz:

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

Bu yöntem yalnızca iç kullanım içindir.

MoveLog
HRESULT MoveLog(LPCWSTR logFilename)

Bu yöntem yalnızca iç kullanım içindir.

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

Bu yöntem yalnızca iç kullanım içindir.

Günlük
HRESULT Log(EMessageType messageType, LPCTSTR component, LPCTSTR message)

Bu yöntem yalnızca iç kullanım içindir.

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

Hata hakkındaki bilgileri günlüğe kaydetmek için bu yöntemi çağır. Bkz. Tablo 46.

Tablo 46. HRESULT Hatası

Parametre Açıklama
Hata Bir çağrı tarafından döndürülen hata kodu (Bu kod günlük girdisinde numara olarak görüntülenir.)
Bileşen Genellikle sayfanız veya yazdığınız bileşen olan hatanın kaynağını tanımlayan dize
İleti Hataya neyin neden olduğunu açıklayan ileti
Hata2
HRESULT Error2(HRESULT error, LPCTSTR component, LPCTSTR message, LPCTSTR message2)

Bu yöntem Error yöntemine benzer ancak iki bölümlü bir ileti sağlamanıza olanak tanır. Son iletinin çıktı dosyasında "ileti" ve ardından "message2" bulunur. Bu basit bir kolaylık yöntemidir.

Normal
HRESULT Normal(LPCTSTR component, LPCTSTR message)

Bu yöntem normal bir iletiyi günlüğe kaydeder. Parametreler için Error yönteminin açıklamasına bakın.

Normal2
HRESULT Normal2(LPCTSTR component, LPCTSTR message, LPCTSTR message2)

Bu yöntem normal bir iletiyi günlüğe kaydeder. Parametreler için Error2 yönteminin açıklamasına bakın.

Ayrıntılı
HRESULT Verbose(LPCTSTR component, LPCTSTR message)

Bu yöntem ayrıntılı bir iletiyi günlüğe kaydeder. Parametreler için Error yönteminin açıklamasına bakın.

Ayrıntılı2
HRESULT Verbose2(LPCTSTR component, LPCTSTR message, LPCTSTR message2)

Bu yöntem ayrıntılı bir iletiyi günlüğe kaydeder. Parametreler için Error2 yönteminin açıklamasına bakın.

Hata ayıklama
HRESULT Debug(LPCWSTR component, LPCWSTR message)

Bu yöntem hata ayıklama iletisini günlüğe kaydeder. Parametreler için Error yönteminin açıklamasına bakın. Hata ayıklama iletileri etkinleştirilmediği sürece dosyaya kaydedilmez. Ayrıntılar için Genel Bakış bölümüne bakın.

EnableDebug
HRESULT EnableDebug(BOOL debug)

Bu yöntem yalnızca iç kullanım içindir.

Yakın
HRESULT Close(void)

Bu yöntem yalnızca iç kullanım içindir.

GetLogFilename
HRESULT GetLogFilename(LPBSTR pFilename)

Bu yöntem günlük dosyasının adını alır.

IOrientation Arabirimi

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

Bu arabirim yalnızca iç kullanım içindir.

ISettings Arabirimi

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

Bu arabirim yalnızca iç kullanım içindir.

ISettingsProperties Arabirimi

__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);
};
Genel bakış

Bu arabirim, sayfa verilerine erişim sağlar. Sayfa verilerinin en üst düzeyine ulaşmak için sayfanın Settings() yöntemini kullanın.

HRESULT GetAttribute(LPCTSTR attributeName, LPBSTR attributeValue)

Bu yöntem, sayfanın Settings() yöntemini kullanırken Sayfa düğümü olan ana düğümdeki özniteliklerin değerlerini almanıza olanak tanır.

IStringProperties * Properties()

Bu yöntem, ana düğüm altındaki ayarlayıcı özellik değerlerine erişim sağlar. Bir sayfa için bunlar en üst düzey özelliklerdir.

HRESULT SelectNodes(LPCTSTR xPath, IXMLDOMNodeList **ppList)

XPath ifadesi kullanarak XML düğümlerinin listesini doğrudan almak istiyorsanız bu yöntemi çağırın. Yapabilirseniz diğer yöntemlerden birini kullanmak daha iyidir. Bu yöntemi yalnızca düğümlere başka bir yolla ulaşamıyorsanız kullanın.

HRESULT SelectSingleNode(LPCTSTR xPath, IXMLDOMNode **ppNode)

XPath ifadesi kullanarak doğrudan tek bir XML düğümü almak istiyorsanız bu yöntemi çağırabilirsiniz. Yapabilirseniz diğer yöntemlerden birini kullanmak daha iyidir. Bu yöntemi yalnızca düğüme başka bir yolla ulaşamıyorsanız kullanın.

HRESULT GetDataNode(LPCTSTR adı, ISettingsProperties **ppNode)

Bu öğenin Name özniteliğini temel alan bir Data öğesi alın.

HRESULT GetDataNodes(IDataNodes **ppNodes)

Bu yöntem, geçerli düğüm altındaki DataItem öğelerinin listesini alır. Veriler için ISettingsProperty arabirimini almak için sayfa düzeyinde GetDataNode'u çağırın. Ardından, kayıt listesini almak için bu örnekte GetDataNodes'ı çağırın. Örneğin, şu XML'i göz önünde bulundurarak:

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

Bu yöntem, belirli bir Veri düğümü altında DataItem düğümleri kümesine ulaşmak için hızlı bir yol sağlar. GetDataNodes örneğindeki XML'yi kullanarak aşağıdaki kod, GetDataNodes altındaki örnekteki dört kod satırıyla tam olarak aynı işlemi yapar ancak hata denetimi yapar:

ISimpleStringProperties Interface

ISimpleStringProperties Arabirimi

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

Bu arabirim tek başına yararlı olmayabilir. Ancak, IStringProperties arabirimini de uygulayan ID_SimpleStringProperties bileşeni tarafından uygulanır. Bu bileşeni, bir dizi özelliği görev gibi başka bir bileşene geçirmeniz gerektiğinde, ancak XML'den değerleri kullanmak yerine program aracılığıyla değer eklemek istediğiniz durumlarda kullanabilirsiniz. Bu arabirimi nasıl kullanacağınıza yönelik bir örnek aşağıda verilmiştir:

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

Bu arabirim, XML'den gelen bir dizi ayarlayıcı öğesine basit erişim sağlar. Bu arabirim , Ayarlar()->Özellikler() kullanılarak bir sayfanın özellikleri için kullanılabilir.

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

Bu yöntem tek bir özellik değeri alır. Bkz. Tablo 47 ve Tablo 48.

Tablo 47. IHRESULT Get Özellik Değeri

Parametre Açıklama
Propertyname Okumak istediğiniz özelliğin adı
pPropValue Çıkışta, özellik değerini dize olarak içerir (Böyle bir özellik yoksa bu değer nullptr olur.)

Tablo 48. IHRESULT Özellik Değeri Sonuçlarını Alma

HRESULT Açıklama
S_OK Özellik değeri alınır.
E_INVALIDARG Sağladığınız ada sahip bir özellik yok.

ITaskManager Arabirimi

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

Bu arabirim, denetim öncesi sayfasında görevleri çalıştıran bileşen olan TaskManager bileşeni (ITaskManager.h'de ID_TaskManager ) tarafından uygulanır. Denetim öncesi sayfasını doğrudan kullanabilirsiniz( çoğu zaman yaptığınız şey budur) veya bu bileşenin işin çoğunu yapmasına izin vererek kendi sayfanızı oluşturabilirsiniz.

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

Başka bir yöntemi çağırmadan önce bu yöntemi çağırmalısınız. TaskManager bileşenini başlatır. Bkz. Tablo 49.

Tablo 49. HRESULT Başlatma

Parametre Açıklama
pPageView Görevleri çalıştıracak sayfaya erişim sağlar (Bu sayfa, sonraki birkaç parametrede özetlenen belirli bir denetim kümesine sahip olmalıdır.)
idListView Görevlerin listesini ve bu görevlerin durumunu görüntüleyen ListView denetiminin denetim kimliği
idMessage Seçtiğiniz görevin iletisini görüntülemek için kullanılacak metin kutusunun denetim kimliği
idRetryButton Görevleri yeniden çalıştırmak için seçebileceğiniz düğmenin denetim kimliği
pPageInfo Sayfanın XML'sinin etrafındaki bir sarmalayıcı (TaskManager , bu XML'den çalıştırılacak görev kümesini yükler.)
pCallback Null olabilir (Bu parametre null değilse, TaskManager bir görevi başlattığında Started yöntemini ve çalıştırmayı tamamlayan her görev için Bitti yöntemini çağırır.)
HRESULT SetFailMessage(LPCWSTR iletisi)

Bu yöntem, bir veya daha fazla görev başarısız olursa görüntülenecek iletiyi ayarlar.

HRESULT Başlangıç(geçersiz)

Bu yöntem tüm görevleri başlatır. Her görev ayrı bir iş parçacığında başlatılır.

HRESULT GetTaskMessage(size_t dizini, LPBSTR iletisi)

Bu yöntem yalnızca iç kullanım içindir. Görev listesindeki dizinine göre görev için geçerli iletiyi alır.

HRESULT GetResultType)(size_t dizini, LPBSTR türü)

Bu yöntem bir görevin geçerli "türünü" alır. Tablo 50 kullanılabilir türleri gösterir.

Tablo 50. HRESULT GetResultType

Tür Açıklama
0 Başarılı olan bir görevi temsil eder
1 Uyarı döndüren görevleri temsil eder
-1 Başarısız bir görevi temsil eder

Tür, görevin çıkış veya hata koduna bakılarak ve görevin ExitCodes> XML öğesinde <bir eşleşme bulunarak alınır.

HRESULT GetProperty(size_t dizini, LPCTSTR propertyName, LPBSTR değeri)

Bu yöntem, vurguladığınız görevin iletisinin yanında bir görüntü görüntüleyebilmesi için BitmapFilename ayarlayıcı özelliğini almak için ilerleme durumu ve denetim öncesi sayfaları tarafından kullanılır. Başka bir deyişle, görevin XML'sine özel bir ayarlayıcı ekleyebilir ve ardından bu yöntemle alabilirsiniz.

int GetSelectedIndex(void)

Bu yöntem, seçili görev için görüntülenecek görev hakkında ek bilgi almak istiyorsanız (bkz. GetProperty yöntemi) yararlı olan seçili görevin dizinini alır. İlerleme durumu ve denetim öncesi sayfaları, seçili görevin görüntüsünü görüntülemek için bu yöntemi kullanır.

HRESULT Wait(DWORD waitMilliseconds)

Bu yöntem temel olarak birim testlerine yardımcı olur, böylece test, birim testi çıkmadan önce görevlerin tamamlanmasını sağlayabilir. Normalde bu yöntemi çağırmazsınız. Tüm görevlerin çalışması tamamlandığında veya bekleme süresi geçtiğinde döndürür.

size_t FailedCount(geçersiz)

Bu yöntem, şu anda başarısız olarak işaretlenen görevlerin sayısını döndürür.

size_t WarningCount(geçersiz)

Bu yöntem, şu anda uyarı olarak işaretlenen görevlerin sayısını döndürür.

size_t SucceedCount(void)

Bu yöntem, şu anda başarılı olarak işaretlenen görevlerin sayısını döndürür.

size_t RunningCount(void)

Bu yöntem, çalışmakta olan görevlerin sayısını döndürür.

void OnCommonControlEvent(WORD controlId, LPNMHDR pInfo)

TaskManager'ın ihtiyaç duyduğu olayları işleyebilmesi için sayfanızın OnCommonControlEvent sayfasından bu yöntemi çağırın.

void OnControlEvent(WORD eventId, WORD controlId)

TaskManager'ın ihtiyaç duyduğu olayları işleyebilmesi için sayfanızın OnControlEvent sayfasından bu yöntemi çağırın.

void EnableButtons(BOOL etkinleştirme)

Bu yöntem yalnızca iç kullanım içindir.

IWizardComponent Arabirimi

__interface IWizardComponent : IUnknown
{
    HRESULT SetContainer(IWizardPageContainer *pContainer);
};
Genel Bakış

Genellikle, bu arabirimi doğrudan değil, WizardComponent şablon sınıfı aracılığıyla uygularsınız. Bileşeniniz bu arabirimi uyguluyorsa ve kayıt defterine bir sınıf fabrikası kaydettiyseniz, bileşeniniz oluşturulduğunda IWizardPageContainer örneğine yönelik bir işaretçi alır. Bu, örneğin, bileşeninizin ihtiyaç duyabileceği diğer bileşenleri oluşturmak için günlükçüye veya kayıt defterine erişmenize yardımcı olur.

IWizardDialogController Arabirimi

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

Bu arabirim yalnızca iç kullanım içindir.

IWizardDialogView Arabirimi

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

Bu arabirim yalnızca iç kullanım içindir.

IWizardPage Arabirimi

__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);
};
Genel bakış

Bu arabirim WizardPageImpl tarafından uygulandığı için genellikle bunu kendiniz uygulamanız gerekmez. Sihirbaz, özel sayfalarınızla etkileşime geçtiğinde bu yöntemlerin tümünü sizin için çağırır.

IWizardPageContainer Arabirimi

__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);
};
Genel bakış

Bu arabirim, Container yöntemi ( WizardPageImpl tarafından uygulanır) aracılığıyla sayfanızda kullanılabilir ve sihirbazın çeşitli hizmetlerine erişmenizi sağlar.

ILogger * Günlükçü(geçersiz)

Günlük dosyasına ileti yazmak için bu yöntemi kullanın; örneğin:

Logger()->Verbose(s_component, L"Message for log file");
IPropertyBag * Özellikler (geçersiz)

Bu yöntem, yalnızca UDI Sihirbazı çalışırken bellekte bulunan özellikler olan "bellek" değişkenlerine erişim sağlar. Bu özellikler, $memoryVarName$ söz dizimi kullanılarak koddaki veya XML'deki diğer sayfalar tarafından kullanılabilir.

HRESULT CreateInstance(LPCTSTR türü, [out] IUnknown **ppInstance)

Bu yöntem, kaydedilmiş herhangi bir bileşenin yeni bir örneğini oluşturmanıza olanak tanır. Ancak, kesin olarak yazıldığı için CreateInstance şablon işlevini kullanmak daha iyidir.

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

Bu yöntem, kayıtlı bir hizmeti almanıza olanak tanır. Ancak, kesin olarak yazılan GetService şablon işlevini çağırmak daha iyidir ( IUnknown kullanmak yerine).

HRESULT ReplaceVariables(LPCTSTR kaynağı, [out] LPBSTR pDest)

Bu yöntem, dize değerlerinin içindeki değişkenlerle çalışmayı işler. Tablo 51 ve Tablo 52'de gösterilen biçimleri destekler.

Tablo 51. HRESULT ReplaceVariables

Biçim Açıklama
$Name$ Bir bellek değişkeninin değerini bu adla değiştirir (Adıyla bir bellek değişkeni yoksa, "belirteç" kaldırılır.)
%Ad% Bir görev dizisi değişkeni veya ortam değişkeni. Sipariş aşağıdaki gibidir:

1. Varsa, görev dizisi değişkeninin değerini kullanın.
2. Varsa ortam değişkeninin değerini kullanın.
3. Aksi takdirde, bu metni dizeden kaldırın.

Tablo 52. HRESULT Parametresi

Parametre Açıklama
Kaynak Ve değişkenlerinin $% herhangi bir bileşimini içerebilen veya hiç içermeyen giriş dizesi
pDest Sonuç olarak, tüm belirteçlerin Tablo 51'e göre değiştirildiğini içeren yeni bir dize içerir
HRESULT GotoPage(LPCTSTR pageName)

Bu yöntem tam olarak test edilmedi. Fikir, .config XML dosyasında tanımlandığı gibi sayfanın adına göre doğrudan belirli bir sayfaya geçebilmenizdir. Bu yöntemin çağrılması, sayfanızda OnNextSelected öğesini atlar. Buna ek olarak, bu yöntemin davranışı değiştirilebilir, bu nedenle kendi riski altında kullanın.

int ShowMessageBox(LPCTSTR iletisi, LPCTSTR lpCaption, UINT uType)

Bu yöntem, sağladığınız metin ve başlık içeren bir ileti kutusu görüntüler. uType parametresi, MessageBox Win32 işlevine sağlayabildiğiniz herhangi bir değerdir.

BOOL InPreview(void)

Sihirbazı /preview anahtarını sağlayarak "önizleme" modunda başlattıysanız bu yöntem TRUE döndürür. Önizleme modunda İleri düğmesi hiçbir zaman devre dışı bırakılmaz. Bu yöntem, önizleme modunda kodu atlamanıza olanak tanır; örneğin, sayfada geçerli verileriniz olmadığında sorunlara neden olabilir.

HWND GetHwnd(void)

Bu yöntem, ana iletişim kutusu için HWND döndürür. Bu yöntemi dikkatli kullanın. Genellikle UDI Sihirbazı uygulama programlama arabirimi, pencere tutamaçlarıyla doğrudan çalışmamanızı sağlamak için tasarlanmıştır.

IWizardPageView Arabirimi

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

Bu arabirim, sayfanızdaki kod için View yöntemi ( WizardPageImpl tarafından uygulanır) aracılığıyla kullanılabilir.

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

UDI Sihirbazı, sayfanızdaki denetimlerle etkileşim için gerçekten cephe olan sarmalayıcıları kullanır. Gerçek denetimler yerine bu cephelerin kullanılması, testlerinizin sahte cephelerini sağlayabildiğiniz için sayfanız için test yazmayı çok daha kolay hale getirir.

Bu yöntemi doğrudan kullanmak yerine, kesin olarak yazılan GetControlWrapper şablon yöntemini kullanmak daha iyidir; örneğin:

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

Bu yöntem, sayfanızın pencere tutamacını döndürür. Genel olarak, bu pencere tutamacına erişmeniz gerekmez.

HWND GetControl(int itemId)

Gerekirse, sayfanızdaki bir denetimin pencere tutamacını almak için bu yöntemi çağırabilirsiniz. ( GetControlWrapper şablon işlevini çağırmak daha iyidir).

HRESULT Gösterisi (geçersiz)

Bu yöntem yalnızca iç kullanım içindir.

HRESULT Gizle(geçersiz)

Bu yöntem yalnızca iç kullanım içindir.

HRESULT Focus(int itemId)

Giriş odağını belirli bir denetime ayarlayın.

IWizardPage * Page(void)

Bu yöntem yalnızca iç kullanım içindir.

IFormController * Form(void)

Bu yöntem yalnızca iç kullanım içindir.

HRESULT FocusWizardButton(WizardButtons düğmesi)

Odağı sihirbazın düğmelerinden birine ayarlar. WizardButtons iki değere sahiptir: BackButton ve NextButton.

HRESULT SetEnable(WizardButtons düğmesi, BOOL etkinleştirme)

Sihirbaz düğmelerinden birinin etkinleştirilmesini veya devre dışı bırakıldığını isteyin. Düğme, istediğiniz durumla eşleşmeyebilir. Örneğin, UDI Sihirbazı'nı /preview anahtarıyla çalıştırırsanız düğmeler her zaman etkinleştirilir. WizardButtons iki değere sahiptir: BackButton ve NextButton.

void ShowWarningMessage(LPCTSTR iletisi)

Bu yöntem, sayfa içerik alanının en altında bir uyarı iletisi görüntüler. Bu ileti istediğiniz herhangi bir metin olabilir.

void HideWarningMessage(void)

ShowWarningMessage çağrısıyla görüntülediğiniz uyarı iletisini gizleyin.

IXmlDocument Arabirimi

__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);
};
Genel bakış

Bu arabirim, C++ dilinde XML belgeleriyle çalışmayı kolaylaştırmak için tasarlanmış bir cephe olan ID_IXmlDocument bileşeni tarafından uygulanır.

HRESULT Load(LPCTSTR dosya adı)

Bu yöntem, dış dosyadan bir XML belgesi yükler. Dosyanın hatasız yüklenip yüklenmediğini S_OK veya hata oluşup oluşmadığını S_FALSE döndürür. Bir hata olduğunda , GetParseErrorMessage'ı çağırarak hata iletisini alabilirsiniz.

HRESULT LoadXml(LPCTSTR xml)

Bu yöntem, dış dosya yerine dizeden xml belgesi yükler. XML'yi okuma kaynağı dışında, davranış Load yöntemiyle aynıdır.

HRESULT Save(LPCWSTR dosya adı)

Bu yöntem bellekteki XML belgesini bir dış dosyaya kaydeder.

HRESULT GetParseErrorMessage(LPBSTR pMessage)

Bu yöntem, varsa XML belgesini yükleme hata iletisini içeren yeni bir dize döndürür. Her zaman S_OK döndürür.

HRESULT SelectNodes(LPCTSTR xpath, IXMLDOMNodeList **ppNodes)

Bu yöntem, belgeden bir düğüm koleksiyonu almak için bir XPath ifadesi kullanmanıza olanak tanır. Her zaman S_OK döndürür.

HRESULT SelectSingleNode(LPCTSTR xpath, IXMLDOMNode **ppNode)

Bu yöntem, belgeden bir düğüm almak için bir XPath ifadesi kullanmanıza olanak tanır. Her zaman S_OK döndürür.

HRESULT AddSchema(LPCTSTR dosya adı, LPCTSTR ns)

Bu yöntem, yüklendiğinde XML belgenizin şemasını doğrulamak için kullanılacak bir dış şema dosyasının adını ekler. Sağladığınız ad alanı, XPath sorgularında kullanabileceğiniz dizedir, ancak bu test edilmemiştir.

HRESULT AddAttribute(IXMLDOMNode *pNode, LPCWSTR adı, LPCWSTR değeri)

Bu yöntem, XML belgesindeki mevcut bir düğüme yeni bir öznitelik ekler. Bkz. Tablo 53.

Tablo 53. HRESULT AddAttribute

Parametre Açıklama
pNode Öznitelik eklemek istediğiniz düğüm
Ad Yeni özniteliğin adı
Değer Yeni özniteliğin değeri
HRESULT CreateNode(DOMNodeType türü, LPCWSTR adı, LPCWSTR ns, IXMLDOMNode **ppNode)

Yeni bir düğüm oluşturmak için bu yöntemi çağır:

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

Yeni bir düğüm oluşturduktan sonra, üst düğümün appendChild yöntemini çağırarak bunu başka bir düğüme alt düğüm olarak ekleyebilirsiniz.

Yardımcı İşlevleri

CreateInstance Şablon İşlevi

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

Bu işlev IWizardPageContainer.h içinde tanımlanır ve IWizardPageContainer-CreateInstance> yöntemi üzerinden tür açısından güvenli bir sarmalayıcı sağlar; örneğin:

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

Bu kod, bu bileşenin IDirectory arabirimini almak için yeni bir ID_Directory bileşeni oluşturur.

GetService Şablon İşlevi

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

Bu işlev IWizardPageContainer.h içinde tanımlanır ve IWizardPageContainer-GetService> yöntemi üzerinden tür açısından güvenli bir sarmalayıcı sağlar; örneğin:

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

Bu işlev, ITSVariableBag arabirimini destekleyen görev dizisi bileşenini alır. ( ITSVariableBag için, bunun yerine WizardPageImpl sınıfının TSVariables yöntemini kullanabilirsiniz.)

UDI Sihirbazı Tasarım Aracı Yapılandırma Dosyası Şema Başvurusu

Bu dosya UDI Sihirbazı Tasarım Aracı tarafından tüketilir. Her özel .dll dosyası için özel sihirbaz sayfası düzenleyicileri, özel görevler veya özel doğrulayıcılar içerebilen ayrı bir dosya oluşturulur. Dosya .config ile bitmeli ve installation_folder\Bin\Config klasöründe bulunmalıdır (burada installation_folder , MDT'yi yüklediğiniz klasördür).

Tablo 54'te UDI Sihirbazı Tasarım Aracı yapılandırma dosyasındaki öğeler ve açıklamaları listelenmiştir. DesignerConfig öğesi, bu başvurunun kök düğümüdür.

Tablo 54. UDI Sihirbazı'ndaki Öğeler Tasarım Aracı Yapılandırma Dosyası ve Açıklamaları

Öğe Adı Açıklama
DesignerConfig Diğer tüm öğelerin kökünü belirtir
DesignerMappings Sayfaöğeleri kümesini gruplandırma
Sayfa Sihirbaz sayfasının yapılandırma ayarlarını düzenlemek için kullanılan UDI Sihirbazı Tasarım Aracı yüklenecek sihirbaz sayfası düzenleyicisini belirtir
Param Üst Görev veya Doğrulayıcı öğesine geçirilen ve UDI Sihirbazı yapılandırma dosyasındaki bir Setter öğesine karşılık gelen bir parametre belirtir Not: Üst öğe Task veya Validator öğesiyse bu öğenin öznitelikleri farklıdır.
Görev Görev kitaplığındaki bir görevi belirtir
Taskıtem Göreve geçirilen parametre grubunu belirtir
TaskLibrary Bir görev öğeleri kümesini gruplandırma
Doğrulayıcı Doğrulayıcı kitaplığı içinde bir doğrulayıcı belirtir
ValidatorLibrary Bir Dizi Doğrulayıcı öğesini gruplandırma

DesignerConfig

Bu öğe diğer tüm öğelerin kökünü belirtir.

Öğe Bilgileri

Tablo 55 , DesignerConfig öğesi hakkında bilgi sağlar.

Tablo 55. DesignerConfig Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Bir: Bu öğe gereklidir.
Üst öğeler Yok
İçindekiler DesignerMappings, TaskLibrary, ValidatorLibrary
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

Örnek
<DesignerConfig>
   + <TaskLibrary>
   + <ValidatorLibrary>
   + <DesignerMappings>
</DesignerConfig>

DesignerMappings

Bu öğe, bir Sayfa öğeleri kümesini gruplar.

Öğe Bilgileri

Tablo 56 , DesignerMappings öğesi hakkında bilgi sağlar.

Tablo 56. DesignerMappings Öğe Bilgileri

Öznitelik Değer
Oluşum sayısı DesignerConfig öğesi içinde sıfır veya bir (DLL'de bu UDI Sihirbazı Tasarım Aracı yapılandırma dosyasına karşılık gelen özel sihirbaz sayfası yoksa bu öğe isteğe bağlıdır.)
Üst öğeler DesignerConfig
İçindekiler Sayfa
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

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

Sayfa

Bu öğe, UDI Sihirbazı Tasarım Aracı yüklenecek sihirbaz sayfası düzenleyicisini belirtir ve bu da sihirbaz sayfasının yapılandırma ayarlarını düzenlemek için kullanılır.

Öğe Bilgileri

Tablo 57 , Page öğesi hakkında bilgi sağlar.

Tablo 57. Sayfa Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı DesignerMappings öğesinde tanımlanan her sihirbaz sayfası için bir veya daha fazla
Üst öğeler DesignerMappings
İçindekiler İyi biçimlendirilmiş XML içeriği
Öğe Öznitelikleri

Tablo 58'de Page öğesinin öznitelikleri ve her biri için bir açıklama listelenir.

Tablo 58. Sayfa Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Açıklama UDI Sihirbazı'nda görüntülenen parametre hakkında bilgi sağlayan metni belirtir Tasarım Aracı
DesignerAssembly Sihirbaz sayfası düzenleyicisiyle ilişkilendirilmiş .dll dosyasının adını belirtir (.dll dosyası installation_folder\Bin klasöründe bulunmalıdır (burada installation_folder , MDT'yi yüklediğiniz klasördür).)
DesignerType DesignerAssembly özniteliğinde belirtilen .dll dosyasında sihirbaz sayfası düzenleyicisinin adını belirtir (Bu, tam Microsoft .NET ad alanıyla sihirbaz sayfası düzenleyicisi için Microsoft .NET türüdür.)
Displayname UDI Sihirbazı'nda görüntülenen sayfa düzenleyicisinin kolay adını belirtir Tasarım Aracı
DLL Sihirbaz sayfasıyla ilişkilendirilmiş .dll dosyasının adını belirtir (.dll dosyası installation_folder\Templates\Distribution\Tools\platform klasöründe bulunmalıdır (burada installation_folder MDT'yi yüklediğiniz klasördür ve platform 32 bit sürüm için x86 , 64 bit sürüm için ise x64'tür .) Not: DLL işlemci mimarisinin yüklü MDT işlemci mimarisiyle eşleştiğinden emin olun. Örneğin, MDT'nin 32 bit sürümünü yüklediyseniz sihirbaz sayfası için 32 bit DLL kullandığınızdan emin olun.
Görüntü Taşınabilir Ağ Grafikleri (PNG) biçimindeki sayfanın görüntüsünün adını belirtir (.png dosyası installation_folder\Bin\Images klasöründe bulunmalıdır (burada installation_folder MDT'yi yüklediğiniz klasördür.)
Tür Sihirbaz sayfası düzenleyicisini belirtir ve özel sayfa kaydedilirken kullanılan adlandırılmışla eşleşmelidir
Açıklamalar

UDI Sihirbazı Tasarım Aracı, yeni bir sihirbaz için ilk XML'yi oluşturmak için şablon gibi Page öğesini kullanır. UDI Sihirbazı Tasarım Aracı, Sayfa ve alt öğelerin geçerli bir biçime sahip olduğundan emin olmak için şema doğrulaması gerçekleştirir. Bu öğe, UDI Sihirbazı sayfa türü ile UDI Sihirbazı'nın Tasarım Aracı özel bir sayfa düzenleyicisi kullanarak bu tür sayfaları düzenlemek ve oluşturmak için ihtiyaç duyduğu bilgiler arasında bir eşleme sağlar.

Örnek

Hiçbiri.

Param

Bu öğe, üst Görev veya Doğrulayıcı öğesine geçirilen ve UDI Sihirbazı yapılandırma dosyasındaki bir Setter öğesine karşılık gelen bir parametre belirtir.

Not

Üst öğe Task veya Validator öğesiyse, bu öğenin öznitelikleri farklıdır.

Öğe Bilgileri

Tablo 59 , Param öğesi hakkında bilgi sağlar.

Tablo 59. Param Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her TaskItem veya Validator üst öğesi için bir veya daha fazla
Üst öğeler TaskItem, Validator
İçindekiler İyi biçimlendirilmiş XML içeriği
Öğe Öznitelikleri

Tablo 60 , Param öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 60. Param Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Açıklama UDI Sihirbazı'nda görüntülenen parametre hakkında bilgi sağlayan metni belirtir Tasarım Aracı Not: Bu öznitelik yalnızca Validator öğesi için geçerlidir.
Displayname UDI Sihirbazı Tasarım Aracı uygun UDI Sihirbazı sayfası için görüntülenen doğrulayıcı parametresinin kullanıcı dostu adını belirtir (Bu ad genellikle Name özniteliğinden daha açıklayıcıdır.) Not: Bu öznitelik yalnızca Validator öğesi için geçerlidir.
Ad Üst öğeye bağlı olarak göreve veya doğrulayıcıya geçirilen parametrenin adını belirtir (Bu öznitelik, UDI Sihirbazı yapılandırma dosyasındaki bir Setter öğesinde Property özniteliği olur.) Not: Bu parametre hem TaskItem hem de Validator üst öğeleri için kullanılır.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Görev

Bu öğe, görev kitaplığındaki bir görevi belirtir.

Öğe Bilgileri

Tablo 61 , Task öğesi hakkında bilgi sağlar.

Tablo 61. Görev Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı TaskLibrary öğesi içinde bir veya daha fazla (TaskLibrary öğesi belirtilirse bu öğe isteğe bağlı değildir.)
Üst öğeler TaskLibrary
İçindekiler Taskıtem
Öğe Öznitelikleri

Tablo 62,Task öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 62. Görev Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Açıklama UDI Sihirbazı'nda görüntülenen görev hakkında bilgi sağlayan metni belirtir Tasarım Aracı
DLL Görevle ilişkilendirilmiş .dll dosyasının adını belirtir (.dll dosyası installation_folder\Templates\Distribution\Tools\platform klasöründe bulunmalıdır (burada installation_folder MDT'yi yüklediğiniz klasördür ve platform 32 bit sürümü için x86 , 64 bit sürümü için x64'tür .)
Ad Uygun UDI Sihirbazı sayfasında ve UDI Sihirbazı Tasarım Aracı görüntülenen görevin adını belirtir
Tür Fabrika kayıt defterine kaydedilen ve bir .dll dosyasındaki belirli bir görevi çağırmak için kullanılan görev türünü belirtir
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Taskıtem

Bu öğe, göreve geçirilen bir parametre grubunu belirtir.

Öğe Bilgileri

Tablo 63 , TaskItem öğesi hakkında bilgi sağlar.

Tablo 63. TaskItem Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her Görev öğesi için bir veya daha fazla
Üst öğeler Görev
İçindekiler Param
Öğe Öznitelikleri

Tablo 64 , TaskItem öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 64. TaskItem Öğesi için Öznitelik ve Karşılık Gelen Değerler

Öznitelik Açıklama
Tür UDI Sihirbazı yapılandırma dosyasında oluşturulacak öğe türünü belirtir. Bu özniteliğin değerine karşılık gelen bir XML öğesi oluşturulur. Örneğin, bu özniteliğin değeri Dosya ise, UDI Sihirbazı yapılandırma dosyasında bir Dosya öğesi oluşturulur.

Şu anda desteklenen tek değerler şunlardır:

- İkiParam alt öğesi gerektiren dosya (Name özniteliği Source olarak ayarlanmış bir Param alt öğesi ve Name özniteliği Dest olarak ayarlanmış başka bir Param alt öğesi)
- Bir Param alt öğesi gerektiren Ayarlayıcı
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

TaskLibrary

Bu öğe, bir görev öğeleri kümesini gruplar.

Öğe Bilgileri

Tablo 65 , TaskLibrary öğesi hakkında bilgi sağlar.

Tablo 65. TaskLibrary Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı DesignerConfig öğesi içinde sıfır veya bir (DLL'de bu UDI Sihirbazı Tasarım Aracı yapılandırma dosyasına karşılık gelen özel görevler yoksa bu öğe isteğe bağlıdır.)
Üst öğeler DesignerConfig
İçindekiler Görev
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

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

Doğrulayıcı

Bu öğe, doğrulayıcı kitaplığı içinde bir doğrulayıcı belirtir.

Öğe Bilgileri

Tablo 66 , Validator öğesi hakkında bilgi sağlar.

Tablo 66. Validator Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı ValidatorLibrary öğesi içinde sıfır veya daha fazlası (Bu öğe isteğe bağlıdır.)
Üst öğeler ValidatorLibrary
İçindekiler Param
Öğe Öznitelikleri

Tablo 67 , Validator öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 67. Validator Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Açıklama UDI Sihirbazı'nda görüntülenen doğrulayıcı hakkında bilgi sağlayan metni belirtir Tasarım Aracı
Displayname UDI Sihirbazı Tasarım Aracı görüntülenen doğrulayıcının kullanıcı dostu adını belirtir (Bu ad genellikle Name özniteliğinden daha açıklayıcıdır.)
DLL Doğrulayıcıyla ilişkilendirilmiş .dll dosyasının adını belirtir (.dll dosyası installation_folder\Templates\Distribution\Tools\platform klasöründe bulunmalıdır (burada installation_folder MDT'yi yüklediğiniz klasördür ve platform 32 bit sürüm için x86 , 64 bit sürümü için x64'tür .)
Ad Uygun UDI Sihirbazı sayfasında ve UDI Sihirbazı Tasarım Aracı görüntülenen doğrulayıcının adını belirtir
Tür Kayıt defteri faktörüyle kaydedilen ve bir .dll dosyasında belirli bir doğrulayıcıyı çağırmak için kullanılan doğrulayıcı türünü belirtir
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

ValidatorLibrary

Bu öğe, bir dizi Validator öğesini gruplar.

Öğe Bilgileri

Tablo 68 , ValidatorLibrary öğesi hakkında bilgi sağlar.

Tablo 68. ValidatorLibrary Öğe Bilgileri

Öznitelik Değer
Oluşum sayısı DesignerConfig öğesi içinde sıfır veya bir (DLL'de bu UDI Sihirbazı Tasarım Aracı yapılandırma dosyasına karşılık gelen özel doğrulayıcı yoksa bu öğe isteğe bağlıdır.)
Üst öğeler DesignerConfig
İçindekiler Doğrulayıcı
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

Örnek

<DesignerConfig> + <TaskLibrary> - <ValidatorLibrary> +<Validator DLL="" Description="Alanda metin gerektirir" Type="Microsoft.Wizard.Validation.NonEmpty" Name="NonEmpty"> +<Validator DLL="" Description="Doesn'' belirli karakterlerin bir alanda olmasına izin verme" Type="Microsoft.Wizard.Validation.InvalidChars" Name="InvalidChars"> +<Validator DLL="" Description="Önceden tanımlanmış bir deseni izlemelidir" Type="Microsoft.Wizard.Validation.RegEx" Name=" NamedPattern"> +<Validator DLL="" Description="İçeriğin normal ifadeyle eşleşmesini iste" Type="Microsoft.Wizard.Validation.RegEx" Name="RegEx"></ValidatorLibrary> + <DesignerMappings></DesignerConfig>

UDI Sihirbazı Tasarım Aracı Başvurusu

Denetim

UDI Sihirbazı Tasarım Aracı kullanılmak üzere özel sihirbaz sayfası düzenleyicileri oluşturmak için kullanılan denetimler WPF UserControl örnekleridir. Tablo 69'da özel sihirbaz sayfası düzenleyicileri oluşturmak için kullanabileceğiniz denetimler listelenir.

Tablo 69. Özel Sihirbaz Sayfası Düzenleyicileri Oluşturmak için Kullanılabilecek Denetimler

Denetim Açıklama
CollectionTControl Bu denetim, Bir Page öğesi içindeki Data öğesinde depolanan verileri düzenlemek için kullanılır.
FieldElementControl Bu denetim, genellikle .xaml sayfasındaki bir TextBox denetimine bağlı olan bir alanı düzenlemek için kullanılır.
SetterControl Bu denetim, UDI Sihirbazı yapılandırma dosyasındaki bir ayarlayıcı öğesinin değerini değiştirmek için kullanılır.

CollectionTControl

Bu denetim, verileri düzenlemek için birçok özellik sağlar. Bu denetimi kullanmayı öğrenmenin en iyi yolu, bir sayfanın Data öğesi altında verilerin nasıl düzenlendiği gösteren örneğe bakmaktır. Özellikle örnekte, bu denetimdeki öğelerin nasıl ekleneceği, kaldırılacağı ve düzenleneceği gösterilmektedir.

FieldElementControl

Genellikle .xaml sayfasındaki bir TextBox denetimine bağlı olan bir alanı düzenlemek için bu denetimi kullanın.

Örnek

Bir .xaml dosyasından aşağıdaki alıntı, bir alt TextBox denetimi kullanarak sihirbaz sayfasındaki bir alanın varsayılan değerini yapılandırmak için FieldElementControl'ün kullanımını gösterir:

<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>
Özellikler
FieldData

Bu dize özelliği , FieldElementControl'u alanın temel XML'sine bağlamaya yönelik bilgiler içerir. Bağlantı, sayfa düzenleyicisi arabiriminin bir özelliğine yapılır. Bir .xaml dosyasından aşağıdaki alıntıda FieldData özelliğinin kullanımı gösterilmektedir:

FieldData="{Binding DataContext.Location, ElementName=ControlRoot}"

Bu alıntıda, sayfa düzenleyicisi arabirimi ControlRoot olarak adlandırılır ve ElementName parametresinde belirtilir. Bağlama, ControlRoot sayfa düzenleyicisi arabiriminin DataContext.Location özelliğine gerçekleştirilir. DataContext , UDI Sihirbazı yapılandırma dosyasındaki Page öğesine işaret eden bir görünüm modelidir. Konum , görünümün olası konumların listesini döndüren ve UDI Sihirbazı yapılandırma dosyasındaki bir Data öğesi tarafından tanımlanan bir özelliğidir. Her konum, UDI Sihirbazı yapılandırma dosyasındaki bir DataItem öğesi tarafından tanımlanır.

Headertext

Bu dize özelliği , FieldElementControl denetimi için bir üst bilgi belirtmenize olanak tanır. Üst bilgi, denetim için başlık görevi görür ve denetimin hemen üzerinde görüntülenen kalın, turuncu metin olarak biçimlendirilir.

Instructiontext

Bu dize özelliği , FieldElementControl denetimi için bilgilendirici metin belirtmenize olanak tanır. Genellikle metin, alanın kısa bir açıklamasını sağlamak ve alanın yapılandırılmasının ilgili sihirbaz sayfasını nasıl etkilediğini açıklamak için kullanılır.

HideEnableButton

Bu Boole özelliği, Kilidi Açık ve Kilitli (etkin veya devre dışı) arasında durumu değiştiren düğmenin görünürlüğünü denetlemenize olanak tanır. Şu şekilde ayarlanırsa:

  • Doğru, düğme görünmüyor

  • False, düğme görünür durumdadır (Bu varsayılan değerdir.)

HideDefaultTab

Bu Boole özelliği, varsayılan değeri ayarlamak için kullanılan denetimi içeren bölümün görünürlüğünü denetlemenizi sağlar. Özelliği bir sekmeye başvuruda bulunsa da , FieldElementControl'te sekme yoktur, ancak gizlenebilen bir bölümdür. Şu şekilde ayarlanırsa:

  • Doğru, bölüm görünmüyor

  • False, bölüm görünür durumdadır (Bu varsayılan değerdir.)

HideBorder

Bu Boole özelliği, alan denetiminin etrafındaki kenarlığın görünürlüğünü denetlemenize olanak tanır. Şu şekilde ayarlanırsa:

  • Doğru, kenarlık görünmüyor

  • False, kenarlık görünür durumdadır (Bu varsayılan değerdir.)

HideImage

Bu Boole özelliği , FieldImageSource özelliğinin yapılandırdığınız görüntünün görünürlüğünü denetlemenize olanak tanır. Şu şekilde ayarlanırsa:

  • Doğru, görüntü görünmüyor

  • False, görüntü görünür durumdadır (Bu varsayılan değerdir.)

HideValidationTab

Bu Boole özelliği, doğrulayıcı listesinin yönetildiği bölümün görünürlüğünü denetlemenize olanak tanır. Özelliği bir sekmeye başvuruda bulunsa da , FieldElementControl'te sekme yoktur, ancak gizlenebilen bir bölümdür. Şu şekilde ayarlanırsa:

  • Doğru, bölüm görünmüyor

  • False, bölüm görünür durumdadır (Bu varsayılan değerdir.)

HideSummaryTab

Bu Boole özelliği, başlık alan özetini yapılandırdığınız bölümün görünürlüğünü denetlemenize olanak tanır. Alandaki başlık ve karşılık gelen değer, aşama akışındaki bir SummaryPage sihirbaz sayfası türünde görüntülenir. Özelliği bir sekmeye başvuruda bulunsa da , FieldElementControl'te sekme yoktur, ancak gizlenebilen bir bölümdür. Şu şekilde ayarlanırsa:

  • Doğru, bölüm görünmüyor

  • False, bölüm görünür durumdadır (Bu varsayılan değerdir.)

HideTaskSequenceTab

Bu Boole özelliği, alana karşılık gelen görev dizisi değişkenini yapılandırdığınız bölümün görünürlüğünü denetlemenize olanak tanır. Özelliği bir sekmeye başvuruda bulunsa da , FieldElementControl'te sekme yoktur, ancak gizlenebilen bir bölümdür. Şu şekilde ayarlanırsa:

  • Doğru, bölüm görünmüyor

  • False, bölüm görünür durumdadır (Bu varsayılan değerdir.)

SetterControl

UDI Sihirbazı yapılandırma dosyasındaki bir Setter öğesinin değerini değiştirmek için bu denetimi kullanın. Bu denetim , setter öğesinin değerini değiştirmek için kullanılan bir alt denetim içerir.

Örnek

Bir .xaml dosyasından aşağıdaki alıntıda, bir alt TextBox denetimi kullanarak KeyLocationSetter adlı bir Setter öğesini değiştirmek için SetterControl kullanımı gösterilmektedir.

<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>
Özellikler
SetterData

Bunu, ayarlayıcıya bağlanan görünüm veya görünüm modelinizin bir özelliğine bağlamanız gerekir. Bunu yapmak, FieldElementControl için açıklandığı gibi bir alana bağlama yönteminize benzer.

Headertext

Bu özellik, denetimin üst bilgisinde görünecek metni ayarlamanıza olanak tanır. Bu özelliği denetimin başlığı olarak düşünün; varsayılan olarak kalın, turuncu metin olarak görünür.

Instructiontext

Bu özelliği üst bilginin altında görünmesini istediğiniz metne ayarlayın; genellikle kullanıcıya özel düzenleyicinizin davranışını ne zaman ve neden değiştirmek isteyeceğini bildiren yönerge metni.

Arabirim

Tablo 70'te özel sihirbaz sayfası düzenleyicileri oluşturmak için kullanabileceğiniz arabirimler listelenir.

Tablo 70. Özel Sihirbaz Sayfası Düzenleyicileri Oluşturmak için Kullanılabilecek Arabirimler

Arabirim Açıklama
IDataService UDI Sihirbazı yapılandırma dosyasındaki Veri öğelerine alanları bağlamak için bu arabirimi kullanın.
IMessageBoxService Bu arabirim, ileti kutularını görüntülemek için kullanabileceğiniz yöntemlere erişim sağlar.

IDataService

Bu arabirim çeşitli özellikler ve yöntemler içerir, ancak ihtiyacınız olan tek bir özellik vardır. Burada belgelenen tek özellik bu özelliktir.

Sınıfınızda aşağıdaki gibi bir kod kullanarak bu arabirime bir işaretçi elde etmek için bağımlılık ekleme özelliğini kullanabilirsiniz:

[Dependency]
public IDataService DataService { get; set; }
Özellikler

Tablo 71'de IDataService arabiriminin özellikleri listelenir.

Tablo 71. IDataService Arabiriminin Özellikleri

Arabirim Açıklama
CurrentPage Bu özellik, UDI Sihirbazı yapılandırma dosyasında düzenlenen geçerli sayfanın bağlamının altındaki XML öğelerine, özniteliklerine ve değerlerine erişim sağlar
CurrentPage
XElement CurrentPage { get; set; }

Bu özellik, geçerli sayfanın XML'sine erişim sağlar. Bu özelliği hiçbir zaman ayarlamamalısınız, ancak sayfanızın XML'sini değiştirebilirsiniz. Örnek sayfa düzenleyicisi, XML'yi değiştirme örneklerini gösterir. Bu özelliği öncelikli olarak özel verileriniz olduğunda kullanırsınız. Alanlar ve özellikler (ayarlayıcılar) için, tüm ayrıntıları ele alan önceden oluşturulmuş denetimleri kullanabilirsiniz.

IMessageBoxService

Bu arabirim, ileti kutularını görüntülemek için kullanabileceğiniz yöntemlere erişim sağlar. İleti kutusunu görüntülemek için neden bir arabirime ihtiyacınız olduğunu merak ediyor olabilirsiniz. Gerçek şu ki, bunu yapmazsınız: Microsoft, tasarımcı sayfaları için otomatik testler yazmaya yardımcı olduğundan bu arabirimi kodda ile kullanır.

Ancak, bu yöntemlerin kullanılması yararlı bir avantaj sağlar: İletişim kutularının her zaman "sahip" ayarı UDI Sihirbazı olarak ayarlanmıştır ve bu da iletişim kutusunun ana pencereyle doğru şekilde gruplandırılmasını sağlar.

Sınıfınızda aşağıdaki gibi bir kod kullanarak bu arabirime bir işaretçi elde etmek için bağımlılık ekleme özelliğini kullanabilirsiniz:

[Dependency]
public IMessageBoxService MessageBoxes { get; set; }
Yöntemler

Tablo 72'de IMessageBoxService arabiriminin yöntemleri listelenir.

Tablo 72. IMessageBoxService Arabirimi yöntemleri

Yöntem Açıklama
ShowMessageBox Bu aşırı yüklenmiş yöntem, aşağıdaki üyeleri içeren bir ileti kutusu görüntülemek için kullanılır:

- ShowMessageBox(Dize iletisi, Dize başlık, MessageBoxImage simgesi)
- ShowMessageBox(dize iletisi, dize başlık, MessageBoxButton düğmesi, MessageBoxImage simgesi)
- ShowMessageBox(Özel durum özel durumu)
ShowDialogWindow Yeni bir iletişim kutusu oluşturmak için bu yöntemi kullanın.
ShowWizardWindow Gezinti için İleri ve Geri düğmelerini içeren bir iletişim kutusunun içinde özel bir düzenleyici görüntülemek için bu yöntemi kullanın.
ShowMessageBox

Bu yöntem, özel sihirbaz sayfası düzenleyicisinin alt öğesi olan bir ileti kutusu görüntüler. Bu üye aşırı yüklenmiş: Tablo 73 üyelerin listesini ve bunların kısa bir açıklamasını içerir. Her üye hakkında tam bilgi için (söz dizimi, kullanım ve örnekler dahil), her üyeye karşılık gelen bölüme bakın.

Tablo 73. ShowMessagBox Yöntemi için Aşırı Yüklenmiş Üyeler

Üye Açıklama
ShowMessageBox(Dize iletisi, Dize başlık, MessageBoxImage simgesi) Simge ve Tamam düğmesi içeren bir ileti kutusu görüntüler
ShowMessageBox(dize iletisi, dize başlık, MessageBoxButton düğmesi, MessageBoxImage simgesi) Simge ve farklı olası düğme bileşimleri içeren bir ileti kutusu görüntüler
ShowMessageBox(Özel durum özel durumu) Özel durum hakkında bilgi sağlayan ve Tamam düğmesi olan bir ileti kutusu görüntüler
ShowMessageBox(Dize iletisi, Dize başlık, MessageBoxImage simgesi)
void ShowMessageBox(String message, String caption, MessageBoxImage icon);

Bu yöntem , Tamam düğmesini içeren bir ileti kutusu görüntüler. Bkz. Tablo 74.

Tablo 74. ShowMessageBox(Dize iletisi, Dize başlık, MessageBoxImage simgesi) Yöntemi için parametreler

Parametre Açıklama
İleti İleti kutusunun içerik alanında görüntülenecek ileti
başlık İletişim kutusunun başlık çubuğunda gösterilecek metin
Simge İleti kutusunda gösterilecek simge türü
ShowMessageBox(dize iletisi, dize başlık, MessageBoxButton düğmesi, MessageBoxImage simgesi)
MessageBoxResult ShowMessageBox(string message, string caption, MessageBoxButton button, MessageBoxImage icon);

Bu yöntem, gösterilmesini istediğiniz düğme kümesini içeren bir ileti kutusu görüntüler ve hangi düğmeyi seçtiğinizi bildirir. Bkz. Tablo 75.

Tablo 75. ShowMessageBox(dize iletisi, dize başlık, MessageBoxButton düğmesi, MessageBoxImage simgesi) Yöntemi için parametreler

Parametre Açıklama
İleti İleti kutusunun içerik alanında görüntülenecek ileti
başlık İletişim kutusunun başlık çubuğunda gösterilecek metin
Düğme Gösterilecek düğmeler
Simge İleti kutusunda gösterilecek simge türü
ShowMessageBox(Özel durum özel durumu)
void ShowMessageBox(Exception exception);

Bu yöntem, bir özel durum hakkındaki bilgileri bildiren bir ileti kutusu görüntüler. Bu ileti kutusunda tek bir Tamam düğmesi vardır. Bkz. Tablo 76.

Tablo 76. ShowMessageBox(Özel Durum özel durumu) Yöntemi için parametreler

Parametre Açıklama
Özel durum Bildirmek istediğiniz özel durum (İletişim kutusunda özel durum kullanılır. İçerik olarak ileti .)
ShowDialogWindow
void ShowDialogWindow(Type viewType, DialogInteraction dialogPayload);

Bu yöntem, içeriği viewType parametresinde sağladığınız metin olan yeni bir iletişim kutusu oluşturur. UDI Tasarım Aracı bu türün yeni bir örneğini oluşturur ve Tamam ve İptal düğmeleri olan bir iletişim kutusuna sarmalar.

dialogPayload parametresini kullanarak denetiminize veri geçirirsiniz. SDK dizinindeki SampleEditor çözümünde bu işlevselliğin nasıl kullanılacağına ilişkin bir örnek bulunur.

ShowWizardWindow
void ShowWizardWindow(Type viewType, DialogInteraction dialogPayload);

Bu yöntem, gezinti için İleri ve Geri düğmelerini içeren bir iletişim kutusunun içinde özel bir düzenleyici görüntülemenizi sağlar. Microsoft, bu yöntemin nasıl kullanılacağına ilişkin bir örnek sağlamamıştır.

UDI Sihirbazı Yapılandırma Dosyası Şema Başvurusu

Bu dosya UDI Sihirbazı tarafından tüketilir ve UDI Sihirbazı Tasarım Aracı tarafından yapılandırılır. Bu dosya aşağıdakileri yapılandırmak için kullanılır:

  • UDI Sihirbazı'nda görüntülenen sihirbaz sayfaları

  • UDI Sihirbazı'ndaki sihirbaz sayfalarının dizisi

  • Her sihirbaz sayfasındaki alanların ayarları

  • UDI Sihirbazı'nda Kullanılabilir StageGroups Tasarım Aracı

  • UDI Sihirbazı'ndaki her dağıtım sihirbazındaki Kullanılabilir Aşamalar Tasarım Aracı

    77, UDI Sihirbazı Yapılandırma Dosyası'ndaki öğeleri ve açıklamalarını listeler. Sihirbaz öğesi, bu başvurunun kök düğümüdür.

Tablo 77. UDI Sihirbazı Yapılandırma Dosyasındaki Öğeler ve Açıklamaları

Öğe adı Açıklama
Veri Page öğesi içindeki tek tek DataItem öğelerini gruplandırın ve Name özniteliğiyle adlandırılır.
Dataıtem Bir Page öğesi içindeki tek tek Setter öğelerini gruplandırma. Bir DataItem öğesi içinde bir veya daha fazla Veri öğesi ekleyerek hiyerarşik veriler oluşturabilirsiniz. Her DataItem öğesi tek bir öğeyi temsil eder. Örneğin, kullanılabilir sürücülerin listesinde görünen ad için bir DataItem ve ilgili sürücü harfi için başka bir DataItem öğesi olabilir.
Varsayılan Üst Alan veya RadioGroup öğesinde belirtilen alan için varsayılan değeri belirtir. Varsayılan değer, bu öğe tarafından köşeli ayraçlı değere ayarlanır.
DLL UDI Sihirbazı ve UDI Sihirbazı Tasarım Aracı tarafından yüklenecek ve başvurulacak dll'yi belirtir.
Dll Tek tek DLL öğelerini gruplandırın.
Hata Bir görevin döndürebileceği olası bir hata kodunu belirtir. Hata kodunun değeri görevin HRESULT değeri tarafından döndürülür ve daha özel hata bilgileri sağlamak için bu öğe tarafından tuzağa düşürülür.
Exitcode Görev için olası bir çıkış kodunu belirtir. Çıkış kodları, görevin beklediği dönüş kodlarıdır. Her olası çıkış kodu için bir ExitCode öğesi oluşturun. Aksi takdirde, diğer ExitCode öğelerinde listelenmeyen dönüş kodlarını işlemek için Value özniteliğinde bir yıldız işareti (*) belirtebilirsiniz.
ExitCodes Bir Görev öğesi veya Error öğesi için ExitCode ve Error öğeleri kümesini gruplandırın.
Alan XML ile özelleştirme sağlamak için kullanılan Page öğesindeki bir denetimin örneğini belirtir. Tüm denetimler XML ile özelleştirmeye izin vermez; yalnızca Field öğesini kullanan denetimler.
Alanları Bir Page öğesi içindeki tek tek Alan öğelerini gruplandırma.
Dosya Microsoft.Wizard.CopyFilesTask görev türünü kullanarak dosya kopyalama işleminin kaynağını ve hedefini belirtir. Tek bir göreve birden fazla dosya kopyalamak için ayrı bir Dosya öğesi ekleyebilirsiniz.
Sayfa Sayfanın bir örneğini belirtir ve sayfanın tüm yapılandırma ayarlarını içerir.
Pageref StageGroup içindeki bir Stage içindeki bir sayfanın örneğine başvuru belirtir.
Sayfa Tek tek Sayfa öğelerini gruplandırma.
RadioGroup Alan öğesi içindeki bir grup radyo düğmesini belirtir.
StageGroup Bir veya daha fazla aşamadan oluşan bir grubu belirtir.
StageGroups UDI Sihirbazı yapılandırma dosyasındaki bir dizi aşama grubunu gruplar.
Ayarlayıcı Property özelliğinde adlandırılmış bir özellik için bir değerin özellik ayarını belirtir.
Sahne StageGroup içindeki bir aşamayı belirtir ve bir veya daha fazla PageRef öğesi içerir.
Stil Sihirbazın en üstünde gösterilen başlık ve UDI Sihirbazı'nda gösterilen başlık görüntüsü de dahil olmak üzere UDI Sihirbazı'nın genel görünümünü yapılandıran tek tek ayarlayıcı öğelerini gruplandırın.
Görev Üst Page öğesinde belirtilen sayfada çalıştırılacak görevi belirtir.
Görevler Page öğesi için bir görev kümesini gruplandırma.
Doğrulayıcı Üst Field öğesinde belirtilen alan denetimi için bir doğrulayıcı belirtir.
Sihirbazı Diğer tüm öğelerin kökünü belirtir.

Veri

Bu öğe, bir Page öğesi içindeki tek tek DataItem öğelerini gruplar ve Name özniteliği tarafından adlandırılır.

Öğe Bilgileri

Tablo 78 , Data öğesi hakkında bilgi sağlar.

Tablo 78. Veri Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her Page öğesinde sıfır veya daha fazlası (Bu öğe isteğe bağlıdır.)
Üst öğeler Page, DataItem
İçindekiler DataItem, Setter
Öğe Öznitelikleri

Tablo 79 , Data öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 79. Veri Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Ad Data öğesinin adını belirtir
Açıklamalar

Name özniteliği, kodun belirli bir veri kümesini almasına olanak tanır.

Örnek

Hiçbiri.

Dataıtem

Bu öğe, bir Page öğesi içindeki tek tek Setter öğelerini gruplar. Bir DataItem öğesi içinde bir veya daha fazla Veri öğesi ekleyerek hiyerarşik veriler oluşturabilirsiniz. Her DataItem öğesi tek bir öğeyi temsil eder. Örneğin, kullanılabilir sürücülerin listesinde görünen ad için bir DataItem ve ilgili sürücü harfi için başka bir DataItem öğesi olabilir.

Öğe Bilgileri

Tablo 80 , DataItem öğesi hakkında bilgi sağlar.

Tablo 80. DataItem Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her Data öğesinde sıfır veya daha fazlası (Bu öğe isteğe bağlıdır.)
Üst öğeler Veri
İçindekiler Veri, Ayarlayıcı
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Varsayılan

Bu öğe, üst Alan veya RadioGroup öğesinde belirtilen alan için varsayılan değeri belirtir. Varsayılan değer, bu öğenin köşeli ayraç olarak ayarlandığı değerdir.

Öğe Bilgileri

Tablo 81 , Default öğesi hakkında bilgi sağlar.

Tablo 81. Varsayılan Öğe Bilgileri

Öznitelik Değer
Oluşum sayısı Field veya RadioGroup öğesinde sıfır veya daha fazla (Bu öğe isteğe bağlıdır.)
Üst öğeler Alan, RadioGroup
İçindekiler İyi biçimlendirilmiş herhangi bir XML içeriği olabilir, ancak genellikle standart metindir
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

Örnek

Aşağıdaki örnekte, TimeZone alanının varsayılan değeri "Pasifik Standart Saati" olarak ayarlanmıştır:

<Field Name="TimeZone" Enabled="true" VarName="OSDTimeZone" Summary="Time Zone:">
  <Default>Pacific Standard Time</Default>

DLL

Bu öğe, yüklenip başvurulacak UDI Sihirbazı ve UDI Sihirbazı Tasarım Aracı için bir DLL belirtir.

Öğe Bilgileri

Tablo 82 , DLL öğesi hakkında bilgi sağlar.

Tablo 82. DLL Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı DLL öğesi içinde bir veya daha fazla
Üst öğe Dll
İçindekiler Bu öğe için içeriğe izin verilmiyor
Öğe Öznitelikleri

Tablo 83,DLL öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 83. DLL Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Name Başvurulacak UDI Sihirbazı ve UDI Sihirbazı Tasarım Aracı için DLL'nin adını belirtir
Açıklamalar

Hiçbiri.

Örnek
<DLLs>
  <DLL Name="OSDRefreshWizard.dll" />
  <DLL Name="SharedPages.dll" />
</DLLs>

Dll

Bu öğe, tek tek DLL öğelerini gruplar.

Öğe Bilgileri

Tablo 84 , DLL'ler öğesi hakkında bilgi sağlar.

Tablo 84. DLL'ler Öğe Bilgileri

Öznitelik Değer
Oluşum sayısı Bir
Üst öğeler Sihirbazı
İçindekiler DLL
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

Örnek
<DLLs>
   <DLL Name="OSDRefreshWizard.dll" />
   <DLL Name="SharedPages.dll" />
</DLLs>

Error

Bu öğe, bir görevin döndürebileceği olası bir hata kodunu belirtir. Hata kodunun değeri, daha özel hata bilgileri sağlamak için görevin HRESULT değeri tarafından döndürülür ve tuzağa düşürülür.

Öğe Bilgileri

Tablo 85 , Error öğesi hakkında bilgi sağlar.

Tablo 85. Hata Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her ExitCode öğesinde sıfır veya daha fazlası (Bu öğe isteğe bağlıdır.)
Üst öğeler ExitCodes
İçindekiler İyi biçimlendirilmiş XML içeriği
Öğe Öznitelikleri

Tablo 86,Error öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 86. Hata Öğesi Bilgileri

Öznitelik Açıklama
Durum Hatayla karşılaşan görevin dönüş durumunu belirtir. Genellikle, bu özniteliğin değeri Hata olarak ayarlanır. Bu değer, UDI Sihirbazı'nın sihirbaz sayfasındaki Durum sütununda görüntülenir.
Metin Görevin karşılaştığı hata koşuluyla ilgili açıklayıcı metni belirtir.
Tür Bu öğenin bir hatayı, uyarıyı veya başarıyı temsil edip etmediğini belirtir. Type içinde belirtilen değer exitcodes öğesi içinde benzersiz olmalıdır. Bu öğe için geçerli değerler şunlardır:

- **0.**Öğe bir başarıyı temsil etti.
- 1. öğesi bir uyarıyı temsil eder.
- -1. öğesi bir hatayı temsil eder.
Değer Görevin sayısal değer olarak döndürdiği kodun değerini belirtir. Yıldız (*) değerinin belirtilmesi, diğer Hata öğelerinde listelenmeyen dönüş kodları için varsayılan öğeyi gösterir.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Exitcode

Bu öğe, görev için olası bir çıkış kodunu belirtir. Çıkış kodları, görevin beklediği dönüş kodlarıdır. Her olası çıkış kodu için bir ExitCode öğesi oluşturun. Aksi takdirde, diğer ExitCode öğelerinde listelenmeyen dönüş kodlarını işlemek için Value özniteliğinde bir yıldız işareti (*) belirtebilirsiniz.

Öğe Bilgileri

Tablo 87 , ExitCode öğesi hakkında bilgi sağlar.

Tablo 87. ExitCode Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her ExitCodes öğesinde sıfır veya daha fazlası (Bu öğe isteğe bağlıdır.)
Üst öğeler ExitCodes
İçindekiler En az bir ExitCode öğesi ve sıfır veya daha fazla Hata öğesi
Öğe Öznitelikleri

Tablo 88, ExitCode öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 88. ExitCode Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Durum Görevin dönüş durumunu belirtir. Bu özniteliğin değeri, UDI Sihirbazı'nın ilgili sihirbaz sayfasındaki Durum sütununda görüntülenir. Bu öznitelik için göreviniz için anlamlı olan tüm değerleri kullanabilirsiniz. Bu öznitelik için kullanılan tipik değerler şunlardır:

-Başarı
-Uyarı
-Hata
Metin Görevin var olan kodu hakkındaki açıklayıcı metni belirtir.
Tür Bu öğenin bir hatayı, uyarıyı veya başarıyı temsil edip etmediğini belirtir. türünde belirtilen değer exitcodes öğesi içinde benzersiz olmalıdır. Bu öğe için geçerli değerler şunlardır:

- 0. öğesi bir başarıyı temsil eder.
- 1. öğesi bir uyarıyı temsil eder.
- -1. öğesi bir hatayı temsil eder.
Değer Görevin sayısal değer olarak döndürdiği kodun değerini belirtir. Yıldız (*) değerinin belirtilmesi, diğer ExitCode öğelerinde listelenmeyen dönüş kodları için varsayılan öğeyi gösterir.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

ExitCodes

Bu öğe, bir Görev veya Hata öğesi için exitcode ve error öğeleri kümesini gruplandırma.

Öğe Bilgileri

Tablo 89 , ExitCodes öğesi hakkında bilgi sağlar.

Tablo 89. ExitCodes Öğe Bilgileri

Öznitelik Değer
Oluşum sayısı Her Görev öğesi içinde bir tane
Üst öğeler Görev
İçindekiler Hata, ExitCode
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Alan

Bu öğe, XML ile özelleştirme sağlamak için kullanılan page öğesindeki bir denetimin örneğini belirtir. Tüm denetimler XML ile özelleştirmeye izin vermez; yalnızca Field öğesini kullanan denetimler.

Öğe Bilgileri

Tablo 90, Field öğesi hakkında bilgi sağlar.

Tablo 90. Alan Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her Field öğesinde sıfır veya daha fazlası (Bu öğe isteğe bağlıdır.)
Üst öğeler Alanları
İçindekiler Varsayılan, Doğrulayıcı
Öğe Öznitelikleri

Tablo 91,Field öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 91. Alan Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Etkin Alanın kullanıcı girişi için etkinleştirilip etkinleştirilmediğini belirtir (Öznitelik True veya False olarak ayarlanabilir.)
Ad Alanın adını belirtir
Özet Bu alanın ayarlandığı değer için Özet sihirbazı sayfasında görüntülenen açıklayıcı metni belirtir
Varname Üst Field öğesindeki alan kullanılarak okunan veya yapılandırılan görev dizisi değişkeni adını belirtir
Açıklamalar

Bu öğe sıfır veya daha fazla Varsayılan öğe ve sıfır veya daha fazla Doğrulayıcı öğesi içerebilir.

Örnek

Hiçbiri.

Alanları

Bu öğe, bir Page öğesi içindeki tek tek Field öğelerini gruplar.

Öğe Bilgileri

Tablo 92, Fields öğesi hakkında bilgi sağlar.

Tablo 92. Alanlar Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her Page öğesinde sıfır veya daha fazlası (Bu öğe isteğe bağlıdır.)
Üst öğeler Sayfa
İçindekiler Alan, RadioGroup
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Dosya

Bu öğe , Microsoft.Wizard.CopyFilesTask görev türünü kullanarak bir dosya kopyalama işleminin kaynağını ve hedefini belirtir. Tek bir göreve birden fazla dosya kopyalamak için ayrı bir Dosya öğesi ekleyebilirsiniz.

Öğe Bilgileri

Tablo 93 , Dosya öğesi hakkında bilgi sağlar.

Tablo 93. Dosya Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Görev türü Microsoft.Wizard.CopyFilesTask olan her görev için bir veya daha fazla
Üst öğeler Görev
İçindekiler Yok
Öğe Öznitelikleri

Tablo 94 , Dosya öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 94. Dosya Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Dest Source özniteliğinde belirtilen dosya için hedef klasörün tam veya göreli yolunu belirtir. Ortam değişkenlerine yolun bir parçası olarak izin verilir.
Kaynak Microsoft.Wizard.CopyFilesTask görev türünün kopyaladığınız kaynak dosyanın tam veya göreli yolunu belirtir. Bu öznitelik, tek bir Dosya öğesi kullanılarak birden çok dosyanın kopyalanması için joker karakterleri destekler. Ortam değişkenlerine yolun bir parçası olarak izin verilir.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Sayfa

Bu öğe bir sayfanın örneğini belirtir ve sayfanın tüm yapılandırma ayarlarını içerir.

Öğe Bilgileri

Tablo 95 , Page öğesi hakkında bilgi sağlar.

Tablo 95. Sayfa Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her Pages öğesi içinde bir veya daha fazla
Üst öğeler Sayfa
İçindekiler Veri, Alanlar, Ayarlayıcı, Görevler
Öğe Öznitelikleri

Tablo 96 , Page öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 96. Sayfa Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Displayname UDI Sihirbazı Tasarım Aracı görüntülenen sihirbaz sayfasının kolay adını belirtir. Bu ad genellikle Name özniteliğinden daha açıklayıcıdır.
Ad UDI Sihirbazı Tasarım Aracı görüntülenen sihirbaz sayfasının adını belirtir.
Tür Dll içindeki belirli bir sihirbaz sayfasıyla doğrudan ilişkili sihirbaz sayfasının türünü belirtir.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Pageref

Bu öğe, StageGroup içindeki Bir Aşama içindeki bir sayfanın örneğine başvuru belirtir.

Öğe Bilgileri

Tablo 97 , PageRef öğesi hakkında bilgi sağlar.

Tablo 97. PageRef Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Stage öğesi içinde bir veya daha fazla
Üst öğeler Sahne
İçindekiler Yok
Öğe Öznitelikleri

Tablo 98, PageRef öğesinin özniteliğini listeler ve bunun açıklamasını sağlar.

Tablo 98. PageRef Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Sayfa StageGroup içindeki Bir Aşama içindeki bir sayfanın örneğini belirtir. Bu değeri Bir Page öğesinin Name özniteliğine ayarlayın.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Sayfa

Bu öğe tek tek Page öğelerini gruplandırr.

Öğe Bilgileri

Tablo 99 , Pages öğesi hakkında bilgi sağlar.

Tablo 99. Pages Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Bir
Üst öğeler Sihirbazı
İçindekiler Sayfa
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

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

Bu öğe, Alan öğesinde bulunan bir radyo düğmeleri grubunu belirtir.

Öğe Bilgileri

Tablo 100 , RadioGroup öğesi hakkında bilgi sağlar.

Tablo 100. RadioGroup Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Fields öğesinde sıfır veya daha fazlası (Bu öğe isteğe bağlıdır.)
Üst öğeler Alanları
İçindekiler Varsayılan
Öğe Öznitelikleri

Tablo 101 , RadioGroup öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 101. RadioGroup Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Kilitli Radyo düğmeleri grubunun kullanıcı girişi için etkinleştirilip etkinleştirilmediğini belirtir. Özniteliği şu şekilde ayarlanabilir:

- Doğru'yu seçin. Radyo düğmelerinin devre dışı bırakıldığını ve kullanıcıların gruptaki bir radyo düğmesini seçemeyeceğini belirtir.
- Yanlış. Radyo düğmelerinin etkinleştirildiğini ve kullanıcıların gruptaki bir radyo düğmesini seçebileceğini belirtir.
Ad Radyo seçenek grubunun adını belirtir.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

StageGroup

Bu öğe bir dağıtım aşaması grubu belirtir.

Öğe Bilgileri

Tablo 102 , StageGroup öğesi hakkında bilgi sağlar.

Tablo 102. StageGroup Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı StageGroups öğesi içinde bir veya daha fazla
Üst öğeler StageGroups
İçindekiler Sahne
Öğe Öznitelikleri

Tablo 103,StageGroup öğesinin özniteliklerini ve özniteliğin açıklamasını listeler.

Tablo 103. StageGroup Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Displayname UDI Sihirbazı Tasarım Aracı görüntülenen aşama grubunun kolay adını belirtir. Bu ad genellikle Name özniteliğinden daha açıklayıcıdır.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

StageGroups

Bu öğe, UDI Sihirbazı yapılandırma dosyasındaki bir dizi aşama grubunu gruplar.

Öğe Bilgileri

Tablo 104 , StageGroups öğesi hakkında bilgi sağlar.

Tablo 104. StageGroups Öğe Bilgileri

Öznitelik Değer
Oluşum sayısı Sihirbaz öğesi içinde sıfır veya bir
Üst öğeler Sihirbazı
İçindekiler StageGroup
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Ayarlayıcı

Bu öğe, Property özelliğinde adlı bir özelliğin değeri için bir özellik ayarı belirtir.

Öğe Bilgileri

Tablo 105 , Setter öğesi hakkında bilgi sağlar.

Tablo 105. Setter Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her üst öğe içinde sıfır veya daha fazlası (Bu öğe isteğe bağlıdır.)
Üst öğeler Data, DataItem, Page, Style, Task, Validator
İçindekiler Property özniteliğinde bir dize değeri içerir
Öğe Öznitelikleri

Tablo 106, Setter öğesinin özniteliğini listeler ve bunun açıklamasını sağlar.

Tablo 106. Setter Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Özellik Ayarlanan özellik adını belirtir. Özellik adı, bu öznitelik köşeli ayraç değeri olarak ayarlanır.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Sahne

Bu öğe, StageGroup içindeki bir Aşamayı belirtir ve bir veya daha fazla PageRef öğesi içerir.

Öğe Bilgileri

Tablo 107 , Stage öğesi hakkında bilgi sağlar.

Tablo 107. Aşama Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı StageGroup öğesi içinde bir veya daha fazla
Üst öğeler StageGroup
İçindekiler Pageref
Öğe Öznitelikleri

Tablo 108 , Stage öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 108. Aşama Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Displayname UDI Sihirbazı Tasarım Aracı görüntülenen sihirbaz sayfasının kolay adını belirtir. Bu ad genellikle Name özniteliğinden daha açıklayıcıdır.
Ad Aşamanın adını belirtir. UDI Sihirbazı /stage: name komut satırı parametresiyle başlatılırken bu öğenin değeri kullanılır.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Stil

Bu öğe, sihirbazın en üstünde gösterilen başlık ve UDI Sihirbazı'nda gösterilen başlık görüntüsü de dahil olmak üzere UDI Sihirbazı'nın genel görünümünü yapılandıran tek tek Setter öğelerini gruplar.

Öğe Bilgileri

Tablo 109, Style öğesi hakkında bilgi sağlar.

Tablo 109. Stil Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Bir
Üst öğeler Sihirbazı
İçindekiler Ayarlayıcı
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

Örnek
<Style>
  <Setter Property="bannerFilename">UDI_Wizard_Banner.bmp</Setter>
  <Setter Property="title">Operating System Deployment (OSD) Refresh Wizard</Setter>
</Style>

Görev

Bu öğe, üst Page öğesinde belirtilen sayfada çalıştırılacak görevi belirtir.

Öğe Bilgileri

Tablo 110 , Task öğesi hakkında bilgi sağlar.

Tablo 110. Görev Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Görevler öğesi içinde bir veya daha fazla
Üst öğeler Görevler
İçindekiler ExitCodes, File, Setter
Öğe Öznitelikleri

Tablo 111 , Task öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 111. Görev Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Dependson Görevin başka bir göreve bağımlı olup olmadığını belirtir. Bu özniteliğin değeri, başka bir Task öğesinin Name özniteliğine ayarlanır. Not: Bu öznitelik UDI Sihirbazı Tasarım Aracı kullanılarak yapılandırılamaz. Ancak, .xml dosyasını doğrudan değiştirerek bu özniteliği bir Görev öğesine el ile ekleyebilirsiniz.
Displayname UDI Sihirbazı Tasarım Aracı görüntülenen görevin kolay adını belirtir. Bu ad genellikle Name özniteliğinden daha açıklayıcıdır.
Ad Görevin adını belirtir. Bu ad benzersiz olmalıdır.
Tür Çalıştırılacak görev için, görevi içeren DLL'de tanımlanan görev türünü belirtir.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Görevler

Bu öğe, Bir Page öğesi için bir görev kümesi gruplandırma.

Öğe Bilgileri

Tablo 112 , Görevler öğesi hakkında bilgi sağlar.

Tablo 112. Görevler Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Her Page öğesi içinde sıfır veya bir (Bu öğe isteğe bağlıdır.)
Üst öğeler Sayfa
İçindekiler Görev
Öğe Öznitelikleri

Tablo 113, Tasks öğesinin özniteliklerini listeler ve her birinin açıklamasını sağlar.

Tablo 113. Görevler Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
NameTitle Uygun sihirbaz sayfasındaki görevlerin adını içeren sütunun en üstünde görüntülenen başlık belirtir.
StatusTitle Uygun sihirbaz sayfasındaki görevlerin durumunu içeren sütunun en üstünde görüntülenen başlık belirtir.
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Doğrulayıcı

Bu öğe, üst Field öğesinde belirtilen alan denetimi için bir doğrulayıcı belirtir.

Öğe Bilgileri

Tablo 114 , Validator öğesi hakkında bilgi sağlar.

Tablo 114. Validator Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Field öğesi içinde sıfır veya bir
Üst öğeler Alan
İçindekiler Ayarlayıcı
Öğe Öznitelikleri

Tablo 115 , Validator öğesinin özniteliğini listeler ve bunun açıklamasını sağlar.

Tablo 115. Validator Öğesi için Öznitelikler ve Karşılık Gelen Değerler

Öznitelik Açıklama
Tür Doğrulayıcıyı içeren DLL'de tanımlanan doğrulayıcının türünü belirtir
Açıklamalar

Hiçbiri.

Örnek

Hiçbiri.

Sihirbazı

Bu öğe diğer tüm öğelerin kökünü belirtir.

Öğe Bilgileri

Tablo 116 , Sihirbaz öğesi hakkında bilgi sağlar.

Tablo 116. Sihirbaz Öğesi Bilgileri

Öznitelik Değer
Oluşum sayısı Bir
Üst öğeler Yok
İçindekiler DLL'ler, Sayfalar, StageGroups, Stil
Öğe Öznitelikleri

Bu öğenin özniteliği yok.

Açıklamalar

Hiçbiri.

Örnek
<Wizard>
   + <DLLs>
   + <Style>
   + <Pages>
   + <StageGroups>
</Wizard>