我想在我的Inno安装脚本中从我的application.exe中读取这三个值。
[assembly: AssemblyCompany("My Company")]
[assembly: AssemblyProduct("My Great Application")]
[assembly: AssemblyFileVersion("9.3.2")]
有谁知道如何实现这一目标?
我知道我可以使用GetFileVersion("path/to/greatapp.exe")获取最后一个 前两个有类似的东西吗?
答案 0 :(得分:8)
使用Inno Setup Preprocessor(ISPP)提供的GetStringFileInfo()
功能,如下所示:
GetStringFileInfo("path/to/greatapp.exe", "CompanyName")
GetStringFileInfo("path/to/greatapp.exe", "ProductName")
GetStringFileInfo("path/to/greatapp.exe", "FileVersion")
正如您已经提到的,您可以使用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
}
}