Winbot – pliki skojarzone z aplikacją

Kolejny tydzień prac dobiegł końca. Aplikacja małymi krokami rozwija się. Cały czas staram się dodawać interesujące funkcje lub rozwijać w miarę ciekawe problemy, aby nie zanudzać czytelników bloga moimi cotygodniowymi raportami z postępu prac. Według mnie, najciekawszy problem z jakim się zetknąłem w ostatnim tygodniu było skojarzenie plików z moim programem.

Chciałem aby po zainstalowaniu Winbota, można było eksportować z niego pliki, które później będą możliwe do uruchomienia bez użycia aplikacji. Najprostszym przykładem obrazującym moje zamiary jest edytor tekstowy (np. Word). Tworzymy tam pliki, następnie gdzieś je sobie zapisujemy i po zamknięciu edytora możemy uruchomić zapisany plik tekstowy, który włączy edytor. U mnie działanie będzie nieco inne. Winbot daje już możliwość eksportowania scenariuszy w postaci plików XML z rozszerzeniem WIB. Udało mi się osiągnąć efekt, gdzie po uruchomieniu takiego pliku zostaje wywołany ciąg zdarzeń:

  1. Winbot zostaje włączony,
  2. wykonywany jest scenariusz zapisany w danym pliku,
  3. Winbot zostaje wyłączony.

Okazało się, że problem jest dość łatwy do rozwiązania. Skojarzenie konkretnego rozszerzenia pliku z naszą aplikacją odbywa się poprzez dodanie odpowiednich wpisów do rejestru. O jakie konkretnie wpisy chodzi? Tego nie wiem. Na szczęście nie musiałem się w to zagłębiać aż tak bardzo. Skorzystałem z dostępnych opcji konfiguracyjnych WiX’a.

Oto zmiana jaką musiałem nanieść na plik konfiguracyjny instalatora. Został dodany element ProgId.

Dzięki tej zmianie, po zbudowaniu nowego instalatora i przeprowadzeniu instalacji, wszystkie pliki z rozszerzeniem WIB zostały skojarzone z Winbotem. To jednak nie koniec. Nasza aplikacja zostanie włączona, ale przecież w jakiś sposób trzeba wykryć, że maczał w tym palce jakiś plik, który wypadałoby teraz obsłużyć. To akurat jest trywialnie proste. Wystarczy w odpowiednim miejscu sprawdzić czy aplikacja została uruchomiona z jakimiś parametrami. W moim przypadku jest jeden parametr, który stanowi ścieżkę do danego pliku WIB. Aplikacja rozwijana jest w technologi WPF, a więc punktem wejścia jest tutaj plik App.xaml.cs. Nadpisałem w nim metodę OnSturtup w taki sposób.

To wystarczyło. Wszystko działa zgodnie z planem. Instalator dodaje odpowiednie wpisy do rejestru, a aplikacja jest w stanie obsłużyć nową ścieżkę przy uruchomieniu. Kolejny problem rozwiązany!

Dodaj komentarz

Twój adres email nie będzie opublikowany. Pola wymagane zostały oznaczone *