2009-09-16 15 views
5

Vorrei leggere questi tre valori dal mio application.exe nel mio script Inno Setup.Posso leggere le informazioni AssemblyFile in Inno Setup

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

Qualcuno sa come questo potrebbe essere realizzato?

So che posso ottenere l'ultimo utilizzando GetFileVersion("path/to/greatapp.exe") c'è qualcosa di simile per i primi due?

+0

Non penso che sia fattibile dato che questi attributi sono specifici di .NET. A meno che non si scriva la propria estensione per raggiungere tale obiettivo. Quindi finisco con un duro codice nella mia sceneggiatura. –

risposta

8

Utilizzare la funzione GetStringFileInfo() fornita dal Inno Setup preprocessore (ISPP) come segue:

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

Come già accennato, è possibile utilizzare la funzione GetFileVersion() anziché # 3 sopra.

Inoltre, dai un'occhiata al file di script ISPPBuiltins.iss incluso con l'installazione di Inno Setup. Contiene una funzione da GetFileCompany() da usare al posto del precedente # 1 e puoi implementare il # 2 sopra in modo simile.

0

Non conosco Inno Setup ma suppongo che supporti azioni personalizzate come gli altri strumenti di configurazione (Visual Studio, Wix, InstallShield o Wise).

Quindi, sarà necessario creare un'azione personalizzata per leggere queste informazioni dall'assieme. Nella vostra azione personalizzata, è necessario aggiungere il seguente codice per recuperare gli attributi di assemblaggio:

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

Può richiedere molto impegno, poiché in genere le estensioni di Inno Setup non sono create in .NET, il che significa che è necessario analizzare il file manualmente per interrogare gli attributi. –

+0

ci siamo imbattuti in questo da qualche parte e questo sembra funzionare: #define MyAsmVersion GetStringFileInfo ("C: \ ProjectFolder \ bin \ Release \" + nomeexe, "Montaggio Version") E sembrava aver bisogno di uno spazio tra 'Assembly' e "Versione" – TonyM

Problemi correlati