Udostępnij za pośrednictwem


ICEM09

ICEM09 sprawdza, czy moduł scalania bezpiecznie obsługuje wstępnie zdefiniowane katalogi. W tym celu należy sprawdzić, czy żaden składnik w module nie instaluje katalogu w wstępnie zdefiniowanym katalogu systemowym, takim jak "ProgramFilesFolder" lub "StartMenuFolder". Zamiast tego moduły powinny używać katalogów o unikatowych nazwach (utworzonych z konwencją nazewnictwa modułu scalania) i używać akcji niestandardowych do określania celu odpowiedniego katalogu docelowego. Takie podejście uniemożliwia modułom konflikt z istniejącą strukturą katalogów w końcowej bazie danych. ICEM09 sprawdza, czy akcje niestandardowe potrzebne do wykonania tej techniki nie istnieją (aby narzędzie scalania mogły je wygenerować) lub istniały w poprawnym formularzu (tak aby działały zgodnie z oczekiwaniami).

Błąd usunięcia ostrzeżenia lub błędu zgłoszonego przez ICEM09 może spowodować problemy dla klientów modułu scalania. Wiersze tabeli katalogów z kluczami podstawowymi, takimi jak ProgramFilesFolder, często istnieją w bazie danych; dlatego jeśli składniki w module są instalowane bezpośrednio do wstępnie zdefiniowanych katalogów, takich jak ProgramFilesFolder, wpisy katalogu w module mogą zderzyć się z już istniejącymi wierszami. Ten warunek wymagałby od użytkownika modułu podzielenia plików źródłowych z modułu w celu dopasowania do istniejącego katalogu źródłowego.

Wynik

ICEM09 zgłasza błąd lub ostrzeżenie, gdy składnik modułu instaluje katalog we wstępnie zdefiniowanym katalogu systemowym, co powoduje konflikt nazwy z istniejącą strukturą katalogów.

Przykład

ICEM09 publikuje następujące ostrzeżenia dotyczące modułu zawierającego wyświetlane wpisy bazy danych.

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.

Zmień nazwę katalogu modułu scalania, aby nie był zgodny z właściwością Instalatora Windows i dlatego jest unikatowy. Następnie ustaw właściwość o tej samej nazwie na wartość katalogu Instalatora Windows. Po zakończeniu rozpoznawania katalogu katalog ma właściwość o tej samej nazwie, więc lokalizacja instalacji katalogu jest wartością właściwości . Pliki są przenoszone z odrębnej lokalizacji źródłowej do tej samej lokalizacji docelowej. Ten proces powinien całkowicie usunąć konflikty scalania.

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'

Jeśli akcja nie ma numeru sekwencji 1, może nie zostać scalona z docelową bazą danych wystarczająco wcześnie w sekwencji, aby skutecznie działać.

Aby naprawić to ostrzeżenie, ustaw numer sekwencji na 1. Należy pamiętać, że większość bieżących narzędzi scalania (ale nie niektórych starszych wersji) spowoduje wygenerowanie tych akcji niestandardowych w czasie scalania, dlatego nie zawsze jest konieczne jawne utworzenie akcji w module scalania.

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

Ponieważ kolumna CustomAction jest kluczem podstawowym tabeli CustomAction, niektóre narzędzia scalania mogą generować zduplikowane akcje, ponieważ nazwa akcji wstępnie utworzonej jest inna.

Aby naprawić to ostrzeżenie, nazwij akcję tak samo jak katalog docelowy. Należy pamiętać, że większość bieżących narzędzi scalania (ale nie niektórych starszych wersji) generuje te niestandardowe akcje w czasie scalania, więc nie zawsze jest konieczne jawne utworzenie akcji w module scalania.

tabeli katalogów

Katalog Directory_Parent DefaultDir
ProgramFilesFolder Katalog1 A
StartMenuFolder Katalog2 B:C
AppDataFolder Katalog3 D
MyPicturesFolder Katalog4 E

 

tabeli składników

Składnik Katalog
Składnik1.<IDENTYFIKATOR GUID> ProgramFilesFolder
Składnik2.<IDENTYFIKATOR GUID> StartMenuFolder
Składnik3.<IDENTYFIKATOR GUID> AppDataFolder
Składnik4.<IDENTYFIKATOR GUID> MyPicturesFolder

 

tabeli CustomAction

CustomAction Typ Źródło Cel
StartMenuFolder.<IDENTYFIKATOR GUID> 51 StartMenuFolder.<IDENTYFIKATOR GUID> [StartMenuFolder]
MyAppDataFolderAction 51 AppDataFolder.<IDENTYFIKATOR GUID> [AppDataFolder]

 

ModuleInstallExecuteSequence Table

Akcja Kolejność BaseAction Po Warunek
StartMenuFolder.<IDENTYFIKATOR GUID> 100

 

scalanie modułu ICE — dokumentacja