Цитата MKN:
PS нашёл причину... если FileVerInfo.nsh лежит в одном каталоге со скриптом - ошибка. стОит его убрать - всё ОК... »
|
Что-то у тебя там в сборке NSIS нахимичино, у меня инклуд в одной папке со скриптом и никаких проблем.
Цитата ya158:
Если вместо nsExec::Exec использовать команду ExecWait 'hidcon.exe .....' , то всё нормально.
В чем может быть проблема »
|
Вы используете плагин, который передаёт значения в NSIS инсталлятор, поэтому рекомендуется принимать значения из плагина командой
Pop, а не оставлять это "как хочется"
Код:
System::Call "advapi32::GetUserName(t .R4, *i ${NSIS_MAX_STRLEN} r1) i.r2"
${GetSize} "$WINDIR\" "/M=notepad.exe /S=0K /G=0" $R0 $R2 $R3
loop:
${Locate} "$WINDIR\WINSxS\" "/L=F /M=notepad.exe" "WINSxS"
IfErrors loop 0
Function WINSxS
nsExec::Exec 'takeown.exe /F "$R9"'
pop $R1
nsExec::Exec 'icacls.exe "$R9" /grant $R4:F'
pop $R1
nsExec::Exec 'takeown.exe /F "$R8"'
pop $R1
nsExec::Exec 'icacls.exe "$R8" /grant $R4:F'
pop $R1
${GetSize} "$R8" "/M=notepad.exe /S=0K /G=0" $R1 $R2 $R3
${If} $R0 == $R1
StrCpy $Path2 '$Path2,$R8'
${Else}
StrCpy $Path3 '$R8'
${EndIf}
Push $0
FunctionEnd
И старайтесь писать менее грязный код, не делайте так, как у вас написано - не закидывайте лишних команд в callback функции как в Locate, на этом коде не будет заметно, но если производить поиск всех файлов, то при каждом найденном файле у вас будут отрабатывать 2 команды, которые в этом месте кода не нужны, это я говорю про команду получения информации о файле
$WINDIR\notepad.exe и о вашей команде постоянного получения имени пользователя...