Толик Панков
hex_laden
............ .................. ................

October 2025
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Толик Панков [userpic]
NSIS: Получение даты и времени.

Преамбула


Иногда бывает нужно получить в скрипте установки локальную дату и время, или дату и время, связанную с файлом (модификации, создания или последнего доступа к файлу). В NSIS это делает одна стандартная функция, точнее, макрос ${GetTime}.

Подключаемые файлы и макрос


Для того, чтобы использовать GetTime, необходимо подключить заголовочный файл FileFunc.nsh (должен идти в стандартной поставке) и сам макрос GetTime:

!include "FileFunc.nsh"
!insertmacro GetTime


Вот начало инсталляционного скрипта:

Unicode true

!include "FileFunc.nsh"
!insertmacro GetTime

Name "GetLocalTime"
OutFile "GetLocalTime.exe"
ShowInstDetails show
RequestExecutionLevel User
;Далее будет тестовая секция


Синтаксис GetTime


${GetTime} "[File]" "[Option]" $var1 $var2 $var3 $var4 $var5 $var6 $var7

где:

- "[File]" - файл (параметр игнорируется при использовании опций "L" или "LS")
- "[Option]" - опции (см. далее)
- $var1 - День
- $var2 - Месяц
- $var3 - Год
- $var4 - День недели (наименование на английском языке)
- $var5 - Час
- $var6 - Минута
- $var7 - Секунда

Опции:

L - локальное время компьютера
A - время последнего доступа к файлу
C - время создания файла
M - время последнего изменения файла
LS - системное время (то же самое, что и L, только используется часовой пояс UTC)
AS - время последнего доступа к файлу (UTC)
CS - время создания файла (UTC)
MS - время последнего изменения файла (UTC)

Пример получения локального времени


Section "Test"
	
     ; Получаем время компьютера
	${GetTime} "" "L" $0 $1 $2 $3 $4 $5 $6
     ; Выводим его в окошко лога инсталлятора
	DetailPrint "Local date and time:"
	DetailPrint "$2/$1/$0 ($3) $4:$5:$6"
     ; Можно преобразовать время в строку
     ; чтоб добавить к имени файла
	DetailPrint "String to add time in filename:"
	StrCpy $0 "$2-$1-$0-$4-$5-$6"
     ; и вывести ее
	DetailPrint "$0"
	
SectionEnd


Результат




Ссылки


- Пример на GitHub
- how to get the date and time?
- E.1.6 GetTime

Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2023/03/19/nsis-poluchenie-daty-i-vremeni/

Tags: ,
Comments
(Anonymous)

сделай фотку с супом!

Конечно, странный комментарий в посте про NSIS, но сделаю. Постараюсь даже относительно художественную.