Aracılığıyla paylaş


ICEM09

ICEM09, birleştirme modülünün önceden tanımlanmış dizinleri güvenli bir şekilde işlediğini doğrular. Bunu, modüldeki hiçbir bileşenin "ProgramFilesFolder" veya "StartMenuFolder" gibi önceden tanımlanmış bir sistem dizinine bir dizin yüklemediğini doğrulayarak yapar. Bunun yerine modüller benzersiz adlara sahip dizinleri (birleştirme modülü adlandırma kuralıyla oluşturulur) ve uygun hedef dizini hedeflemek için özel eylemler kullanmalıdır. Bu yaklaşım, modüllerin son veritabanındaki mevcut dizin yapısıyla çakışmasını önler. ICEM09, bu tekniğin çalışması için gereken özel eylemlerin mevcut olmadığını (birleştirme aracının bunları oluşturabilmesi için) veya doğru biçimde (beklendiği gibi çalışması için) mevcut olup olmadığını denetler.

ICEM09 tarafından bildirilen bir uyarıyı veya hatayı düzeltmemek, birleştirme modülünüzün istemcileri için sorunlara neden olabilir. ProgramFilesFolder gibi birincil anahtarlara sahip dizin tablosu satırları genellikle bir veritabanında bulunur; bu nedenle, modülünüzdeki bileşenler doğrudan ProgramFilesFolder gibi önceden tanımlanmış dizinlere yüklenirse, modüldeki dizin girişleri zaten var olan satırlarla çakılabilir. Bu koşul, modülünüzün kullanıcısının mevcut kaynak dizinle eşleşmesi için modülünüzün kaynak dosyalarını bölmesini gerektirir.

Sonuç

ICEM09, modül bileşeni önceden tanımlanmış bir sistem dizinine bir dizin yüklediğinde bir hata veya uyarı bildirir ve bu da mevcut dizin yapısıyla olası bir ad çakışmasına neden olur.

Örnek

ICEM09, gösterilen veritabanı girişlerini içeren bir modül için aşağıdaki uyarıları yayınlar.

Warning: The component 'Component1.<GUID>' installs directly into the pre-defined 
directory 'ProgramFilesFolder'. It is recommended that merge modules alias 
all such directories to unique names.

Birleştirme modülü dizinini bir Windows Installer özelliğiyle eşleşmemesi ve bu nedenle benzersiz olması için yeniden adlandırın. Ardından aynı ada sahip bir özelliği Windows Installer dizininin değerine ayarlayın. Dizin çözümlemesi gerçekleştiğinde, dizin aynı ada sahip bir özelliğe sahiptir, bu nedenle dizinin yükleme konumu özelliğin değeridir. Dosyalar ayrı kaynak konumdan aynı hedef konuma taşınır. Bu işlem birleştirme çakışmalarını tamamen kaldırmalıdır.

Warning: The 'ModuleInstallExecuteSequence' table contains a type 51 action 
(StartMenuFolder.<GUID>) for a pre-defined directory, but this action 
does not have sequence number '1'

Eylemin 1 numaralı sıra numarası yoksa, etkin bir şekilde çalışmak için dizinin erken aşamalarında hedef veritabanıyla birleştirilmeyebilir.

Bu uyarıyı düzeltmek için sıra numarasını 1 olarak ayarlayın. Çoğu geçerli birleştirme aracının (ancak bazı eski sürümlerin) birleştirme zamanında bu özel eylemleri oluşturacağını, bu nedenle eylemleri birleştirme modülüne açıkça yazmanın her zaman gerekli olmadığını unutmayın.

Warning: The 'CustomAction' table contains a type 51 action (MyAppDataFolderAction) 
for a pre-defined directory, but the name is not the same as the target directory. 
Many merge tools will generate duplicate actions."

CustomAction sütunu CustomAction tablosunun birincil anahtarı olduğundan, önceden yazılmış eylem adı farklı olduğundan bazı birleştirme araçları yinelenen eylemler oluşturabilir.

Bu uyarıyı düzeltmek için eylemi hedef dizinle aynı şekilde adlandırın. Çoğu geçerli birleştirme aracının (ancak bazı eski sürümlerin) birleştirme zamanında bu özel eylemleri oluşturduğunu, bu nedenle eylemleri birleştirme modülüne açıkça yazmanın her zaman gerekli olmadığını unutmayın.

Dizin Tablosu

Dizin Directory_Parent DefaultDir
ProgramFilesFolder Dizin1 A
StartMenuFolder Dizin2 B:C
AppDataFolder Dizin3 D
MyPicturesFolder Dizin4 E

 

Bileşen Tablosu

Parça Dizin
Bileşen1. GUID>< ProgramFilesFolder
Bileşen2. GUID>< StartMenuFolder
Bileşen3. GUID>< AppDataFolder
Bileşen4. GUID>< MyPicturesFolder

 

CustomAction Tablo

CustomAction Tür Kaynak Hedef
StartMenuFolder. GUID>< 51 StartMenuFolder. GUID>< [StartMenuFolder]
MyAppDataFolderAction 51 AppDataFolder. GUID>< [AppDataFolder]

 

ModuleInstallExecuteSequence Tablo

Eylem Sıra BaseAction Sonra Koşul
StartMenuFolder. GUID>< 100

 

Birleştirme Modülü ICE Başvurusu