Автоматически вставлять несколько значков в исполняемый файл .NET - PullRequest
5 голосов
/ 15 августа 2010

У меня в основном та же проблема, что и у этого вопроса: Встраивание нескольких значков в WPF EXE

В моем приложении .NET 2.0 для WinForms в настоящее время возникает такая проблема, когда вы нажимаете "Изменить значок" в проводнике:

EVEMon Single Icon http://www.richard -slater.co.uk / wp-content / uploads / 2010/08 / EVEMonIconsWhatIHave.png

Что бы я хотел увидетьи с некоторым взломом, как предложено в приведенной выше статье, я получаю это:

EVEMon Несколько иконок http://www.richard -slater.co.uk / wp-content / uploads / 2010/08 / EVEMonIconsWhatIWant.png

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

Я также создаю приложение с помощью процесса непрерывной интеграции, поэтому я бы предпочел не делать этого.есть какие-либо шаги, которые требуют ручного вмешательства, так возможно ли это в автоматическом режиме?

Ответы [ 4 ]

7 голосов
/ 10 февраля 2012

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

C:\path\to\InsertIcons.exe $(TargetPath) $(ProjectDir)icons

Дополнительное описание и файл для загрузки можно найти по адресу http://einaregilsson.com/add-multiple-icons-to-a-dotnet-application/

3 голосов
/ 15 августа 2010

Статья, упомянутая ChrisF, также уничтожит информацию о версии вашей сборки. После того, как вы последуете этому руководству, вы можете попробовать использовать метод пост-сборки, описанный здесь http://blogs.msdn.com/b/cheller/archive/2006/08/24/718757.aspx для встраивания манифеста.

EDIT:

Это «Метод № 2 -« Общий »подход (с использованием mt.exe)»

2 голосов
/ 15 августа 2010

В этой статье Code Project есть пошаговое руководство, как это сделать.

По сути, вы добавляете больше ресурсов значков в проект.

1 голос
/ 22 июня 2011

Для меня самое простое решение этой проблемы - создать файл .res, который содержит только нужные вам иконки (и сохраняет их в выбранном вами порядке), отключить основной значок в свойствах проекта и объединить ранее подготовленный пакет значков (.res файл) к вашему окончательному файлу .exe, делая это в событии после сборки.Хотя, если этот процесс может быть полностью автоматизирован и сохранить ваши данные манифеста без изменений, на последнем шаге ему понадобится внешний инструмент ( ResHacker ), который позволит вам выполнить задачу объединения файлов .res через командную строку (изКонечно, Visual Studio может это сделать, но, насколько я знаю, нет интерфейса командной строки для его достижения - если я ошибаюсь, пожалуйста, исправьте меня).

  1. Загрузите бланк.Файл res (http://www.codeproject.com/Tips/160885/How-to-Embed-Multiple-Icons-and-Color-Animated-Cur.aspx) и добавьте его в свой проект

  2. Заполните ранее добавленный файл .res своими иконками

  3. УдалитьГлавный значок из вашего проекта (Проект -> Свойства)

  4. Загрузите инструмент ResHacker (http://www.angusj.com/resourcehacker/) и поместите его куда хотите

  5. Добавьте аналогичную строку к вашему событию после сборки:

    if $(ConfigurationName) == Release (
      ..\..\..\..\..\Tools\ResHack\ResHacker.exe -add $(TargetPath), $(TargetPath), $(ProjectDir)Properties\AssemblyWin32.res ,,,
    )
    

Вот и все. Каждый раз, когда вы компилируете свой проект в режиме выпуска, вы получите нужные значкив ваш конечный файл .exe.

...