Честно говоря, я бы посоветовал вам НЕ создавать свой собственный установщик. Есть много проблем с созданием инсталляторов. Даже крупные производители установщиков больше не делают свои собственные настоящие установщики, они просто создают пользовательские пакеты MSI.
Используйте установщик Мирософт (MSI). Это правильно. Создайте для него свой собственный интерфейс, но не воссоздавайте уже существующее очень сложное колесо.
ОБНОВЛЕНИЕ: Если вы делаете это просто для обучения, я бы не стал думать об этом как об «установщике». У вас может возникнуть соблазн взять свое «исследование» и использовать его когда-нибудь, и, честно говоря, именно поэтому мы получаем так много проблем, когда выходят новые версии Windows. Люди создают свои собственные колеса с предположениями, которые недействительны.
То, что вы на самом деле пытаетесь сделать, называется «упаковкой», и вам действительно нужно хорошо познакомиться с форматом Executable PE, потому что вы говорите об изменении структуры PE-образа на диске.
Вы можете смоделировать это, поместив файлы в ресурсы, но на самом деле это не то, что делают установщики или самораспаковывающиеся программы.
Вот ссылка на руководство по Self-Extractor, но оно не на C#.
Я недостаточно знаю требования .NET PE, чтобы понять, можно ли это сделать с исполняемым файлом управляемого кода или нет.
ОБНОВЛЕНИЕ 2: Это, вероятно, больше того, что вы ищете, оно встраивает файлы в ресурс, но, как я уже сказал, это не совсем так, как это делают профессиональные установщики или самораспаковщики. Я думаю, что существуют различные ограничения на то, что вы можете вставлять в качестве ресурсов. А вот и демонстрация самоизвлекающегося, написанная на C#.
person
Erik Funkenbusch
schedule
08.02.2009