Честно говоря, я хотел бы предложить вам не создать свой собственный инсталлятор. Существует много проблем с созданием инсталляторов. Даже крупные разработчики установщиков больше не делают своих собственных настоящих инсталляторов, они просто создают пользовательские пакеты MSI.
Используйте установщик Mirosoft (MSI). Это правильная вещь. Создайте свой собственный интерфейс для него, но не воссоздайте уже очень сложное колесо, которое существует.
ОБНОВЛЕНИЕ: Если вы просто делаете это для обучения, то я не буду думать об этом как «установщик». Возможно, у вас возникнет соблазн принять ваше «исследование» и использовать его когда-нибудь, и, честно говоря, вот так получилось так много проблем, когда появляются новые версии Windows. Люди создают свои собственные колеса с допущениями, которые недействительны.
То, что вы действительно пытаетесь сделать, называется «упаковка», и вам действительно нужно внимательно ознакомиться с форматом исполняемого PE, потому что вы говорите об изменении структуры образа PE на диске.
Вы можете смоделировать его, чтобы указать, с размещением файлов в ресурсах, но это не то, что делают установщики или самораспаковывающиеся.
Вот ссылка на учебное пособие Self-Extractor, но это не в C#.
Я не знаю достаточно о требованиях .NET PE, чтобы узнать, можете ли вы сделать это с помощью исполняемого кода управляемого кода или нет.
UPDATE2: Это, вероятно, больше того, что вы ищете, оно встраивает файлы в ресурс, но, как я уже сказал, на самом деле это не так, как это делают профессиональные установщики или самоизвлечения. Я думаю, что существуют различные ограничения на то, что вы можете внедрить в качестве ресурсов. Но вот что на Self-Extractor Demo написано на C#.
Из любопытства, почему вы программируете свой собственный установщик? –
Чтобы узнать, могу ли я на самом деле. – S3THST4
Люди всегда говорят вам «Код кодового кода, если вы хотите выучить язык», пока вы на самом деле не закодируете что-то, а затем все они НЕ ДОПУСКАЮТ TEH WHEEEEEEL – Rayne