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.
Katalog | Directory_Parent | DefaultDir |
---|---|---|
ProgramFilesFolder | Katalog1 | A |
StartMenuFolder | Katalog2 | B:C |
AppDataFolder | Katalog3 | D |
MyPicturesFolder | Katalog4 | E |
Składnik | Katalog |
---|---|
Składnik1.<IDENTYFIKATOR GUID> | ProgramFilesFolder |
Składnik2.<IDENTYFIKATOR GUID> | StartMenuFolder |
Składnik3.<IDENTYFIKATOR GUID> | AppDataFolder |
Składnik4.<IDENTYFIKATOR GUID> | MyPicturesFolder |
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 |
Tematy pokrewne