Цитата wolkow70:
Это мне понятно. Чую, что можно как-то сделать, чтобы в ручную не править. А с какой стороны
подобраться не дотягиваю »
|
Можно так
Код:
Function PREINSTFILES ;это функция будет выполнена только в режиме генератора
${If} $GMODE = 1 ;режим генератора
StrCpy `$R0` "$INSTDIR"
${WordReplace} $R0 ":\Program Files" "%programfiles%" "+1" `$R1`
StrCmp `$R1` `$R0` +2
StrCpy `$R1` `$R1` "" 1
${WordReplace} `$R1` ":\Windows" "%windir%" "+1" `$R0`
StrCmp `$R0` `$R1` +2
StrCpy `$R0` `$R0` "" 1
${WordFind} `$R0` "Application Data" "E+2*}" `$R1`
StrCmp $R1 1 +2
StrCpy `$R0` "%appdata%$R1"
WriteINIStr "$INIFILE" "DIRECTORY" "ISTALLDIR" "$R0" ;создаем файл конфигурации
${EndIf}
FunctionEnd
Но здесь есть не доработка, если задать путь
С:\Application Data\Soft, то подменится на
%appdata%\Soft
В зависимости от
SetShellVarContext current|all > %appdata% > возвращает путь к профилю текущего пользователя или всех пользователей.
Для других системных переменных подумайте, есть в папке
Examples скрипт
WordFunc.nsi, где можно потренироваться c строковыми функциями подставляя свои значения строк и настроек парсирования строк.