我可以在Inno Setup中阅读AssemblyFile信息吗?

时间:2009-09-16 13:51:51

标签: .net installer inno-setup

我想在我的Inno安装脚本中从我的application.exe中读取这三个值。

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

有谁知道如何实现这一目标?

我知道我可以使用GetFileVersion("path/to/greatapp.exe")获取最后一个 前两个有类似的东西吗?

2 个答案:

答案 0 :(得分:8)

使用Inno Setup Preprocessor(ISPP)提供的GetStringFileInfo()功能,如下所示:

  1. GetStringFileInfo("path/to/greatapp.exe", "CompanyName")
  2. GetStringFileInfo("path/to/greatapp.exe", "ProductName")
  3. GetStringFileInfo("path/to/greatapp.exe", "FileVersion")
  4. 正如您已经提到的,您可以使用GetFileVersion()函数代替上面的#3。

    另外,请查看Inno安装程序安装中包含的ISPPBuiltins.iss脚本文件。它包含一个GetFileCompany()函数,而不是上面的#1,你可以用类似的方式实现上面的#2。

答案 1 :(得分:0)

我不知道Inno Setup,但我想它支持其他设置工具(Visual Studio,Wix,InstallShield或Wise)等自定义操作。

因此,您需要创建自定义操作以从程序集中读取此信息。在自定义操作中,您需要添加以下代码以获取程序集属性:

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