Как добавить вычисляемые строки, связанные с установкой, в сценарии InnoSetup?

В настоящее время, когда я обновляю программу, я делаю резервную копию существующих файлов в папку с именем backup в каталоге программы, например .

Source: "{app}\filename.exe"; DestDir: "{app}\backup"; Flags: external skipifsourcedoesntexist uninsneveruninstall

Есть ли способ указать или вычислить строки, чтобы код выглядел примерно так

Source: "{app}\filename.exe"; DestDir: "{app}\backup{date}"; Flags: external skipifsourcedoesntexist uninsneveruninstall

или объединить дату с информацией о предыдущей версии

Source: "{app}\filename.exe"; DestDir: "{app}\backup{previous version}{date}"; Flags: external skipifsourcedoesntexist uninsneveruninstall

person vfclists    schedule 11.03.2012    source источник
comment
Пример см. в этой статье.   -  person Deanna    schedule 12.03.2012
comment
@Дина, +1. очень хороший пример. возможно, вам следует опубликовать этот код в качестве ответа (не уверен). побочный комментарий, я думаю, что резервное копирование в каталог {app} - очень плохая идея (особенно если оно находится в Program Files). Общие данные приложения или даже папка Temp — лучшая идея.   -  person kobik    schedule 13.03.2012
comment
@kobik: Опубликовано. Я не использую и не оправдываю это, но некоторые люди хотят и думают, что им это нужно :)   -  person Deanna    schedule 13.03.2012
comment
Я понял, что сохранение информации в Program Files — плохая идея после Vista и Windows 7. Мне это сходит с рук в Windows XP, но это изменится.   -  person vfclists    schedule 14.03.2012


Ответы (2)


Прочтите Сценарии на языке Pascal: скриптовые константы и Сценарии на языке Pascal: Справочник по функциям поддержки. Также прочитайте это и это. Во всяком случае, я сделал так:

[Dirs]
; create an empty folder...
Name: "{app}\{code:MyDateTimeString}"

[Code]
function MyDateTimeString(Param: String): String;
begin
  Result := GetDateTimeString('yyyy.mm.dd_hh.nn.ss', #0, #0);
end;
person Community    schedule 13.03.2012

Вы можете добавить динамические значения времени выполнения, используя {code:...} константы.

Пример получения текущей даты и создания резервной копии папки установки можно увидеть в вики ISXKB

person Deanna    schedule 13.03.2012
comment
Мне пришлось наградить @Gregory, потому что он ответил первым. Всего 35 баллов, действительно ТАКОЙ новичок!! - person vfclists; 14.03.2012
comment
Проверьте свое время :) Но да, я склонен голосовать за более полные ответы и за новых пользователей. - person Deanna; 14.03.2012
comment
Сейчас я большую часть своего времени занимаюсь inno-setup, так как я быстро ухожу от NSIS и иду к INNO! Таким образом, я смог помочь с этим, а также помочь себе, пытаясь сделать что-то подобное. Я думаю, именно поэтому StackOverflow так хорош; в концепции и реализации! Приветствую всех (и постарайтесь расслабиться с этим голосованием! LOL) - person ; 14.03.2012