Могу ли я прочитать информацию AssemblyFile в Inno Setup - PullRequest
6 голосов
/ 16 сентября 2009

Я хотел бы прочитать эти три значения из моего application.exe в моем сценарии установки Inno.

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

Кто-нибудь знает, как это можно сделать?

Я знаю, что могу получить последний, используя GetFileVersion ("путь / к / greatapp.exe") есть ли что-то похожее для первых двух?

Ответы [ 2 ]

9 голосов
/ 16 февраля 2012

Используйте функцию GetStringFileInfo(), предоставляемую препроцессором настройки Inno (ISPP), следующим образом:

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

Как вы уже упоминали, вы можете использовать функцию GetFileVersion() вместо # 3 выше.

Также обратите внимание на файл сценария ISPPBuiltins.iss, включенный в установку Inno Setup. Он содержит функцию GetFileCompany() для использования вместо # 1 выше, и вы можете реализовать # 2 выше аналогичным образом.

0 голосов
/ 16 сентября 2009

Я не знаю 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
    }
}
...