При создании установщика с помощью Inno Setup часто бывает полезным отобразить версии файлов (EXE и DLL), включенных в инсталлятор, особенно если вы хотите предоставить пользователям больше информации о программе. В этой статье мы рассмотрим, как отображать версии файлов в установщике Inno Setup на основе параметра, передаваемого программе.
Решение проблемы
Для отображения версий файлов в установщике Inno Setup можно использовать встроенные функции GetVersionNumbers или GetVersionNumbersString. Функция GetVersionNumbersString возвращает версию в формате "Основная.Второстепенная.Ревизия.Сборка", в то время как GetVersionNumbers возвращает компоненты версии, которые затем можно форматировать в нужном формате.
Пример использования GetVersionNumbersString:
function GetVersionNumbersString(const Filename: string): string;
var
Version: string;
begin
Result := GetVersionNumbersString(Filename, Version);
end;
Если вам нужно форматировать версию в другом формате, используйте GetVersionNumbers и отформатируйте компоненты версии самостоятельно, как показано в примере ниже:
function MyGetVersionNumbersString(const Filename: string): string;
var
MS, LS: Cardinal;
Major, Minor, Rev, Build: Cardinal;
begin
Result := GetVersionNumbers(Filename, MS, LS);
if Result then
begin
Major := MS shr 16;
Minor := MS and $FFFF;
Rev := LS shr 16;
Build := LS and $FFFF;
Result := Format('%d.%d.%d', [Major, Minor, Rev]);
end;
end;
Теперь, чтобы отобразить версии файлов на странице установщика, если параметр передается программе, вы можете использовать следующий код:
procedure ShowFileVersions;
var
i: Integer;
FileName: string;
begin
for i := 1 to Screen.FileCount do
begin
FileName := Screen.File(i).Name;
if FileName[1] <> '#' then
Memo1.Lines.Add(FileName + ': ' + MyGetVersionNumbersString(FileName));
end;
end;
procedure CurPageChange(CurPageID: Integer);
begin
if CurPageID = idPageWersjePlikow then
ShowFileVersions;
end;
if dev then
PageWersjePlikow :=
CreateOutputMsgMemoPage(
1, 'Wersje plików zawarte w instalatorze',
'Lista plików niewidoczna dla klienta',
'Pliki:', '');
В этом примере функция ShowFileVersions отображает версии всех файлов в установщике на странице PageWersjePlikow, если параметр передается программе. Функция CurPageChange вызывается при смене страницы установщика, и если текущей страницей является PageWersjePlikow, вызывается ShowFileVersions.
Альтернативный ответ
Если вы хотите проверить параметр командной строки, чтобы определить, нужно ли отображать версии файлов, можно использовать следующий код:
function GetParam: Boolean;
var
i: Integer;
begin
Result := False;
for i := 1 to ParamCount do
begin
if ParamStr(i) = '-p' then
begin
Result := True;
Break;
end;
end;
end;
В этом примере функция GetParam проверяет, был ли передан параметр -p программе. Если параметр был передан, функция возвращает True. Вы можете использовать эту функцию, чтобы определить, нужно ли отображать версии файлов на странице установщика.
Заключение
В этой статье мы рассмотрели, как отображать версии файлов в установщике Inno Setup на основе параметра, передаваемого программе. Мы использовали встроенные функции GetVersionNumbers и GetVersionNumbersString, чтобы получить версии файлов, и показали, как отобразить их на странице установщика, если параметр передается программе. Мы также рассмотрели альтернативный способ проверки параметра командной строки, чтобы определить, нужно ли отображать версии файлов.
При создании установщика Inno Setup можно отображать версии файлов (EXE и DLL) в инсталляторе на основе параметра, передаваемого программе, используя встроенные функции и проверяя параметр командной строки.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.