Sdílet prostřednictvím


ICEM09

ICEM09 ověří modul sloučení bezpečně zpracovává předdefinované adresáře. Provede to tak, že ověříte, že žádná komponenta v modulu neinstaluje adresář do předdefinovaného systémového adresáře, například "ProgramFilesFolder" nebo "StartMenuFolder". Místo toho by moduly měly používat adresáře s jedinečnými názvy (vytvořené pomocí konvence vytváření názvů modulů sloučení) a použít vlastní akce k cílení na příslušný cílový adresář. Tento přístup brání modulům v konfliktu s existující adresářovou strukturou v konečné databázi. ICEM09 zkontroluje, jestli vlastní akce potřebné pro tuto techniku nefungují (aby je nástroj pro sloučení mohl vygenerovat) nebo že existují ve správném formátu (aby fungovaly podle očekávání).

Chyba při opravě upozornění nebo chyby hlášené modulem ICEM09 může způsobit problémy pro klienty vašeho modulu sloučení. Řádky tabulky adresářů s primárními klíči, jako je ProgramFilesFolder, často existují v databázi; Proto pokud komponenty v modulu instalují přímo do předdefinovaných adresářů, jako je ProgramFilesFolder, mohou položky adresáře v modulu kolidovat s již existujícími řádky. Tato podmínka by vyžadovala, aby uživatel modulu rozdělil zdrojové soubory z modulu, aby odpovídal existujícímu zdrojovému adresáři.

Výsledek

ICEM09 hlásí chybu nebo upozornění, když komponenta modulu nainstaluje adresář do předem definovaného systémového adresáře, což způsobuje možný konflikt názvů se stávající adresářovou strukturou.

Příklad

ICEM09 publikuje následující upozornění pro modul obsahující zobrazené položky databáze.

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.

Přejmenujte adresář modulu sloučení tak, aby neodpovídá vlastnosti Instalační služby systému Windows, a proto je jedinečný. Potom nastavte vlastnost se stejným názvem na hodnotu adresáře Instalační služby systému Windows. Při řešení adresářů má adresář vlastnost se stejným názvem, takže umístění instalace adresáře je hodnota vlastnosti. Soubory se přesunou z jiného zdrojového umístění do stejného cílového umístění. Tento proces by měl zcela odebrat konflikty při slučování.

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'

Pokud akce nemá pořadové číslo 1, nemusí se sloučit s cílovou databází včas v posloupnosti, aby efektivně fungovala.

Pokud chcete toto upozornění opravit, nastavte pořadové číslo na 1. Všimněte si, že nejnovější nástroje hromadné korespondence (ale ne některé starší verze) vygenerují tyto vlastní akce v době sloučení, takže není vždy nutné explicitně vytvářet akce do modulu sloučení.

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

Vzhledem k tomu, že sloupec CustomAction je primárním klíčem tabulky CustomAction, můžou některé nástroje pro sloučení generovat duplicitní akce, protože název předem vytvořené akce je jiný.

Pokud chcete toto upozornění opravit, pojmenujte akci stejně jako cílový adresář. Všimněte si, že nejnovější nástroje hromadné korespondence (ale ne některé starší verze) generují tyto vlastní akce v době sloučení, takže není vždy nutné explicitně vytvářet akce do modulu sloučení.

tabulky adresářů

Adresář Directory_Parent DefaultDir
ProgramFilesFolder Adresář1 A
StartMenuFolder Adresář2 B:C
AppDataFolder Adresář3 D
MyPicturesFolder Adresář 4 E

 

tabulky komponent

Komponenta Adresář
Component1.<GUID> ProgramFilesFolder
Součást2.<GUID> StartMenuFolder
Součást3.<GUID> AppDataFolder
Komponenta 4.<GUID> MyPicturesFolder

 

tabulky CustomAction

CustomAction Typ Zdroj Cíl
StartMenuFolder.<GUID> 51 StartMenuFolder.<GUID> [StartMenuFolder]
MyAppDataFolderAction 51 AppDataFolder.<GUID> [AppDataFolder]

 

tabulky ModuleInstallExecuteSequence

Akce Posloupnost BaseAction Po Podmínka
StartMenuFolder.<GUID> 100

 

referenční modulu sloučení ICE