ICEM09
ICEM09 verifierar att sammanslagningsmodulen hanterar fördefinierade kataloger på ett säkert sätt. Det gör den genom att kontrollera att ingen komponent i modulen installerar en katalog i en fördefinierad systemkatalog, till exempel "ProgramFilesFolder" eller "StartMenuFolder". Moduler bör i stället använda kataloger med unika namn (skapade med namngivningskonventionen för sammanslagningsmodulen) och använda anpassade åtgärder för att rikta in sig på rätt målkatalog. Den här metoden förhindrar att moduler strider mot en befintlig katalogstruktur i den slutliga databasen. ICEM09 kontrollerar att de anpassade åtgärder som krävs för att den här tekniken ska fungera antingen inte finns (så att kopplingsverktyget kan generera dem) eller finns i rätt form (så att de fungerar som förväntat).
Om du inte åtgärdar en varning eller ett fel som rapporteras av ICEM09 kan det orsaka problem för klienterna i din sammanslagningsmodul. Katalogtabellrader med primära nycklar som ProgramFilesFolder finns ofta i en databas. Om komponenterna i modulen installeras direkt på fördefinierade kataloger som ProgramFilesFolder kan katalogposterna i modulen därför kollidera med redan befintliga rader. Det här villkoret skulle kräva att användaren av modulen delar upp källfilerna från modulen för att matcha den befintliga källkatalogen.
Resultat
ICEM09 rapporterar ett fel eller en varning när en modulkomponent installerar en katalog i en fördefinierad systemkatalog, vilket orsakar en möjlig namnkonflikt med den befintliga katalogstrukturen.
Exempel
ICEM09 publicerar följande varningar för en modul som innehåller de databasposter som visas.
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.
Byt namn på katalogen för sammanslagningsmodulen så att den inte matchar en Windows Installer-egenskap och därför är unik. Ange sedan en egenskap med samma namn till värdet för Katalogen Windows Installer. När katalogmatchningen sker har katalogen en egenskap med samma namn, så platsen för katalogens installation är värdet för egenskapen. Filer flyttas från den distinkta källplatsen till samma målplats. Den här processen bör helt ta bort sammanslagningskonflikterna.
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'
Om åtgärden inte har sekvensnummer 1 kanske den inte sammanfogas till måldatabasen tillräckligt tidigt i sekvensen för att fungera effektivt.
Åtgärda varningen genom att ange sekvensnumret till 1. Observera att de flesta aktuella sammanslagningsverktyg (men inte vissa äldre versioner) genererar dessa anpassade åtgärder vid sammanslagningstillfället, så det är inte alltid nödvändigt att uttryckligen skriva åtgärderna till sammanslagningsmodulen.
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."
Eftersom kolumnen CustomAction är den primära nyckeln i CustomAction-tabellen kan vissa kopplingsverktyg generera duplicerade åtgärder eftersom det fördefinierade åtgärdsnamnet skiljer sig.
Åtgärda varningen genom att namnge åtgärden på samma sätt som målkatalogen. Observera att de flesta aktuella sammanslagningsverktyg (men inte vissa äldre versioner) genererar dessa anpassade åtgärder vid sammanslagningstillfället, så det är inte alltid nödvändigt att uttryckligen skapa åtgärderna i sammanslagningsmodulen.
Katalog | Directory_Parent | DefaultDir |
---|---|---|
ProgramFilesFolder | Katalog1 | A |
StartMenuFolder | Katalog2 | B:C |
AppDataFolder | Katalog3 | D |
MyPicturesFolder | Katalog4 | E |
Komponent | Katalog |
---|---|
Komponent 1.<GUID-> | ProgramFilesFolder |
Komponent 2.<GUID-> | StartMenuFolder |
Komponent 3.<GUID-> | AppDataFolder |
Komponent 4.<GUID-> | MyPicturesFolder |
CustomAction | Typ | Källa | Mål |
---|---|---|---|
StartMenuFolder.<GUID-> | 51 | StartMenuFolder.<GUID-> | [StartMenuFolder] |
MyAppDataFolderAction | 51 | AppDataFolder.<GUID-> | [AppDataFolder] |
ModuleInstallExecuteSequence Table
Handling | Sekvens | BaseAction | Efter | Tillstånd |
---|---|---|---|---|
StartMenuFolder.<GUID-> | 100 |
Relaterade ämnen