Pregunta Incrustar automáticamente múltiples iconos en un ejecutable .NET


Básicamente tengo el mismo problema que esta pregunta: Insertar varios iconos en WPF EXE

Mi aplicación .NET 2.0 WinForms actualmente tiene esto al hacer clic en "Cambiar icono" en el explorador:

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

Lo que me gustaría ver, y con algo de piratería acerca de lo sugerido en el artículo anterior, obtengo esto:

EVEMon Multiple Icons http://www.richard-slater.co.uk/wp-content/uploads/2010/08/EVEMonIconsWhatIWant.png

Sin embargo, se pierde el proceso de obtener toda la información de versión para el ensamblaje. Necesito mantener la información de versión en el ensamblaje, ya que mi proceso de actualización automática se basa en esto para identificar la versión instalada de la aplicación.

También construyo la aplicación a través de un proceso de integración continuo, por lo que preferiría no tener ningún paso que requiera intervención manual, ¿es esto posible de manera automática?


5
2017-08-14 21:05


origen


Respuestas:


Acabo de crear una herramienta simple para hacer exactamente esto sin tener que meterme con los archivos .res. Es una pequeña utilidad que puede usar como parte de su evento Post-Build y le permite agregar todos los archivos de iconos en una carpeta particular a su ensamblaje. Si suponemos que tiene una carpeta de iconos debajo de la carpeta principal del proyecto, puede agregar el siguiente evento de creación posterior:

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

Una descripción más detallada y una descarga se pueden encontrar en http://einaregilsson.com/add-multiple-icons-to-a-dotnet-application/


7
2018-02-10 07:26



El artículo mencionado por ChrisF también borrará la información de su versión de ensamblaje. Una vez que sigas esa guía, deberías intentar usar el método de creación posterior que se describe aquí. http://blogs.msdn.com/b/cheller/archive/2006/08/24/718757.aspx para incrustar el manifiesto

EDITAR:

Es el "Método # 2 - El enfoque" genérico "(usando mt.exe)"


3
2017-08-14 22:20



Esta Artículo del proyecto de código tiene un tutorial sobre cómo hacer esto.

Básicamente se agregan más recursos de iconos al proyecto.


2
2017-08-14 21:14



Para mí, la solución más sencilla a ese problema es crear un archivo .res, que incluye solo los iconos que necesita (y los almacena en su orden preferido), deshabilitar un icono principal en las propiedades del proyecto y combinar el paquete de iconos previamente preparado (archivo .res) a su archivo .exe final, haciéndolo en un evento posterior a la construcción. Aunque, si este proceso puede ser completamente automatizado y mantener los datos de su manifiesto sin cambios, necesita en el último paso una herramienta externa (ResHacker), que le permite realizar un trabajo de fusión de archivos .res a través de la línea de comandos (por supuesto, Visual Studio puede hacer esto, pero hasta ahora sé que no hay una interfaz de línea de comandos para lograrlo; si me equivoco, corríjame )

  1. Descargue un archivo .res en blanco (http://www.codeproject.com/Tips/160885/How-to-Embed-Multiple-Icons-and-Color-Animated-Cur.aspx) y añádelo a tu proyecto

  2. Complete el archivo .res previamente agregado con sus iconos

  3. Eliminar icono principal de su proyecto (Proyecto -> Propiedades)

  4. Descargue un ResHacker herramienta (http://www.angusj.com/resourcehacker/) y colocarlo donde quieras

  5. Agregue una línea similar a su evento posterior a la construcción:

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

Eso es todo. Cada vez que compile su proyecto en modo Release, obtendrá un ícono deseado en su archivo .exe de destino.


1
2018-06-22 13:05