Получение версии файла NSIS с C#

Я написал скрипт установщика с помощью NSIS и добавил информацию о версии через VIProductVersion а также VIAddVersionKey команды. Когда я просматриваю свойства скомпилированного файла, информация о версии там, как я и ожидал.

Моя проблема, когда я пытаюсь получить информацию о версии с помощью команды C# FileVersionInfo.GetVersionInfo(fileName).FileVersion, он возвращает пустую строку.

Вот быстрый способ повторить:

NSIS Script

!include LogicLib.nsh
!include FileFunc.nsh

!define PRODUCT_NAME "Installer"
!define PRODUCT_VERSION "1.0.0.2"

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"

VIProductVersion "${PRODUCT_VERSION}"
VIAddVersionKey ProductVersion "${PRODUCT_VERSION}"

OutFile "Setup.exe"

Section "Installer"
SectionEnd

Код C#

class Program
{
    static void Main(string[] args)
    {
        FileVersionInfo fvi = FileVersionInfo.GetVersionInfo("Setup.exe");

        if (fvi != null)
        {
            Console.WriteLine(string.Format("File Version: {0}", fvi.FileVersion));
        }
        else
        {
            Console.WriteLine("Could not load file version info");
        }

        Console.WriteLine("Press any key to continue...");

        Console.Read();
    }
}

Это дает вывод:

File Version: 
Press any key to continue...

Что мне нужно, чтобы прочитать FileVersion как 1.0.0.2?

1 ответ

Решение

Я понял, что я делаю не так. Несмотря на то, что это выглядело правильно в диалоге свойств, я использовал неправильное значение с VIAddVersionKey, Чтобы он читался правильно, вы должны использовать VIAddVersionKey FileVersion "${PRODUCT_VERSION}"

Другие вопросы по тегам