konfiguracja

InstallShield LE, Outlook Add-in i ścieżki względne

Dla jednego z klientów utrzymuję add-in do Outlooka. Instalator jest utworzony w InstallShield LE i działał świetnie tzn.: klient odpalał instalator, a w odpowiednim katalogu lądowały wszystkie pliki i plugin po prostu działał. Od roku pracujemy na wyższej wersji Visual Studio (upgrade z 2012 na 2015), zaś zamiast paczek przeszliśmy na repozytorium (wiem, wiem, ale tak było). Klient sobie ściąga nowy kod, kompiluje i podmienia dll’ki w lokalizacji Outlookowego add-ina.

Pewnego dnia, klient zgłasza problem, że wygenerował sobie instalator, który nie działa, to znaczy instalacja kończy się poprawnie, ale add-ina nie widać w Outlooku. Problemów było kilka:

  1. W rejestrze systemu nie było informacji o add-inie. Wystarczyło dodać odpowiedni klucz co w InstallShieldzie robi się poprzez przeciągnięcie istniejącego klucza w naszym systemie do szablonu w kreatorze i zrobione.
  2. O ile wygenerowany setup na mojej maszynie był prawidłowy, a więc działający to na maszynie klienta już nie było tak prosto. Otóż w pliku .isl (plik konfiguracyjny setupu InstallShielda) były zaszywane ścieżki bezwzględne do projektów na moim twardym dysku. Klient miał ściągnięte repozytorium do innej lokalizacji niż ja i otrzymywał błąd, że nie może skopiować plików, bo ich nie może znaleźć. Oczywiście wersja LE nie pozwala na korzystanie ze ścieżek względnych, a ja nie będę klientowi robić prezentów, bo mnie nie stać, zaś klient nie zapłaci, bo NIE.
    Po żmudnym przeklikiwaniu InstallShieldowego konfiguratora oraz przepastnego internetu w końcu znalazłem obejście:
    a) w InstallShieldowym projekcie, w sekcji „Specify Application Data” -> „Files” dodaję pliki, których nie zawiera ani „*.Debug.Symbols”, ani „*.Primary.Output”, u mnie jest to Nlog.config, *.vsto i *.manifest.
    b) w pliku .isl, odszukuję tabelę „Files” i zmieniam ścieżki do dodanych plików w pkt. a na następujące:

    <ISProjectFolder>\..\[nazwa projektu add-ina]\bin\Debug\Nlog.config

    lub

    <ISProjectFolder>\..\[nazwa projektu add-ina]\bin\Release\Nlog.config

    jeżeli kompilujemy w trybie Release. Foldery projektu InstallShield i projektu add-ina leżą na dysku koło siebie (w tym samym folderze).
    <ISProjectFolder> – to ścieżka do projektu InstallShield.

Chociaż nie jest to rozwiązanie nawet bliskie jakiegokolwiek ideału to … DZIAŁA!!! To znaczy, że kilku developerów może korzystać z jedne solucji i każdy będzie mógł generować setup. Należy tylko pamiętać o tym, że jak ustawimy ścieżkę na Debug to należy skompilować projekt add-ina w trybie debug, a jak w Release to release.

Leave a Reply

Your email address will not be published. Required fields are marked *