Artykuł

lis 06 2011
0

Tworzenie własnego projektu instalatora w Visual Studio

Za każdym razem, kiedy kończymy tworzenie jakiejś nowej aplikacji, bądź też wypuszczamy aktualizację dla programu dobrze znanego na rynku, zachodzi konieczność utworzenia, bądź też zaktualizowania instalatora dla tejże aplikacji. Oczywiście możemy pliki wykonywalne aplikacji wraz z zasobami dostarczyć naszym użytkownikom np. w postaci skompresowanego archiwum, jednak często jest to rozwiązanie nie do końca elastyczne i wygodne - wymaga choćby użycia dodatkowej aplikacji obsługującej kompresję plików.

Dlatego też warto posiąść wiedzę o tym i jak tworzyć własny instalator. Przy użyciu Visual Studio i projektu Setup Wizard jest to stosunkowo proste zadanie.

Zanim zaczniemy

Zanim zaczniemy budować instalator, musimy mieć coś, co będziemy mogli w nim zawrzeć. Potrzebna nam będzie zatem solucja (solution) oraz przynajmniej jeden projekt wewnątrz tej solucji. Oczywiście skrajnie zalecane jest to, by projekt był w stanie się skompilować:)

Powinniście również sprawdzić status wszelkich zasobów, które mają zostać zawarte w projekcie. Czy wszystkie zasoby są kompilowane, czy też może dołączane do folderu wyjścia? Po upewnieniu się, że wszystko jest tak jak być powinno, z czystym sumieniem możemy przystąpić do kolejnego kroku.

Setup Wizard

Po ustalenie wszystkich formalności, możemy przejść do konkretów. Docelowo, chcemy osiągnąć mniej więcej coś takiego jak na screenie 1:

Osobiście, wykorzystam do celów testowych projekt z aplikacją Multime, którą napisałem jakiś czas temu.

Aby rozpocząć, w Solution Explorerze dodajemy nowy projekt, a w oknie wyboru typu projektu, odnajdujemy Setup Wizard.

Wybranie właśnie tej opcji, pozwoli nam na szybkie tworzenie podstawowej struktury naszego instalatora, z wykorzystaniem wieloetapowego wizarda.

Pierwszy ekran, nie wniesie dla nas żadnej wartości dodanej i śmiało możemy od razu kliknąć Next.

Na drugim ekranie, musimy określić co chcemy instalować. Do wyboru mamy dwie opcje:

  • Standardowa aplikacja
  • Aplikacja webowa

Oczywiście wybór zależy od tego co przygotowujecie. W moim przypadku jest to standardowa aplikacja. W drugiej części okna, możecie również zdecydować się na utworzenie pakietu redystrybucyjnego, który będzie powiązany z instalatorem. Jeśli interesuje Was ta opcja, możecie wybrać pomiędzy dwoma wariantami:

  • Plik CAB
  • Merge Module

Po wybraniu wszystkich opcji, przycisk Next przeniesie Was na kolejny ekran.

W trzecim kroku, musimy określić elementy, które mają zostać włączone do naszego instalatora. Najważniejsza opcja to Primary output from..., która zawiera pliki DLL/EXE powstałe w wyniku kompilacji projektu. Reszta opcja jest już bardziej uzależniona od tego co mamy w naszym projekcie. Osobiście, zaznaczyłem również opcje:

  • Localized resources from...
  • Content files from...

Opis każdej z opcji, widoczny jest po zaznaczeniu wybranego wiersza na liście. Jeśli nie jesteście pewni, czy wszystko zostało zawarte, to bez obaw możecie przejść do kolejnego kroku. Elementy składowe (podobnie jak inne opcje z Wizarda), będzie można zmienić nawet po jego zakończeniu.

W czwartym kroku, możemy dołączyć pliki dodatkowe. Mogą to być np. ikony dla naszych skrótów umieszczanych w menu itp. Jeśli nie macie takich plików, możecie spokojnie pominąć ten krok.

Ekran piąty, to już tylko podsumowanie tego, co zdążyliśmy ustalić. Jeśli coś się nie zgadza, możemy się cofnąć do dowolnego kroku i to poprawić. Zmiany będą możliwe również po zakończeniu kreatora.

Dostrajanie projektu

Po zakończeniu wizarda (jeśli wszystko ustawiliście prawidłowo) powinniście mieć już pełnoprawny instalator. Kilka opcji, warto jednak zmienić już po zakończeniu kreatora.

Ustawienia projektu

Po zaznaczeniu naszego projektu w Solution Explorer, zmieni się zawartość okienka Properties na mniej więcej coś takiego, jak na screenie 6:

Kilka z tych opcji, ustawionych domyślnie warto zmienić. Oto krótka lista najciekawszych z nich:

  • Author - informacje o autorze - czyli o nas. Można podać nazwę naszej firmy, bądź też imię i nazwisko/pseudonim
  • InstallAllUsers - włącza/wyłącza tryb instalacji dla wszystkich użytkowników komputera
  • Localization - język instalatora - domyślnie ang., ale można zmienić na polski. Jeśli nie planujemy międzynarodowego podboju, warto zadbać o to by instalator przemówił do nas w rodzimym języku:)

  • ProductName - nazwa naszego produktu/aplikacji - najlepiej (jeśli tak nie jest) wpisać tu nazwę aplikacji
  • TargetPlatform - platforma docelowa x86/x64. Jeśli chcemy obsługiwać obie architektury, możemy dwa razy skompilować instalator, za każdym razem zmieniając ustawienie TargetPlatform. W tym przypadku, należy również zwrócić uwagę na ustawienie architektury w samym projekcie aplikacji. Najlepiej chyba, korzystać z Any CPU, a resztę zostawić instalatorowi i .Net.

Widoki/Perspektywy

Oprócz ustawień instalatora, warto również zwrócić uwagę na Widoki (Views) projektu instalatora. Dostęp do nich, możemy uzyskać na dwa sposoby (patrz screen) i każdy z nich dostarcza nowych możliwości.

Przyjrzyjmy się zatem poszczególnym perspektywom:

  • File system - jedna z najważniejszych perspektyw, pozwala podejrzeć docelową strukturę plików/katalogów w docelowym folderze aplikacji. W tym miejscu, możemy również utworzyć skróty w menu start oraz na pulpicie
  • Registry - na tej perspektywie, możemy dodać własne klucze do rejestru, bądź zmodyfikować istniejące. Klucze do rejestru, mogą być świetnym miejscem na przechowywanie ważnych ustawień aplikacji, które mogą być wykorzystywane już przy pierwszym jej uruchomieniu
  • File Types - obsługa typów plików - nie korzystałem z tego widoku
  • User Interface - możemy tutaj zmodyfikować/dodać/usunąć ekrany instalatora widoczne w instalacji zwykłej oraz administratora
  • Custom Actions - możemy tutaj zdefiniować niestandardowe akcje, jakie mają wykonać się w naszym instalatorze
  • Launch Conditions - definiujemy tutaj warunki uruchomienia instalacji. Jednym z takich warunków, jest np. odpowiednia wersja frameworka .Net

Podsumowanie

W dzisiejszym wpisie, przedstawiłem najważniejsze zagadnienia związane z tworzeniem instalatora w Visual Studio. Jak taki instalator wygląda, możecie się przekonać, pobierając i instalując moją aplikację Multime (można ją znaleźć w dziale download). Została ona przygotowana w dwóch wersjach, przeznaczonych na różne architektury.

Ważny jest również fakt, że jeśli nie zmieniacie w znaczący sposób struktury aplikacji, instalator powinien wykryć zmiany sam. Jednak w przypadku gdy np. dodacie nowy typ zasobu, który nie został wcześniej zdefiniowany w skrypcie instalatora, to będzie musieli dodać go ręcznie.

Data ostatniej modyfikacji: 27.03.2012, 08:53.

Podoba Ci się ten wpis? Powiedz o tym innym!

Send to Kindle

Komentarze

blog comments powered by Disqus