Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Автор проектов


Сообщения: 1576
Благодарности: 493

Профиль | Отправить PM | Цитировать


Прошу помощи.
В скрипте для конструктора 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 .....' , то всё нормально.
В чем может быть проблема

-------
Объективная реальность есть бред, вызванный недостатком алкоголя в крови.
Оптимизм есть недостаток информации.
Хочу быть змеёй, чтобы на работу лёжа ходить.
Конструктор инсталляторов на основе 7z SFX + готовые инсталляторы


Отправлено: 23:55, 09-04-2015 | #1572