|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата Lex_from_Belarus:
Lex_from_Belarus, че за хрень, а не нормальный код.. че так не написать, что означает, если есть Uninstall.exe, то пропустить ниже по коду 4 команды, относительно процедуры IfFileExists IfFileExists $prog\Uninstall.exe +4 SetOutPath $INSTDIR File /r "${pkgdir}\Program.exe" ExecWait "$INSTDIR\Program.exe /S" Справку читайте на русском языке, где все расписано.. |
|
------- Отправлено: 00:34, 18-02-2013 | #271 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 49
|
Профиль | Отправить PM | Цитировать IfFileExists $prog\Uninstall.exe +4
ну и как вы себе это представляете? я же написал что в uninstallstring в реестре хранится путь с фалом, т.е, например c:\program files\program\uninstall.exe. MessageBox вставляю для проверки везде пишет всё ОК, т.е. и реестр правильно читает и отсекает в пути имя файла, т.е. оставляет просто путь, но вот после ifFileExists идёт дальше а не перескакивает на ОК, как буд-то ifFileExists не срабатывает, т.е. всё остальное проходит, а на ifFileExists косяк. |
Последний раз редактировалось Lex_from_Belarus, 18-02-2013 в 13:14. Отправлено: 10:40, 18-02-2013 | #272 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Возвращаясь к таймеру...
Время исполнения кода можно подсчитывать и таким способом, с помощью функции GetTickCount : OutFile "Elapsed Time.exe" Section System::Call 'kernel32::GetTickCount(v)i.r0' ; код Sleep 1200 System::Call 'kernel32::GetTickCount(v)i.r1' IntOp $0 $1 - $0 IntOp $1 $0 / 1000 IntOp $0 $0 % 1000 IntOp $2 $1 / 60 IntOp $1 $1 % 60 IntOp $3 $2 / 60 IntOp $2 $2 % 60 MessageBox MB_OK "Elapsed Time $3 hours $2 min $1 sec $0 ms" SectionEnd Вопрос : возможно ли при этом способе визуализировать отсчёт времени в процессе выполнения кода ? |
Последний раз редактировалось MKN, 18-02-2013 в 11:48. Отправлено: 11:43, 18-02-2013 | #273 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата MKN:
|
|
------- Отправлено: 15:31, 18-02-2013 | #274 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать Цитата MKN:
Цитата K.A.V.:
У меня так работает с маленьким расхождением в миллисекундах. |
||
Последний раз редактировалось profcom, 18-02-2013 в 15:47. Отправлено: 15:42, 18-02-2013 | #275 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать |
Отправлено: 16:39, 18-02-2013 | #276 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата MKN:
Если в секции с паузой, то всё норм |
|
------- Отправлено: 17:33, 18-02-2013 | #277 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать Цитата MKN:
!include nsDialogs.nsh OutFile "Time.exe" Var Stime Var Ttime Var DIALOG Var TEXT Page custom Time TimeEnd Function .onInit System::Call 'kernel32::GetTickCount(v)i.r0' StrCpy $Stime $0 FunctionEnd Function Time nsDialogs::Create 1018 Pop $DIALOG ${NSD_CreateLabel} 10u 10u 100% 10u "Прошло $3 часов $2 минут $1 секунд" Pop $TEXT ${NSD_CreateTimer} ChekTime 100 nsDialogs::Show FunctionEnd Function TimeEnd ${NSD_KillTimer} ChekTime FunctionEnd Function ChekTime System::Call 'kernel32::GetTickCount(v)i.r1' IntOp $0 $1 - $Stime IntOp $1 $0 / 1000 IntOp $0 $0 % 1000 IntOp $2 $1 / 60 IntOp $1 $1 % 60 IntOp $3 $2 / 60 IntOp $2 $2 % 60 StrCpy $Ttime "Прошло $3 часов $2 минут $1 секунд" ${NSD_SetText} $TEXT "$Ttime" FunctionEnd Section SectionEnd |
|
Отправлено: 20:02, 18-02-2013 | #278 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать Вот еще набросал примерчик для стандартной функций установки используя плагин ThreadTimer для создания параллельного потока . В принципе куда угодно можно отобразить время.
OutFile "Time2.exe" !include "MUI.nsh" Var Stime Var Ttime !insertmacro MUI_PAGE_INSTFILES Function .onInit System::Call 'kernel32::GetTickCount(v)i.r0' StrCpy $Stime $0 GetFunctionAddress $1 ChekTime ThreadTimer::Start 100 -1 $1 FunctionEnd Section DetailPrint "Команда 1" Sleep 10000 DetailPrint "Команда 2" Sleep 10000 DetailPrint "Команда 3" Sleep 10000 DetailPrint "Команда 4" Sleep 10000 ThreadTimer::Stop SectionEnd Function ChekTime System::Call 'kernel32::GetTickCount(v)i.r1' IntOp $0 $1 - $Stime IntOp $1 $0 / 1000 IntOp $0 $0 % 1000 IntOp $2 $1 / 60 IntOp $1 $1 % 60 IntOp $3 $2 / 60 IntOp $2 $2 % 60 StrCpy $Ttime "Прошло $3 часов $2 минут $1 секунд" !insertmacro MUI_HEADER_TEXT "Установка" "$Ttime" FunctionEnd |
Отправлено: 21:16, 18-02-2013 | #279 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать Цитата Lex_from_Belarus:
!include LogicLib.nsh Section "Program" SectionIn 1 ReadRegStr $0 HKLM "Software\microsoft\windows\currentversion\uninstall\Program" "UninstallString" ReadRegStr $1 HKLM "Software\wow6432node\microsoft\windows\currentversion\uninstall\Program" "UninstallString" ${IfNot} ${FileExists} "$0" ${AndIfNot} ${FileExists} "$1" SetOutPath $INSTDIR File /r "${pkgdir}\Program.exe" ExecWait "$INSTDIR\Program.exe /S" ${EndIf} SectionEnd |
|
Последний раз редактировалось profcom, 19-02-2013 в 08:44. Отправлено: 21:57, 18-02-2013 | #280 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 | dimadr | Наборы обновлений для Windows XP/2003/Windows 7 | 267 | 14-02-2020 08:25 | |
[архив].: NSIS - все вопросы :. | kotkovets | Автоматическая установка приложений | 3387 | 09-12-2012 11:56 | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 | jameszero | Наборы обновлений для Windows XP/2003/Windows 7 | 1491 | 22-07-2011 22:42 | |
Выбор|модернизация процессора .:[все вопросы]:. Часть I | Myxa | Выбор отдельных компонентов компьютера и конфигурации в целом | 1845 | 01-01-2011 19:18 | |
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|