Can I read AssemblyFile information in Inno Setup

2019-05-01 01:25发布

问题:

I would like to read these three values from my application.exe in my Inno Setup script.

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

Does anyone know how this might be accomplished?

I know I can get the last one using GetFileVersion("path/to/greatapp.exe") is there something similar for the first two?

回答1:

Use the GetStringFileInfo() function provided by the Inno Setup Preprocessor (ISPP) as follows:

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

As you have already mentioned, you can use the GetFileVersion() function instead of #3 above.

Also, have a look at the ISPPBuiltins.iss script file included with your Inno Setup installation. It contains a GetFileCompany() function to use instead of #1 above and you can implement #2 above in a similar fashion.



回答2:

I dont know Inno Setup but I guess it supports custom actions like the other setup tools (Visual Studio, Wix, InstallShield or Wise).

So, you will need to create a custom action to read this information from the assembly. In your custom action, you need to add the following code to fetch the assembly attributes:

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
    }
}