Bywa jednak, że instalowany pakiet jest n.p. AddInem etc., co wymusza konieczność jego rejestracji przy użyciu narzędzia RegAsm.
InnoSetup nie zawiera bezpośredniego polecenia rejestrowania zestawów, a dodatkowych plików wsadowych, uruchamianych przez EndUsera nie będziemy przecież narzucać - w myśl zasady "pełen automat".
Co więc zrobić?
Z pomocą przychodzi nam sekcja "Run" skryptu InnoSetup.
W tejże sekcji możemy z powodzeniem umieścić komendę, która nasze Assembly przy użyciu RegAsm zarejestruje:
[Run]
Filename:"{reg:HKLM\SOFTWARE\Microsoft\.NETFramework,InstallRoot}\v4.0.30319\RegAsm.exe"; Parameters: /codebase NaszAddinLubCokolwiek.dll;WorkingDir: {code:PluginDestination}; StatusMsg: "Rejestracja Pluginu ..."; Flags: runhidden;
Dobrze. Zarejestrowaliśmy. Ale co z tym zrobić, kiedy nasz dodatek będzie odinstalowywany? Przecież nie możemy zezwolić, by pozostał po nim śmietnik.
Tym razem z pomocą przychodzi sekcja [UninstallRun] Skryptu. W niej z kolei umieszczamy następującą linię:
[UninstallRun]
Filename:"{reg:HKLM\SOFTWARE\Microsoft\.NETFramework,InstallRoot}\v4.0.30319\RegAsm.exe"; Parameters: /unregister NaszAddinLubCokolwiek.dll;WorkingDir: {code:PluginDestination}; StatusMsg: "Odrejestrowywanie Pluginu ..."; Flags: runhidden;
W ten oto sposób bez pisania dodatkowych batchy, tworzenia kolejnych tooli do rejestracji etc. przeprowadzamy cały proces czysto i schludnie.
BTW: jeśli komuś z Was nasuwają się jakieś pytania dotyczące narzędzia Inno Setup - w miarę wiedzy własnej postaram się pomóc. Pytania proszę zadawać w komentarzach - odpiszę, bądź jeśli taka będzie potrzeba - stworzę nowy artykuł.
W planie: krótkie (bardzo) wprowadzenie do MEF Framework ;) - czyli jak w niezwykle prosty sposób stworzyć szkielet dla rozwiązań wielomodułowych.