Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bir yükleme programı genellikle aşağıdaki hedeflere sahiptir:
- Dosyaları doğru konuma yerleştirmek için.
- Yükleme programının var olan bir dosyayı önemli ölçüde farklı bir sürümle değiştirip değiştirmediğini kullanıcıya bildirmek için(örneğin, Almanca dildeki bir dosyayı İngilizce dildeki bir dosyayla değiştirme veya daha yeni bir dosyayı eski bir dosyayla değiştirme).
Yükleme programını yazarken, her dosya için aşağıdaki bilgilere sahip olmanız gerekir:
- Dosyanın adı ve konumu (kaynak dosya olarak adlandırılır).
- Kullanıcının sabit diskinde eşdeğer dosyanın adı (hedef dosya olarak adlandırılır). Bu ad genellikle yükleme diskinde dosya adıyla aynıdır.
- Dosyanın paylaşım durumu; yani dosyanın yüklenen uygulamaya özel olup olmadığı veya birden çok uygulama tarafından paylaşılabildiği.
Yükleme programı, dosyanın diskte nereye kopyalanması gerektiğini belirlemek için VerFindFile işlevini kullanabilir. Bu işlev, dosyanın uygulamaya özel mi yoksa paylaşılabilir mi olduğunu belirtmek için de kullanılabilir. Dosyayı bulma sırasında bir sorun oluşursa VerFindFile bir hata değeri döndürür. Örneğin, sistem hedef dosyayı kullanıyorsa, VerFindFileVFF_FILEINUSEdöndürür. Yükleme programı, kullanıcıya sorunu bildirmeli ve kullanıcının yüklemeye devam etme veya sonlandırma kararına yanıt vermelidir.
VerInstallFile işlevi, kaynak dosyayı VerFindFiletarafından belirtilen dizindeki geçici bir dosyaya kopyalar. Gerekirse VerInstallFile, veri sıkıştırma kitaplığındaki işlevleri kullanarak dosyayı genişletir.
VerInstallFile, geçici dosyanın sürüm bilgilerini hedef dosyanınkiyle karşılaştırır. İkisi farklıysa VerInstallFile bir veya daha fazla hata değeri döndürür. Örneğin, geçici dosya hedef dosyadan daha eskiyse VIF_SRCOLD döndürür ve dosyaların farklı dil tanımlayıcıları veya kod sayfası değerleri varsa VIF_DIFFLANG. Yükleme programı, kullanıcıya sorunu bildirmeli ve kullanıcının yüklemeye devam etme veya sonlandırma kararına yanıt vermelidir.
Bazı VerInstallFile hataları kurtarılabilir. Yani, yükleme programı VerInstallFile yeniden çağırabilir ve sürüm çakışmasına bakılmaksızın dosyayı yüklemek için VIFF_FORCEINSTALL seçeneğini belirtebilir. VerInstallFileVIF_TEMPFILE döndürürse ve kullanıcı yüklemeyi zorlamamayı seçerse, yükleme programı geçici dosyayı silmelidir.
VerInstallFile, hata daha önce mevcut olmasa bile yüklemeyi zorlamaya çalışırken kurtarılamaz bir hatayla karşılaşabilir. Örneğin, yükleme programı yüklemeyi zorlamaya çalışmadan önce dosya başka bir kullanıcı tarafından kilitlenebilir. Bir yükleme programı kurtarılamayan bir hatadan sonra yüklemeyi zorlamaya çalışırsa verInstallFile başarısız olur. Yükleme programı, bu tür bir hatadan kurtarmak için yordamlar içermelidir.
Önerilen çözüm, Yükle, Atlave Tümünü Yükledüğmeleri içeren bir iletişim kutusu görüntülemektir. (Başka bir çözüm, Evet, Tümüne Evet, Atlave İptal Etdüğmelerine sahip bir diyalog kutusudur.) Tümünü Yükle düğmesi, yükleme programının kullanıcıya benzer hataları sormasını önlemek için VerInstallFilesonraki tüm kullanımlarında VIFF_FORCEINSTALL seçeneğini içermelidir. Kurtarılamayan hatalar için Yükleme ve Tümünü Yükle düğmeleri devre dışı bırakılmalıdır.
Kullanıcıya yararlı bir hata iletisi görüntülemek için yükleme programının genellikle çakışan dosyaların sürüm kaynaklarından bilgi alması gerekir. Yükleme programının bu amaçla kullanabileceği dört işlev vardır:
- GetFileVersionInfoSize
- GetFileVersionInfo
- VerQueryValue
- VerLanguageName
GetFileVersionInfoSize sürüm bilgilerinin boyutunu döndürür. GetFileVersionInfo, sürüm bilgilerini içeren bir yapıyı almak için GetFileVersionInfoSize tarafından alınan bilgileri kullanır. VerQueryValue bu yapıdan belirli bir üyeyi alır.
Örneğin, VerInstallFileVIF_DIFFTYPE hatasını döndürürse, yükleme programı her dosyanın genel türünü almak için geçici ve hedef dosyalar üzerinde GetFileVersionInfoSize, GetFileVersionInfove VerQueryValue işlevlerini kullanmalıdır. Dosyaların dilleri çakışırsa, yükleme programı ikili dil tanımlayıcısını dilin metin gösterimine çevirmek için VerLanguageName de kullanmalıdır. (Örneğin, 0x040C "Fransızca" dizesine karşılık gelir.)
VerInstallFileVIF_ACCESSVIOLATIONgibi bir dosya hatası döndürürse, yükleme programı en son hata değerini almak için GetLastErrorişlevinikullanmalıdır. Program bu değeri kullanıcıya görüntülenecek bilgilendirici bir iletiye çevirmelidir. Program, VerInstallFile ve GetLastErrorçağrıları arasında denetim vermemelidir.