2009-09-16 1 views
5

Ich möchte diese drei Werte aus meiner Anwendung.exe in meinem Inno-Setup-Skript lesen.Kann ich AssemblyFile-Informationen in Inno-Setup lesen

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

Weiß jemand, wie dies erreicht werden könnte?

Ich weiß, ich kann die letzte mit GetFileVersion("path/to/greatapp.exe") bekommen Gibt es etwas ähnliches für die ersten beiden?

+0

Ich glaube nicht, dass dies möglich ist, da diese Attribute .NET-spezifisch sind. Es sei denn, Sie schreiben Ihre eigene Erweiterung, um dieses Ziel zu erreichen. Also habe ich es am Ende schwer, sie in meinem Skript zu programmieren. –

Antwort

8

Verwenden GetStringFileInfo() Funktion durch das Inno Setup Preprocessor (ISPP) wie folgt vorgesehen:

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

Wie Sie bereits erwähnt haben, können Sie die GetFileVersion() Funktion anstelle von # 3 oben verwenden.

Schauen Sie sich auch die Script-Datei ISPPBuiltins.iss an, die in Ihrer Inno Setup-Installation enthalten ist. Es enthält eine GetFileCompany() Funktion, die anstelle von # 1 oben verwendet wird, und Sie können # 2 oben auf ähnliche Weise implementieren.

0

Ich weiß nicht, Inno Setup, aber ich denke, es unterstützt benutzerdefinierte Aktionen wie die anderen Setup-Tools (Visual Studio, Wix, InstallShield oder Wise).

Sie müssen also eine benutzerdefinierte Aktion erstellen, um diese Informationen aus der Baugruppe zu lesen. In Ihrer benutzerdefinierten Aktion, müssen Sie den folgenden Code hinzufügen, um die Baugruppe Attribute zu holen:

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

Es kann sehr mühsam sein, da normalerweise Inno-Setup-Erweiterungen nicht in .NET erstellt werden, was bedeutet, dass Sie die Datei manuell analysieren müssen, um die Attribute abzufragen. –

+0

ich auf diese irgendwo gestolpert und dies scheint zu funktionieren: #define MyAsmVersion GetStringFileInfo ("C: \ ProjectFolder \ bin \ Release \" + ExeName, "Assembly Version") Es schien ein Raum zwischen 'Versammlung' zu müssen und 'Version' – TonyM

Verwandte Themen