Szczerze mówiąc, chciałbym zaproponować wam NIE stworzyć swój własny instalator. Jest wiele problemów związanych z tworzeniem instalatorów. Nawet najwięksi twórcy instalatorów nie tworzą już swoich własnych instalatorów, tylko tworzą niestandardowe pakiety MSI.
Użyj programu instalacyjnego Mirosoft (MSI). Jest to słuszne. Stwórz własny niestandardowy front-end, ale nie odtwarzaj już bardzo skomplikowanego koła, które istnieje.
AKTUALIZACJA: Jeśli robisz to po to, by się czegoś nauczyć, nie chciałbym myśleć o tym jako o "instalatorze". Możesz mieć ochotę wziąć swoje "badania" i wykorzystać je pewnego dnia, i szczerze mówiąc, tak właśnie kończymy z tak wieloma problemami, kiedy pojawiają się nowe wersje systemu Windows. Ludzie tworzą własne koła z niepoprawnymi założeniami.
To, co naprawdę próbujesz zrobić, nazywa się "pakowaniem" i naprawdę musisz się dokładnie zapoznać z formatem Executable PE, ponieważ mówisz o zmianie struktury obrazu PE na dysku.
Można symulować to, do pewnego stopnia, z umieszczaniem plików w zasobach, ale tak naprawdę nie robią to instalatorzy lub samorozpakowujące.
Oto link do samouczka Self-Extractor, ale nie ma go w języku C#.
Nie wiem wystarczająco dużo o wymaganiach .NET PE, aby wiedzieć, czy można to zrobić za pomocą wykonywanego kodu zarządzanego, czy też nie.
UPDATE2: Jest to prawdopodobnie więcej tego, czego szukasz, to osadza pliki w zasobach, ale tak jak powiedziałem, tak naprawdę nie jest tak, jak robią to profesjonalni instalatorzy lub self-extractory. Myślę, że istnieją różne ograniczenia co do tego, co możesz umieścić jako zasoby. Ale tutaj jest jak na Self-Extractor Demo napisane w C#.
z ciekawości, dlaczego programujesz własnego instalatora? –
Aby zobaczyć, czy mógłbym, faktycznie. – S3THST4
Ludzie zawsze mówią ci "Kod kodu, jeśli chcesz nauczyć się języka", dopóki nie zakodujesz czegoś, to wszystko NIE REINWALUJ TEH WHEEEEEEL – Rayne