.: NSIS - все вопросы :. часть 2.
-
iglezz
Re: .: NSIS - все вопросы :. часть 2.
AlekseyPopovv,
Решением, думаю, стоит поделиться -- может ещё сгодится кому-нибудь.
Решением, думаю, стоит поделиться -- может ещё сгодится кому-нибудь.
-
AlekseyPopovv
Re: .: NSIS - все вопросы :. часть 2.
iglezz, Придумал сам, может есть что то лучше и проще...
Скрытый текст
[spoiler]Код: [/spoiler]
Скрытый текст
[spoiler]Код: [/spoiler]
Код: Выделить всё
Replay:
ExecWait "Proga\Proga.exe"
Sleep 50
${If} ${ProcessExists} "Proga.exe"
${KillProcess} "Proga.exe" $R0
Goto Replay
${Else}
Sleep 50
${EndIf}-
Cyberworm
Re: .: NSIS - все вопросы :. часть 2.
Цитата inco1:
Всем доброго времени суток.
В установщике с помощью ExecShell "open" "$INSTDIR\readme.txt" запускается текстовый документ. Но также продолжают срабатывать все последующие команды.
Как нужно сделать, чтобы после запуска этого документа следующие команды в установщике не запускались до тех пор, пока пользователь сам не закроет этот документ. Или это сделать не возможно?
ExecWait '"$WINDIR\Notepad.exe" "$INSTDIR\readme.txt"'
Либо, как ответил iglezz, ExecShellWait, тогда запустится ассоциированная с txt программа.
Всем доброго времени суток.
В установщике с помощью ExecShell "open" "$INSTDIR\readme.txt" запускается текстовый документ. Но также продолжают срабатывать все последующие команды.
Как нужно сделать, чтобы после запуска этого документа следующие команды в установщике не запускались до тех пор, пока пользователь сам не закроет этот документ. Или это сделать не возможно?
.: NSIS - все вопросы :. часть 2.
ExecWait '"$WINDIR\Notepad.exe" "$INSTDIR\readme.txt"'
Либо, как ответил iglezz, ExecShellWait, тогда запустится ассоциированная с txt программа.
-
Cyberworm
Re: .: NSIS - все вопросы :. часть 2.
iglezz, Спасибо. Это именно то, что мне нужно. Потратил час на поиск в справке и не нашел, а вы мне за 3 минутки.
Begin2Fly, Благодарю. Экспериментну с обеими вариантами.
Begin2Fly, Благодарю. Экспериментну с обеими вариантами.
-
iglezz
Re: .: NSIS - все вопросы :. часть 2.
Cyberworm, Что-то я слона сразу не приметил 
HKEY_LOCAL_MACHINE\ удалить надо.
Какие, кстати? версия NSIS и разрядность Steam и Windows?

HKEY_LOCAL_MACHINE\ удалить надо.
Какие, кстати? версия NSIS и разрядность Steam и Windows?
-
iglezz
Re: .: NSIS - все вопросы :. часть 2.
Только что проверил. Как-то непонятно этот InstallDirRegKey работает - из HKCU читает, а из HKLM - нет
Обходной путь - установка значения $INSTDIR в .onInit:
Скрытый текст
[spoiler]Код: [/spoiler]
Обходной путь - установка значения $INSTDIR в .onInit:
Скрытый текст
[spoiler]Код: [/spoiler]
Код: Выделить всё
Name "RegReadTest"
Unicode true
RequestExecutionLevel admin
SetOverwrite on
SetCompressor LZMA
OutFile "RegReadTest.exe"
page directory
page instfiles
Function .onInit
SetRegView 64
Push $0
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\WinRAR archiver" "InstallLocation"
IfErrors 0 +3
MessageBox MB_OK "Программа ХХХ не установлена!"
Quit
StrCpy $INSTDIR $0
Pop $0
FunctionEnd
Section ""
MessageBox MB_OK "Установка в папку:$\n $INSTDIR"
SectionEnd-
Cyberworm
Re: .: NSIS - все вопросы :. часть 2.
iglezz, С антивирусниками ясно, но думается мне, что не разрешимо. Код сгодиться? Ничего править не нужно?
-
mss307
Re: .: NSIS - все вопросы :. часть 2.
Всем привет.
Возникла следующая проблема:
Необходимо задать картинку в качестве MUI_HEADERIMAGE_BITMAP. С этим проблем нет. Картинка строго по ширине окна инсталлятора.
После попытки задать $mui.Header.Text и $mui.Header.SubText они становятся невидимыми. Это тоже не проблема, обошел примерно так:
GetDlgItem $8 $HWNDPARENT 0x416 ; Header image
GetDlgItem $9 $HWNDPARENT 0x40A ; Header
System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) \
b ($8, $9, 0, 0, 497, 57, 0)"
Только при этом координаты Text и SubText хедера теперь не прижаты к левому краю.
Пытаюсь так менять координаты:
System::Call "*${stRECT} .r1"
System::Call "User32::GetWindowRect(i, i) i ($mui.Header.Text, r1) .r2"
System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)"
IntOp $6 $4 - $2
IntOp $7 $5 - $3
System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) \
b ($mui.Header.Text, 0, 20, 15, ir6, ir7, 0" ;
Если задавать MUI_HEADER_TRANSPARENT_TEXT, то текст не отображается. В противном случае, текст отображается только после возврата на страницу со следующей. Также надписи накладываются друг на друга.
Для текста цвета задаются так:
CreateFont $2 "$(^Font)" "9" "700"
SendMessage $mui.Header.Text ${WM_SETFONT} $2 0
SetCtlColors $mui.Header.Text "0x0F0FAF" "transparent"
Был бы благодарен за помощь!
Возникла следующая проблема:
Необходимо задать картинку в качестве MUI_HEADERIMAGE_BITMAP. С этим проблем нет. Картинка строго по ширине окна инсталлятора.
После попытки задать $mui.Header.Text и $mui.Header.SubText они становятся невидимыми. Это тоже не проблема, обошел примерно так:
GetDlgItem $8 $HWNDPARENT 0x416 ; Header image
GetDlgItem $9 $HWNDPARENT 0x40A ; Header
System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) \
b ($8, $9, 0, 0, 497, 57, 0)"
Только при этом координаты Text и SubText хедера теперь не прижаты к левому краю.
Пытаюсь так менять координаты:
System::Call "*${stRECT} .r1"
System::Call "User32::GetWindowRect(i, i) i ($mui.Header.Text, r1) .r2"
System::Call "*$1${stRECT} (.r2, .r3, .r4, .r5)"
IntOp $6 $4 - $2
IntOp $7 $5 - $3
System::Call "User32::SetWindowPos(i, i, i, i, i, i, i) \
b ($mui.Header.Text, 0, 20, 15, ir6, ir7, 0" ;
Если задавать MUI_HEADER_TRANSPARENT_TEXT, то текст не отображается. В противном случае, текст отображается только после возврата на страницу со следующей. Также надписи накладываются друг на друга.
Для текста цвета задаются так:
CreateFont $2 "$(^Font)" "9" "700"
SendMessage $mui.Header.Text ${WM_SETFONT} $2 0
SetCtlColors $mui.Header.Text "0x0F0FAF" "transparent"
Был бы благодарен за помощь!
-
iglezz
Re: .: NSIS - все вопросы :. часть 2.
mss307, лучше код привести того, что не получается вместо этих обрывков, ибо есть подозрение на велосипедостроение..
-
iglezz
Re: .: NSIS - все вопросы :. часть 2.
Если я вас еще не утомил, то, пожалуйста помогите еще с одним вопросом.
Как бы мне этак прописать. чтобы в самом начале запуска установщика была проверка учетной записи, и если учетка "пользователь" или "гость", даже, если запуск с правами администратора, то показывалось бы сообщение, что Вы, мил человек имеете совсем мало прав" и установка закончилась не начинаясь?.
Как бы мне этак прописать. чтобы в самом начале запуска установщика была проверка учетной записи, и если учетка "пользователь" или "гость", даже, если запуск с правами администратора, то показывалось бы сообщение, что Вы, мил человек имеете совсем мало прав" и установка закончилась не начинаясь?.