ОБСУЖДЕНИЕ

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

15 ответов 9,6 тыс.
Статус
Закрыто для дальнейших ответов.
Автор темы
Можно ли средствами Visual Studio NET собрать прогу со всеми ресурсами и "хламом" в единый *.exe? Я, конечно, не инсталяцию имею ввиду а сокрытие "хлама". Может кто утилитки порекомендует?
 
А можно подробнее, что бы подразумеваете под "хламом"? Не совсем понятно...
И что значит, "собрать прогу"? Есть некий Solution, состоящий из Project'ов... А проблема в чем-то?
 
Подробнее: ну программа во время работы обращается к некоторым изображениям, 3D-моделям, звукам *.wav и др. Скажем, выводит в определённый момент заставочку *.bmp. Для того, чтобы скрыть эти ресурсы от праздного любопытства пользователя собирают их вместе с основной прогой в единый исполнимый файл или пакуют ресурсы в архивы, доступные основной проге, например, знаменитые игровые архивы. В результате проект имеет товарный вид, а главное - защищён. Как же это осуществить?
 
проще просто не бывает

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


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


есть много самых разных вариантов
 
Проще простого.. На примере картинки:

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

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

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

Это 100% не из за сервис пака. до него же люди как-то ресурсами пользовались...
 
Для: 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: воспользоваться?
 
это смотря куда /res вписывать
 
Для: Pasha
Assembly.GetExecutingAssembly().GetManifestResourceNames(); помог.
в ресурсах объект оказывается прописывется как "namespace.Resource.filename".
 
Для: Leonopulos
Прописывается как root_namespace.relative_path.filename
 
Для: Pasha
А можно ещё вопрос?
Теперь с палитрой разобраться не могу.
Почему-то весь курсор закрашивается в чёрный цвет.
Хотя он исходный файл цветной.
 
Для: 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)
 
Стандартный класс Cursor не поддерживает цветные курсоры, это прямо в MSDN в топике о нем написано. Загружай через ж... винапи. Вот примерно так:
http://leifw.blogspot.com/2006/08/loading-...-in-net-20.html
 
Для: Pasha
:-)
спасибо.
 
Статус
Закрыто для дальнейших ответов.