средствами Visual Studio NET собрать прогу со всеми ресурсами

Тема в разделе ".NET", создана пользователем Guest, 24 июн 2005.

Статус темы:
Закрыта.
  1. Guest

    Guest Гость

    Можно ли средствами Visual Studio NET собрать прогу со всеми ресурсами и "хламом" в единый *.exe? Я, конечно, не инсталяцию имею ввиду а сокрытие "хлама". Может кто утилитки порекомендует?
     
  2. Dr.Gigabit

    Dr.Gigabit Гость

    А можно подробнее, что бы подразумеваете под "хламом"? Не совсем понятно...
    И что значит, "собрать прогу"? Есть некий Solution, состоящий из Project'ов... А проблема в чем-то?
     
  3. Guest_

    Guest_ Гость

    Подробнее: ну программа во время работы обращается к некоторым изображениям, 3D-моделям, звукам *.wav и др. Скажем, выводит в определённый момент заставочку *.bmp. Для того, чтобы скрыть эти ресурсы от праздного любопытства пользователя собирают их вместе с основной прогой в единый исполнимый файл или пакуют ресурсы в архивы, доступные основной проге, например, знаменитые игровые архивы. В результате проект имеет товарный вид, а главное - защищён. Как же это осуществить?
     
  4. starteg

    starteg Гость

    проще просто не бывает

    создаешь класс
    забиваешь туда по байтам или строками свою bmp и потом рисуешь ее из него тоже по байтикам или строками, можно для уверенности строки перемежевать с каким нибудь нужным для тебя текстом или звуком, только при выводе алгоритм шифровки соблюсти :D


    пихаешь все в коллекцию предварительно закрыв простейшим шифром
    например а=1 б=2 с=3 и т.д. перепаковываешь для верности архиватором достаешь дешифруешь .......


    есть много самых разных вариантов
     
  5. Nyxbull

    Nyxbull Гость

    Проще простого.. На примере картинки:

    1. Добавляешь картинку в проект
    2. в свойствах в Build Action ставишь Embedded Resource
    3. В программе пишешь следующий код:

    System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly();

    Stream myStream;

    myStream = myAssembly.GetManifestResourceStream("имя_Namespace.картинка.gif");
    Bitmap pic1 = new Bitmap(myStream);
    myStream.Close();

    Собственно, все.. в pic1 твоя картинка..
    Точно так же со всеми остальными ресурсами..
     
  6. Leonopulos

    Leonopulos Гость

    Для: Nyxbull
    Я именно так и делаю, но при дебаге студия (VS2005) выкидывает эксепшен NullReferenceException на строчке Bitmap pic1 = new Bitmap(myStream); т.е. myStream=null.
    пытаюсь ресурс в Command Line ассемблировать через /res: или /resource: - пишет Command was not specified.

    не понимаю.
    памажите, плиз.

    ЗЫ. Может это быть из-за того, что сервис пак не установлен?
     
  7. Pasha

    Pasha Гость

    Для: Leonopulos
    Embedded Resource для картинки выставил?
    Что передаешь как параметр в GetManifestResourceStream? Должно быть "Namespace.Filename.gif". Если угадать не получается - вызови в дебаге Assembly.GetExecutingAssembly().GetManifestResourceNames(); и посмотри список ресурсов.

    Это 100% не из за сервис пака. до него же люди как-то ресурсами пользовались...
     
  8. Leonopulos

    Leonopulos Гость

    Для: Pasha

    <!--QuoteBegin-Pasha+2:03:2007, 15:05 -->
    <span class="vbquote">(Pasha @ 2:03:2007, 15:05 )</span><!--QuoteEBegin-->Embedded Resource для картинки выставил?
    [snapback]57951" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    Обязательно.
    Делаю всё, как в хелпе.
    <!--QuoteBegin-Pasha+2:03:2007, 15:05 -->
    <span class="vbquote">(Pasha @ 2:03:2007, 15:05 )</span><!--QuoteEBegin-->Assembly.GetExecutingAssembly().GetManifestResourceNames();
    [snapback]57951" rel="nofollow" target="_blank[/snapback]​
    [/quote]
    гляну, спасибо.

    меня смущает, почему я не могу /res: воспользоваться?
     
  9. Pasha

    Pasha Гость

    это смотря куда /res вписывать
     
  10. Leonopulos

    Leonopulos Гость

    Для: Pasha
    Assembly.GetExecutingAssembly().GetManifestResourceNames(); помог.
    в ресурсах объект оказывается прописывется как "namespace.Resource.filename".
     
  11. Pasha

    Pasha Гость

    Для: Leonopulos
    Прописывается как root_namespace.relative_path.filename
     
  12. Leonopulos

    Leonopulos Гость

    Для: Pasha
    А можно ещё вопрос?
    Теперь с палитрой разобраться не могу.
    Почему-то весь курсор закрашивается в чёрный цвет.
    Хотя он исходный файл цветной.
     
  13. Pasha

    Pasha Гость

    Для: Leonopulos
    Выложи код, которым его загружаешь.
     
  14. Leonopulos

    Leonopulos Гость

    this.panel1.BackColor = System.Drawing.Color.Transparent;
    string[] names = Assembly.GetExecutingAssembly().GetManifestResourceNames();
    Assembly asm = Assembly.GetExecutingAssembly();
    Stream str = asm.GetManifestResourceStream("myNamespace.Resources.myCursor.cur");

    всё, а принципе, просто.
    я это делаю прямо в дизайнере. (Form1.Designer.cs)
     
  15. Pasha

    Pasha Гость

    Стандартный класс Cursor не поддерживает цветные курсоры, это прямо в MSDN в топике о нем написано. Загружай через ж... винапи. Вот примерно так:
    http://leifw.blogspot.com/2006/08/loading-...-in-net-20.html
     
  16. Leonopulos

    Leonopulos Гость

    Для: Pasha
    :)
    спасибо.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей