2009-02-08 3 views
32

Хорошо, поэтому я работаю над программированием собственного установщика на C#, и то, что я хотел бы сделать, это что-то вроде строк в файле .exe, поэтому я могу do File.Copy (файл, filedir);Как хранить файлы в EXE

Или, если это невозможно, есть ли другой способ делать то, что я пытаюсь сделать?

+0

Из любопытства, почему вы программируете свой собственный установщик? –

+2

Чтобы узнать, могу ли я на самом деле. – S3THST4

+29

Люди всегда говорят вам «Код кодового кода, если вы хотите выучить язык», пока вы на самом деле не закодируете что-то, а затем все они НЕ ДОПУСКАЮТ TEH WHEEEEEEL – Rayne

ответ

28

Я бы не закодировал собственный установщик, но если вы действительно хотите встраивать файлы в свою сборку, вы можете использовать сильно типизированные ресурсы. В диалоговом окне свойств вашего проекта откройте вкладку «Ресурсы», а затем добавьте файл. После этого вы сможете получить файл с помощью:

ProjectNamespace.Properties.Resources.MyFile 

Тогда вы будете иметь возможность писать внедренный ресурс на диск с помощью:

System.IO.File.WriteAllBytes(@"C:\MyFile.bin", ProjectNamespace.Properties.Resources.MyFile); 
+0

Спасибо за ваш ответ, это то, что я ищу. Хорошо, поэтому я использую File.Copy(); и мне нужна перегрузка строк для Filepath. Любые предложения PS- Пробовал .ToString(); – S3THST4

+0

Что случилось с проектом C#, я связал вас с выше, в комплекте с исходным кодом? Разве это не то, что вы ищете? –

+0

Обновлено, чтобы показать, как вы можете записать файл на диск с помощью System.IO.File.WriteAllBytes –

4

Я предполагаю, что здесь, но если вы пытаетесь сохранить ресурсы в своем приложении перед компиляцией, вы можете в Project Explorer щелкнуть правой кнопкой мыши файл, который хотите добавить, выбрать свойства и изменить тип на Embedded Resource ,

Вы можете получить доступ к внедренным ресурсам позже, следуя инструкции из этого КБ: http://support.microsoft.com/kb/319292

8

Честно говоря, я хотел бы предложить вам не создать свой собственный инсталлятор. Существует много проблем с созданием инсталляторов. Даже крупные разработчики установщиков больше не делают своих собственных настоящих инсталляторов, они просто создают пользовательские пакеты MSI.

Используйте установщик Mirosoft (MSI). Это правильная вещь. Создайте свой собственный интерфейс для него, но не воссоздайте уже очень сложное колесо, которое существует.

ОБНОВЛЕНИЕ: Если вы просто делаете это для обучения, то я не буду думать об этом как «установщик». Возможно, у вас возникнет соблазн принять ваше «исследование» и использовать его когда-нибудь, и, честно говоря, вот так получилось так много проблем, когда появляются новые версии Windows. Люди создают свои собственные колеса с допущениями, которые недействительны.

То, что вы действительно пытаетесь сделать, называется «упаковка», и вам действительно нужно внимательно ознакомиться с форматом исполняемого PE, потому что вы говорите об изменении структуры образа PE на диске.

Вы можете смоделировать его, чтобы указать, с размещением файлов в ресурсах, но это не то, что делают установщики или самораспаковывающиеся.

Вот ссылка на учебное пособие Self-Extractor, но это не в C#.

Я не знаю достаточно о требованиях .NET PE, чтобы узнать, можете ли вы сделать это с помощью исполняемого кода управляемого кода или нет.

UPDATE2: Это, вероятно, больше того, что вы ищете, оно встраивает файлы в ресурс, но, как я уже сказал, на самом деле это не так, как это делают профессиональные установщики или самоизвлечения. Я думаю, что существуют различные ограничения на то, что вы можете внедрить в качестве ресурсов. Но вот что на Self-Extractor Demo написано на C#.

+1

Я бы определенно исследовал все доступные инсталляторы там, прежде чем писать свои собственные. Это то, о чем я говорил в «Do not Reinvent the Wheel, если вы не планируете больше узнать о колесах» http://www.codinghorror.com/blog/archives/001145.html –

+0

Единственная причина, по которой я был , должен был посмотреть, смогу ли я. Я не пытаюсь это сделать или что-то еще, просто пытаясь создать 1 форму, когда вы нажимаете «Установить», и она просто помещает файлы в каталог. – S3THST4

+1

S3thst4, Определенно сделайте исследование доступных инсталляторов, но не позволяйте nay-sayers отключить вас, большинство доступных инсталляторов оставляют желать лучшего, особенно MSI, определенно есть место для массового улучшения, установщики не ходят в парк, однако, быть подготовлен к жесткому трансплантату. –

0

в случае, если вы просто хотите сохранить несколько файлов в одном хранилище файлов (и извлеките файлы оттуда, взаимодействуйте и т. д.) вы также можете проверить NFileStorage, .net file storage. написанный на 100% .NET C# со всеми включенными источниками. Он также поставляется с интерпретатором командной строки, который позволяет взаимодействовать из командной строки.

Смежные вопросы