|
Компьютерный форум 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 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата dix75:
UserInfo::GetAccountType Pop $1 StrCmp $1 "Admin" +3 0 MessageBox MB_OK|MB_ICONEXCLAMATION `Для установки программы необходимо войти в систему с правами Администратора!` quit Цитата dix75:
|
||
------- Отправлено: 20:08, 10-12-2012 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать Цитата K.A.V.:
Добрый день! Подскажите пожайлуста, возможно кто-нибудь знает как можно установить тулбар в ie без лишних запросов со стороны браузера. |
|
Отправлено: 13:04, 11-12-2012 | #12 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Подскажите пожалуйста - есть ли в nsDialogs макрос отметки (снятия отметки) секций ? Не обнаружил в доке такого...
Что то типа аналога ${SectionIsSelected} ${ID sec} Если нет, то как минимальным кодом это можно реализовать ? |
Отправлено: 16:18, 11-12-2012 | #13 |
Новый участник Сообщения: 41
|
Профиль | Отправить PM | Цитировать Возможно ли узнать запущена прорамма или нет?
Просто убивать её критично и просить пользователя закрыть тоже неверно (пользователь не любит лишние вопросы) |
Отправлено: 16:28, 11-12-2012 | #14 |
Пользователь Сообщения: 139
|
Профиль | Отправить PM | Цитировать Цитата dix75:
Отследите работает ли программа по ее процессу. |
|
Отправлено: 16:57, 11-12-2012 | #15 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата MKN:
Есть встроенные средства в Section.nsh для собственного treeview --- через nsDialogs я рисовал treeview минимальным никак - забудь, особенно, если это еще чужой treeview |
|
------- Отправлено: 17:22, 11-12-2012 | #16 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать habib2302, чет не туда... у автора скрипт спрашивайте.
на форуме он здесь прописан - в личку ему пишите. |
------- Отправлено: 19:05, 11-12-2012 | #17 |
Ветеран Сообщения: 861
|
Профиль | Отправить PM | Цитировать kotkovets,
адресок на его профиль можно |
------- Отправлено: 20:14, 11-12-2012 | #18 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать habib2302, поиск по теме в первой части --> diakov
|
------- Отправлено: 20:33, 11-12-2012 | #19 |
Старожил Сообщения: 176
|
Профиль | Отправить PM | Цитировать kotkovets, вот заинтересовался созданием портативок по подобию PortableApps.com, и вот дошло дело до создания лаунчера...как я понимаю данная технология заключается в том что когда прога запускается лаунчер вносит необходимые изменения в систему, а когда закрыть, тот самый лаунчер удаляет все следы присутствия в системе (за исключения, понятно самих профилей или настроек которые хранятся непосредственно в папке портабла) вот нарыл скрипт лаунчера фоксит немного что переделал под неро (только в шапке и appinfo.ini) что бы проверить запустится ли), тело скрипта не трогал! Так вот непонятно где в скрипте вносить данные (который должны вносится в систему при запуске ...а где при завершении работы проги...не могли бы объяснить, вот сам код:
!define PORTABLEAPPNAME "Nero Express Portable" !define NAME "Nero Express Portable" !define APPNAME "NeroExpressPortable" !define VER "12.0.28.001" !define WEBSITE "repachok.net" !define DEFAULTEXE "NeroExpress.exe" !define DEFAULTAPPDIR "Nero" !define DEFAULTSETTINGSDIR "settings" !define LAUNCHERLANGUAGE "Russian" ;=== Program Details Name "${PORTABLEAPPNAME}" OutFile "..\..\${NAME}.exe" Caption "${PORTABLEAPPNAME}" VIProductVersion "${VER}" VIAddVersionKey ProductName "${PORTABLEAPPNAME}" VIAddVersionKey CompanyName "repachok.net" VIAddVersionKey LegalCopyright "REPACHOK GROUP" VIAddVersionKey FileDescription "${PORTABLEAPPNAME}" VIAddVersionKey FileVersion "${VER}" VIAddVersionKey ProductVersion "${VER}" VIAddVersionKey InternalName "${PORTABLEAPPNAME}" VIAddVersionKey OriginalFilename "${NAME}.exe" ;VIAddVersionKey PrivateBuild "" ;VIAddVersionKey SpecialBuild "" ;=== Runtime Switches CRCCheck On WindowIcon Off SilentInstall Silent AutoCloseWindow True RequestExecutionLevel user ; Best Compression SetCompress Auto SetCompressor /SOLID lzma SetCompressorDictSize 32 SetDatablockOptimize On ;=== Include ;(Standard NSIS) !include LogicLib.nsh !include Registry.nsh !include TextFunc.nsh !insertmacro GetParameters !include x64.nsh ;(NSIS Plugins) !include TextReplace.nsh ;(Custom) !include ReadINIStrWithDefault.nsh !include ReplaceInFileWithTextReplace.nsh ;!include CheckForPlatformSplashDisable.nsh ;=== Program Icon Icon "..\..\App\AppInfo\appicon.ico" ;=== Languages ;LoadLanguageFile "${NSISDIR}\Contrib\Language files\${LAUNCHERLANGUAGE}.nlf" ;!include PortableApps.comLauncherLANG_${LAUNCHERLANGUAGE}.nsh Var PROGRAMDIRECTORY Var SETTINGSDIRECTORY Var ADDITIONALPARAMETERS Var EXECSTRING Var PROGRAMEXECUTABLE Var INIPATH Var SECONDARYLAUNCH Var MISSINGFILEORPATH Var LASTDRIVE Var CURRENTDRIVE Var FAILEDTORESTOREKEY Var USERTYPE Var RegKeyFDFExists Var RegKeyPDFExists Var RegKeyPDFIsBlank Section "Main" ;=== Check if already running System::Call 'kernel32::CreateMutexA(i 0, i 0, t "${NAME}") i .r1 ?e' Pop $0 StrCmp $0 0 CheckINI StrCpy $SECONDARYLAUNCH "true" CheckINI: ;=== Find the INI file, if there is one IfFileExists "$EXEDIR\${NAME}.ini" "" NoINI StrCpy $INIPATH "$EXEDIR" ;=== Read the parameters from the INI file ${ReadINIStrWithDefault} $0 "$INIPATH\${NAME}.ini" "${NAME}" "${APPNAME}Directory" "App\${DEFAULTAPPDIR}" StrCpy $PROGRAMDIRECTORY "$EXEDIR\$0" ${ReadINIStrWithDefault} $0 "$INIPATH\${NAME}.ini" "${NAME}" "SettingsDirectory" "Data\${DEFAULTSETTINGSDIR}" StrCpy $SETTINGSDIRECTORY "$EXEDIR\$0" ${ReadINIStrWithDefault} $PROGRAMEXECUTABLE "$INIPATH\${NAME}.ini" "${NAME}" "${APPNAME}Executable" "${DEFAULTEXE}" ${ReadINIStrWithDefault} $ADDITIONALPARAMETERS "$INIPATH\${NAME}.ini" "${NAME}" "AdditionalParameters" "" IfFileExists "$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" FoundProgramEXE NoProgramEXE NoINI: ;=== No INI file, so we'll use the defaults StrCpy $PROGRAMEXECUTABLE "${DEFAULTEXE}" StrCpy $ADDITIONALPARAMETERS "" IfFileExists "$EXEDIR\App\${DEFAULTAPPDIR}\${DEFAULTEXE}" "" NoProgramEXE StrCpy $PROGRAMDIRECTORY "$EXEDIR\App\${DEFAULTAPPDIR}" StrCpy $SETTINGSDIRECTORY "$EXEDIR\Data\${DEFAULTSETTINGSDIR}" Goto FoundProgramEXE NoProgramEXE: ;=== Program executable not where expected StrCpy $MISSINGFILEORPATH $PROGRAMEXECUTABLE MessageBox MB_OK|MB_ICONEXCLAMATION `$(LauncherFileNotFound)` Abort FoundProgramEXE: StrCmp $SECONDARYLAUNCH "true" GetPassedParameters FindProcDLL::FindProc "${DEFAULTEXE}" StrCmp $R0 "1" WarnAnotherInstance CheckSettings WarnAnotherInstance: MessageBox MB_OK|MB_ICONINFORMATION `$(LauncherAlreadyRunning)` Abort CheckSettings: ;=== Check for data files IfFileExists "$SETTINGSDIRECTORY\*.*" GetPassedParameters ;=== Copy the default settings files CreateDirectory "$SETTINGSDIRECTORY" CopyFiles /SILENT "$EXEDIR\App\DefaultData\settings\*.*" "$SETTINGSDIRECTORY" GetPassedParameters: ;=== Get any passed parameters ${GetParameters} $0 StrCmp "'$0'" "''" "" LaunchProgramParameters ;=== No parameters StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE"` Goto AdditionalParameters LaunchProgramParameters: StrCpy $EXECSTRING `"$PROGRAMDIRECTORY\$PROGRAMEXECUTABLE" $0` AdditionalParameters: StrCmp $ADDITIONALPARAMETERS "" AdjustPaths ;=== Additional Parameters StrCpy $EXECSTRING `$EXECSTRING $ADDITIONALPARAMETERS` AdjustPaths: StrCmp $SECONDARYLAUNCH "true" LaunchAndExit ReadINIStr $LASTDRIVE "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastDrive" ${GetRoot} $EXEDIR $CURRENTDRIVE StrCmp $LASTDRIVE $CURRENTDRIVE RegistryBackup ${ReplaceInFile} '$SETTINGSDIRECTORY\${NAME}.reg' '$LASTDRIVE\\' '$CURRENTDRIVE\\' ;StoreCurrentDriveLetter: WriteINIStr "$SETTINGSDIRECTORY\${NAME}Settings.ini" "${NAME}Settings" "LastDrive" "$CURRENTDRIVE" RegistryBackup: ;=== Backup the registry ${registry::KeyExists} "HKEY_CURRENT_USER\Software\Foxit Software\Foxit Reader-BackupBy${NAME}" $R0 StrCmp $R0 "0" RestoreTheKey ${registry::KeyExists} "HKEY_CURRENT_USER\Software\Foxit Software\Foxit Reader" $R0 StrCmp $R0 "-1" RestoreTheKey ${registry::MoveKey} "HKEY_CURRENT_USER\Software\Foxit Software\Foxit Reader" "HKEY_CURRENT_USER\Software\Foxit Software\Foxit Reader-BackupBy${NAME}" $R0 Sleep 100 RestoreTheKey: IfFileExists "$SETTINGSDIRECTORY\${NAME}.reg" "" BackupHKLM IfFileExists "$WINDIR\system32\reg.exe" "" RestoreTheKey9x nsExec::ExecToStack `"$WINDIR\system32\reg.exe" import "$SETTINGSDIRECTORY\${NAME}.reg"` Pop $R0 StrCmp $R0 '0' BackupHKLM ;successfully restored key RestoreTheKey9x: ${registry::RestoreKey} "$SETTINGSDIRECTORY\${NAME}.reg" $R0 StrCmp $R0 '0' BackupHKLM ;successfully restored key StrCpy $FAILEDTORESTOREKEY "true" BackupHKLM: UserInfo::GetAccountType Pop $USERTYPE StrCmp $USERTYPE "Guest" LaunchNow StrCmp $USERTYPE "User" LaunchNow ${registry::MoveKey} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.Document" "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.Document-BackupBy${NAME}" $R0 ${registry::MoveKey} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.FDFDoc" "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.FDFDoc-BackupBy${NAME}" $R0 ${registry::MoveKey} "HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}" "HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}-BackupBy${NAME}" $R0 ${registry::MoveKey} "HKEY_CLASSES_ROOT\CLSID\{A43F4073-BEBD-4142-B590-27A74384620B}" "HKEY_CLASSES_ROOT\CLSID\{A43F4073-BEBD-4142-B590-27A74384620B}-BackupBy${NAME}" $R0 ${registry::KeyExists} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pdf" $R0 ${If} $R0 == "0" StrCpy $RegKeyPDFExists true ${registry::Read} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pdf" "" $R0 $R1 ${If} $R0 == "" StrCpy $RegKeyPDFIsBlank true ${EndIf} ${EndIf} ${registry::KeyExists} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.fdf" $R0 ${If} $R0 == "0" StrCpy $RegKeyFDFExists true ${EndIf} LaunchNow: Sleep 100 ExecWait $EXECSTRING CheckRunning: Sleep 1000 FindProcDLL::FindProc "$PROGRAMEXECUTABLE" StrCmp $R0 "1" CheckRunning StrCmp $FAILEDTORESTOREKEY "true" SetOriginalKeyBack ${registry::SaveKey} "HKEY_CURRENT_USER\Software\Foxit Software\Foxit Reader" "$SETTINGSDIRECTORY\${NAME}.reg" "" $0 Sleep 100 SetOriginalKeyBack: ${registry::DeleteKey} "HKEY_CURRENT_USER\Software\Foxit Software\Foxit Reader" $R0 ${registry::KeyExists} "HKEY_CURRENT_USER\Software\Foxit Software\Foxit Reader-BackupBy${NAME}" $R0 Sleep 100 StrCmp $R0 "-1" CleanupHKLM ${registry::MoveKey} "HKEY_CURRENT_USER\Software\Foxit Software\Foxit Reader-BackupBy${NAME}" "HKEY_CURRENT_USER\Software\Foxit Software\Foxit Reader" $R0 Sleep 100 Goto CleanupHKLM CleanupHKLM: StrCmp $USERTYPE "Guest" RegistryCleanup StrCmp $USERTYPE "User" RegistryCleanup ${registry::DeleteKey} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.Document" $R0 ${registry::MoveKey} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.Document-BackupBy${NAME}" "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.Document" $R0 ${registry::DeleteKey} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.FDFDoc" $R0 ${registry::MoveKey} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.FDFDoc-BackupBy${NAME}" "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\FoxitReader.FDFDoc" $R0 ${registry::DeleteKey} "HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}" $R0 ${registry::MoveKey} "HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}-BackupBy${NAME}" "HKEY_CLASSES_ROOT\CLSID\{14E8BBD8-1D1C-4D56-A4DA-D20B75EB814E}" $R0 ${registry::DeleteKey} "HKEY_CLASSES_ROOT\CLSID\{A43F4073-BEBD-4142-B590-27A74384620B}" $R0 ${registry::MoveKey} "HKEY_CLASSES_ROOT\CLSID\{A43F4073-BEBD-4142-B590-27A74384620B}-BackupBy${NAME}" "HKEY_CLASSES_ROOT\CLSID\{A43F4073-BEBD-4142-B590-27A74384620B}" $R0 ${If} $RegKeyPDFExists != true ${registry::DeleteKey} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pdf" $R0 ${EndIf} ${If} $RegKeyPDFIsBlank == true ${registry::Read} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pdf" "" $R0 $R1 ${If} $R0 != "" ${registry::DeleteValue} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.pdf" "" $R0 ${EndIf} ${EndIf} ${If} $RegKeyFDFExists != true ${registry::DeleteKey} "HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.fdf" $R0 ${EndIf} RegistryCleanup: ;=== Cleanup the registry ${registry::DeleteKeyEmpty} "HKEY_CURRENT_USER\Software\Foxit Software" $R0 Goto TheEnd LaunchAndExit: Exec $EXECSTRING TheEnd: ${registry::Unload} newadvsplash::stop /WAIT SectionEnd Спасибо! Или может можно как то упростить сие чудо (как бы две секции в одной команды запуска в другой команды по завершению работы проги) |
Последний раз редактировалось diakov, 12-12-2012 в 00:42. Отправлено: 00:34, 12-12-2012 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 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 |
|