Прошу помощи.
В скрипте для
конструктора AkelPad я использую для запуска утилит команду вида:
Код:
ExecWait 'hidcon.exe takeown.exe /F "$R8"'
Я решил не применять hidcon.exe для скрытия консольных окон, а использовать nsExec::Exec. На Win 8.1 инсталлятор после замены стал вылетать с ошибкой. Исследуя логи определил, что прекращение работы инсталлятора происходит при обработке следующего куска скрипта:
Код:
loop:
${Locate} "$WINDIR\WINSxS\" "/L=F /M=notepad.exe" "WINSxS"
IfErrors loop 0
.
.
Function WINSxS
System::Call "advapi32::GetUserName(t .r0, *i ${NSIS_MAX_STRLEN} r1) i.r2"
nsExec::Exec 'takeown.exe /F "$R9"'
nsExec::Exec 'icacls.exe "$R9" /grant $0:F'
nsExec::Exec 'takeown.exe /F "$R8"'
nsExec::Exec 'icacls.exe "$R8" /grant $0:F'
${GetSize} "$WINDIR\" "/M=notepad.exe /S=0K /G=0" $R0 $R2 $R3
${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
Вылет происходит после команды Push $0. Если вместо nsExec::Exec использовать команду ExecWait 'hidcon.exe .....' , то всё нормально.
В чем может быть проблема