Получение версии файла 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}"