Показать полную графическую версию : [архив].: NSIS - все вопросы :.
Подскажите пожалуйста, как в NSIS выглядит переменная c:\Documents and Settings\All Users ?
Именно таким образом без "продолжения" пути. (Продолжением пути будет произвольное имя App)
И какая переменная в Windows 7 для С:\Users\Public ?
Lisabon,
Вот так : $PROFILE\..\All Users\ - работает. Без точек - нет...
Интересно, а для Windows 7 С:\Users\Public - таким же образом делать ?
Интересно, а для Windows 7 С:\Users\Public - таким же образом делать ? »
Может попробовать считать переменную среду %Public% через ReadEnvStr, ну и потом использовать в своих целях. Я не пробовал, но по идее должно помочь.
Name "Example1"
OutFile "example1.exe"
Section ""
ReadEnvStr $0 "COMSPEC"
ReadEnvStr $1 "USERNAME"
ReadEnvStr $2 "HOMEDRIVE"
ReadEnvStr $3 "HOMEPATH"
ReadEnvStr $4 "ALLUSERSPROFILE"
ReadEnvStr $5 "LOGONSERVER"
ReadEnvStr $6 "PUBLIC"
MessageBox MB_OK "COMSPEC: $0 $\r$\n USERNAME: $1 $\r$\n HOMEDRIVE: $2 $\r$\n HOMEPATH: $3 $\r$\n ALLUSERSPROFILE: $4 $\r$\n LOGONSERVER: $5 $\r$\n PUBLIC: $6 $\r$\n"
SectionEnd
kotkovets
26-11-2010, 17:34
SetShellVarContext all
MessageBox MB_OK "$DOCUMENTS"
!include "FileFunc.nsh"
---
SetShellVarContext ALL
${GetParent} "$DOCUMENTS" "$R0"
MessageBox MB_OK "$R0"
kotkovets
26-11-2010, 18:09
Кстати неплохие примеры пишут через WinAPI:
http://nsis.sourceforge.net/Get_the_Special_Folders_Dirs._(System_plugin)
kotkovets,
А можно для создания вышеискомых переменных, определив системный диск в переменную, подставить эту переменную вместо C:\ ?
kotkovets
26-11-2010, 18:15
MKN можно, но зачем? :o
После выхода из инсталлятора (его закрытия) необходимо убить процесс и удалить его файл .
Процесс выгружаю так:
Function .onGUIEnd
nsProcess::_FindProcess /NOUNLOAD "APP.exe"
Pop $R0
StrCmp $R0 0 0 +3
nsProcess::_KillProcess /NOUNLOAD "APP.exe"
StrCmp $R0 603 0 +2
FunctionEnd
А вот как удалить ставший не нужным файл APP.exe (из $temp) - не могу придумать. Инсталлятор то уже закрыт...
Что можно сделать ?
kotkovets
26-11-2010, 18:47
Что можно сделать ? »
Попробуй так:
Function .onGUIEnd
nsProcess::_FindProcess /NOUNLOAD "APP.exe"
Pop $R0
StrCmp $R0 0 0 Done
nsProcess::_KillProcess /NOUNLOAD "APP.exe"
Sleep 500 ;пауза на всяк случай 0,5с
Delete /REBOOTOK "$temp\APP.exe"
Done:
FunctionEnd
Krinkels
26-11-2010, 23:50
Друзья, сделал плагин для NSIS с помощю которого можно комфортно использовать unarc.dll в инсталяторе NSIS. В архиве так же присутствует скрипт с примером. nsisarc.dll и unarc.dll нужно закинуть в папку NSIS\Plugins. Это первая версия, по этому прошу не сильно пинать :)
Скрин (http://www.krinkels.ru/_ld/0/16.jpg)
Скачать (http://www.krinkels.ru/load/raznoe/unarc_dll_dlja_nsis/2-1-0-16)
kotkovets
27-11-2010, 00:16
Krinkels A а мануальчик, как использовать то?
nsisarc::ArcExtract "1.arc" "tmp" "" "" ""
И что, можно подставить в пустые кавычки ???
Krinkels
27-11-2010, 00:20
Упс, пардон.
nsisarc::ArcExtract
"1.arc" - Архив. Когда у себя тестил он лежал рядом с инсталятором
"tmp" - Папка куда нужно распаковать архив
"" - Вроде для пароля
"" - Без понятия для чего, нужно у автора спрашивать
"" - Без понятия для чего, нужно у автора спрашивать
kotkovets
27-11-2010, 01:12
Krinkels,
Я думал вы автор, беспарольные архивы распаковывает, как заявлено, а вот с паролем никак!
Уточните у автора параметры все таки!
Krinkels
27-11-2010, 01:40
kotkovets
Попробуй во вторые пустые кавычки вставить пароль, должно помочь
Подскажите пожалуйста, как решить такую задачу :
Необходимо дождаться появления(создания) file.txt в $TEMP и как только он появится (когда именно - неизвестно), закрыть инсталлятор.
kotkovets
27-11-2010, 13:10
MKN,
А кто будет создавать file.txt в $TEMP ? :)
А кто будет создавать file.txt в $TEMP ? »
Сторонняя программа, запущенная из скрипта (или сама по себе, извне). А скрипт должен отследить создание этого файла и закрыться.
Полагаю, надо как то организовать цикл проверки существования этого файла... В документации ничего путного по этому поводу не обнаружил...
kotkovets
27-11-2010, 13:28
А проблема, то в чем? как минимум:
ExecWait "процесс.exe" ;команда будет ждать завершения процесса
IfFileExists "$Temp\file.txt" 0 +2 ;будет файлик - будет и выход
Quit
kotkovets,
Не подходит, первым делом пробовал... И процесс здесь не нужно учитывать. Ориентир - только файл. Может связано с тем что скрипт ещё запускает последовательно несколько программ...
kotkovets
27-11-2010, 13:45
MKN,
Покажь проблемный кусок кода
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC