Aplikacja WPF- instalator?

0

Witam,

Muszę stworzyć instalator do aplikacji WPF. W sieci pełno jest darmowych jak i płatnych kreatorów instalatorów, jednak nie spełniają one do końca moich oczekiwań (chodzi głównie o te darmowe). Przyszedł mi do głowy pomysł, aby samemu stworzyć instalator jako aplikację WPF (instalator w WPF do aplikacji WPF), z tym, że nie wiem na ile ten pomysł jest wykonalny w praktyce i tu moje pytanie:

Jak wiadomo WPF umożliwia dołączanie do projektu dowolnych plików i folderów- jako zasoby aplikacji (np. grafiki na przyciski, tekstury na okna itd). Do tych zasobów możemy się odnosić zarówno w "zwykłym kodzie" (np. za pomocą klasy URI) jak i w języku XAML. Więc skoro można dołączyć dowolne pliki, to chciałbym dołączyć do projektu całą skompilowaną aplikację (exe, pliki bazy danych itd) (czyli to do czego chce zrobić instalator). I tu pojawia się moje pytanie (jeśli ta koncepcja ma rację bytu w praktyce):
1.W jaki sposób pobrać pełną ścieżkę (lokalizację) tak załączonego pliku (zasobu aplikacji)?
2.Jak taki plik przekopiować do wskazanego katalogu na komputerze?

0

Nie wiem i nie wiem, ale widzę inny problem: program w C# będzie wymagał .Net Frameworka.
Jeśli na komputerze nie ma .neta w odpowiedniej wersji, jego instalkę można by zintegrować z instalatorem programu.
Ale gdy sam instalator wymaga .neta, to się po prostu nie uruchomi, i nie za bardzo będzie wiadomo dlaczego...

0

Jeśli nie ma .NETa w odpowiedniej wersji to wyskakuje okno które informuje o tym, że trzeba go zaktualizować i otwiera stronę z której można go pobrać :) Na Windowsie 7 8 i XP jest jakiś .NET domyślnie z tego co się orientuję. Generalnie to nie jest największy problem w tej chwili.

Bardziej interesuje mnie odpowiedź na moje pytania w pierwszym poście :)

0
PAV napisał(a):

Jeśli nie ma .NETa w odpowiedniej wersji to wyskakuje okno które informuje o tym, że trzeba go zaktualizować i otwiera stronę z której można go pobrać :)

Jak nie masz .NET Framework, to wyskakuje okienko informujące o tym, że to nie jest prawidłowa aplikacja systemu Windows, i nic poza tym, a już na pewno żadnych linków.

Bardziej interesuje mnie odpowiedź na moje pytania w pierwszym poście :)

A czego takiego nie ma np. Inno Setup, czego Ty potrzebujesz?

Natomiast odpowiedź na pytanie nr 1:

var s = Properties.Resources.nazwapliku;

I numer 2:

File.WriteAllText(@"C:\KatalogDocelowy\plikdocelowy.txt", Properties.Resources.nazwapliku);
0

Niestety, ale to nie działa... :(

0
PAV napisał(a):

Niestety, ale to nie działa... :(

Bo masz błąd w 129 linijce.

0

Excelsior Installer 1.5

ei-150-en-win32.exe

Po napisaniu i skompilowaniu własnego programu warto wyposażyć go w gustowny instalator.

Excelsior Installer jest specjalnym kreatorem, który świetnie się nadaje do tego zadania.

Całość pracy podzielona jest na cztery etapy.

Po stworzeniu projektu trzeba dodać do niego pliki,
które będą kopiowane w czasie instalacji.

Następnie ustala się szczegóły oraz definiuje,
które wpisy należy dodać do rejestru systemowego.

Na tym etapie dodaje się także skróty, które trzeba stworzyć.

Na końcu ustala się stopień kompresji plików:
im mniejszy ma być rozmiar programu wynikowego,
tym dłuższe będzie jego tworzenie oraz rozpakowywanie.

Może mieć to znaczenie przy dużych projektach.

1.5
Freeware
Excelsior LLC
www.excelsior-usa.com
Windows 2K/XP/Vista;266 MHz;128 MB

Sabine

1

Proponuje InnoSetup. Testowałem wiele ale tylko is ma ogromne możliwości łącznie (z tego co widzę) ze sprawdzaniem czy jest odpowiednia wersja .net i uruchomieniem instalacji jego. Wszystko robisz za pomocą skryptów. Na necie jest ogromna ilość przykładów.

0

Bardzo dziękuję za odpowiedzi... :)

Wracając jeszcze do problemu wyjściowego, rozumiem że moja koncepcja stworzenia instalatora nie jest do zrealizowania w praktyce?

1

Koncepta stworzenia własnego instalatora jest ok, sam kiedyś napisałem instalator online dla jednej własnej aplikacji tylko, że instalator uruchamiał się na każdym systemie w jakim miał to robić i tu jest błąd w twojej koncepcji ;) Instalator sam w sobie powinien być lekki i nie korzystać z żadnej biblioteki w której w systemie może nie być. Twój instalator korzystał by co najmniej z .net 3.5 który jak zapewne wiesz jest preinstalowany od win 7 w górę. Mógłbyś się ostatecznie pokusić o napisanie go w .net 2.0 z wykorzystaniem winforms. Na dzień dzisiejszy odpadł by problem z winform ale przychodzą inne problemy jak chociażby sprawdzenie wersji windows ( im nowsze vs tym mniej systemów wspiera np vs 2010 wspiera xp jedynie z sp3) i tak dalej i tak dalej

0

Twój instalator korzystał by co najmniej z .net 3.5 który jak zapewne wiesz jest preinstalowany od win 7 w górę

Jest albo i nie jest.
Windows is not a .NET Framework delivery channel either

0

Nie pomyślałem o tym, że można usunąć. Masz racje. No to pozostaje jeżeli coś własne to napisać kompletnie bez net frameworka, problem tylko taki, że albo będzie dużo większe niż powinno albo będzie oparte o winapi.

1 użytkowników online, w tym zalogowanych: 0, gości: 1