2009-09-16 8 views
5

? Me gustaría leer estos tres valores de mi application.exe en mi script Inno Setup.¿Puedo leer la información del archivo de ensamblaje en Inno Setup

[assembly: AssemblyCompany("My Company")] 
[assembly: AssemblyProduct("My Great Application")] 
[assembly: AssemblyFileVersion("9.3.2")] 

¿Alguien sabe cómo se podría lograr esto?

Sé que puedo obtener el último usando GetFileVersion("path/to/greatapp.exe") ¿Hay algo similar para los dos primeros?

+0

No creo que sea factible ya que esos atributos son específicos de .NET. A menos que escriba su propia extensión para lograr ese objetivo. Así que termino con una codificación difícil en mi script. –

Respuesta

8

Utilice la función GetStringFileInfo() proporcionada por la disposición de Inno preprocesador (ISPP) de la siguiente manera:

  1. GetStringFileInfo("path/to/greatapp.exe", "CompanyName")
  2. GetStringFileInfo("path/to/greatapp.exe", "ProductName")
  3. GetStringFileInfo("path/to/greatapp.exe", "FileVersion")

Como ya lo mencionó, puede usar la función GetFileVersion() en lugar del n. ° 3 anterior.

Además, eche un vistazo al archivo de script ISPPBuiltins.iss incluido con la instalación de Inno Setup. Contiene una función GetFileCompany() para usar en lugar del n. ° 1 anterior y puede implementar el n. ° 2 anterior de forma similar.

0

No sé Inno Setup pero supongo que admite acciones personalizadas como las otras herramientas de configuración (Visual Studio, Wix, InstallShield o Wise).

Por lo tanto, deberá crear una acción personalizada para leer esta información del ensamblaje. En nuestra propia acción, es necesario agregar el código siguiente para buscar atributos del conjunto:

Assembly assembly = Assembly.LoadFrom (@"path\to\greatapp.exe"); 
object[] attributes = assembly.GetCustomAttributes(true); 

if (attributes.Length > 0) 
{ 
    foreach (object o in attibutes) 
    { 
     //Do Something with the attribute 
    } 
} 
+0

Puede requerir un gran esfuerzo, ya que las extensiones de Inno Setup no se crean en .NET, lo que significa que necesita analizar el archivo manualmente para consultar los atributos. –

+0

me encontré con esto en alguna parte y esto parece que funciona: #define MyAsmVersion GetStringFileInfo ("C: \ ProjectFolder \ bin \ Release \" + ExeName, "Asamblea Version") Parecía necesitar un espacio entre 'Asamblea' y 'Versión' – TonyM

Cuestiones relacionadas