Я пытаюсь удалить еще один шаг в процессе выпуска моего приложения, автоматически получая информацию о версиях из моего исполняемого файла (в данном случае, приложения .NET).
До этого момента я был в состояниичтобы обойтись ограниченным знанием NSIS, но я быстро понимаю, что этого недостаточно.
Шаг 1: Объявление информации о версии в исполняемом файле
В AssemblyInfo.CS, я объявляю [assembly: AssemblyVersion("1.0.0.1")]
.Это успешно приводит к появлению информации о версии в скомпилированном исполняемом файле (в разделе «Версия файла» и «Версия продукта»).
Шаг 2. Получение информации о версии из исполняемого файла
Согласно этой статье о "GetFileVersion" , импорт "FileFunc.nsh" позволяет извлекать информацию о версии из исполняемого файла.
Используемый код:
Section
Var /GLOBAL version
${GetFileVersion} "C:\test.exe" $version
...
SectionEnd
Шаг 3. Проверка содержимого вызова функции
На основании раздела 5.1.7 документации я должен быть в состоянии печатать в командной строке во время компиляции, используяКоманда "! echo".Разница между печатью содержимого переменной (или константы и т. Д.) Все еще смущает меня, поэтому я попробовал все четыре из этих опций:
!echo $version
!echo "$version"
!echo "${version}"
!echo ${version}
Это приводит к:
$version (InstallScript.nsi:15)
$version (InstallScript.nsi:16)
${version} (InstallScript.nsi:17)
${version} (InstallScript.nsi:18)
Шаг 4: Объявление метаданных установщика
На основе раздел 4.8.3 , я должен иметь возможность добавлять метаданные установщика через VIProductVersion
и VIAddVersionKey
.
VIProductVersion $version
VIAddVersionKey "FileVersion" "$version"
В встроенном установщике это добавляет строку "$ version" в указанные поля.
Есть ли в NSIS эквивалент ToString()
?Как я могу получить доступ к содержимому переменной?Означает ли печать имени переменной, что она не имеет содержимого?Как я могу проверить, что GetFileVersion
вызывается правильно, выполняется правильно и возвращает значение?