Mam aplikację o złożonych wymaganiach konfiguracyjnych. Jestem zaznajomiony z niektórymi narzędziami do tworzenia programów instalacyjnych takich jak Wix, projekt Visual Studio Setup, Inno-setup i narzędzia innych firm. W przypadku tej konkretnej aplikacji postanowiłem jednak napisać program instalacyjny od zera w języku C#, nie używając żadnego z tych narzędzi. Niektóre z argumentacji wyrażone przez Joel mają zastosowanie tutaj, z wyjątkiem chcę to zrobić w C# zamiast MFC.Jak utworzyć samodzielny, samodzielny program instalacyjny napisany w języku C#?
W każdym razie, moje pytanie brzmi: w jaki sposób mam utworzyć plik wykonywalny .NET, który może zawierać zestaw plików wyodrębnionych w czasie wykonywania? W tym przypadku exe jest programem instalacyjnym, a pliki są plikami programów, które trzeba zainstalować. Poza tym, jak sprawić, aby program był całkowicie niezależny, tzn. Mimo że korzystam z zewnętrznych złożeń (zarówno własnych, jak i zewnętrznych), chcę je spakować razem w pojedynczy plik EXE (w macierzystym świecie C/C++ to było realizowane poprzez łączenie statyczne).
UPDATE
To podejście Dostałem pracę tak daleko, co będę trzymać, chyba że ktoś sugeruje coś lepszego:
- Utworzono oczywisty plik XML zawierający listę wszystkich pliki i struktura folderów obejmująca aplikację instalowaną przez mój program instalacyjny. Dodałem ten plik do projektu VS dla programu instalacyjnego.
- Napisałem narzędzie w C# (zipfiles.exe), które pobiera plik XML i tworzy plik zip zawierający wszystkie pliki. To narzędzie korzysta z niesamowitej biblioteki DotNetZip, aby utworzyć zip.
- Dodano działanie poprzedzające kompilację do mojego projektu programu instalacyjnego, który uruchamia narzędzie zip z manifestem XML i wysyła plik zip (Files.zip) do folderu projektu.
- Dodano Files.zip jako zasób osadzony w moim projekcie programu instalacyjnego.
- Mój program instalacyjny przy starcie pobiera wbudowany ZIP i rozpina go do celu zainstalowania folder aplikacji (znowu przy użyciu DotNetZip)
- dodał działanie pokompilacyjnych do mojego projektu programu instalacyjnego, który używa narzędzia ILMerge na pakiet all zewnętrznych złożeń, które używa w exe.
Mam teraz projekt VS dla mojego programu instalacyjnego, który buduje samodzielny plik exe z wszystkimi plikami potrzebnymi do zainstalowania w nim osadzonego. Kiedy zmienia się lista plików instalowanej aplikacji, po prostu aktualizuję plik XML i odbudowuję.
Teraz mogę skupić się na pozostałej części mojej logiki instalacji!
pisanie "nic" w MFC jest całkowicie szalone! –
Czekaj, tylko dlatego, że Joel to zrobił, nie wyklucza, że jest szalony. Założył firmę programistyczną na Manhattanie, która nie jest również bankiem inwestycyjnym. To szalone! – JasonTrue
Cóż, były inne czasy ... Próbuję zrobić to samo, z wyjątkiem używania bardziej nowoczesnego języka C# – DSO