|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив].: NSIS - все вопросы :. |
|
[архив].: NSIS - все вопросы :.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
|
|
Отправлено: 23:35, 17-06-2006 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать wolkow70, А почему бы не сделать, вот так, проверять в функции перед финишем , есть ли залоченный файл, то предложить о перезагрузке, а если нету файла, то не предлагать - это будет корректнее..
!include "MUI2.nsh" Name "Modern UI Test" OutFile "UnFinish.exe" InstallDir "C:\Test_Modern" !insertmacro MUI_PAGE_INSTFILES ;---------------------------------- !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_COMPONENTS !insertmacro MUI_UNPAGE_INSTFILES UninstPage custom un.INSTFILES_LEAVE !insertmacro MUI_UNPAGE_FINISH !insertmacro MUI_LANGUAGE "English" Section Install SetOutPath "$INSTDIR" WriteUninstaller "$INSTDIR\Uninstall.exe" SectionEnd Section Uninstall Sectionin RO ;тут стандартное удаление SectionEnd Section un.Restart RestartExplorer ;тут нестандартное удаление, с перезагрузкой проводника SectionEnd Function un.INSTFILES_LEAVE ${If} ${FileExists} "путь к залоченному файлу" ;или папка т.е наличие папки SetRebootFlag true ;если есть файл, предлагать перезагрузку ${Else} SetRebootFlag false ;если нету файла, не предлагать перезагрузку ${EndIf} FunctionEnd |
------- Последний раз редактировалось kotkovets, 29-07-2011 в 14:55. Отправлено: 14:48, 29-07-2011 | #1421 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Цитата kotkovets:
|
|
------- Последний раз редактировалось wolkow70, 29-07-2011 в 15:04. Отправлено: 14:55, 29-07-2011 | #1422 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать wolkow70, Все это делается в деинсталяторе, цель - удалить чисто, без остатков. При перезагрузке проводника не всегда удаляется залоченный файл - есть и другие причины, не раз с этим сталкивался, в секциях деинсталла команды удаления оставляйте как есть, ведь секции деинсталла выполняются раньше функции! Тем более, с /REBOOTOK - удалится при перезагрузке
"Предпоследняя" функция деисталла только проверит наличие залоченного файла и даст нужное предложение. Вот весь функционал - прост и незатейлив. |
------- Отправлено: 15:18, 29-07-2011 | #1423 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать kotkovets,
Протестировал несколько раз с установкой самой программы. ВСЕ РАБОТАЕТ ОТЛИЧНО! И на Windows7 тоже. Спасибо. В конечном виде так: !insertmacro MUI_UNPAGE_WELCOME !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_COMPONENTS !insertmacro MUI_UNPAGE_INSTFILES UninstPage custom un.INSTFILES_LEAVE !insertmacro MUI_UNPAGE_FINISH Section Uninstall Uninstall !insertmacro UninstallLib REGDLL NOTSHARED NOREBOOT_PROTECTED "$INSTDIR\ShellEx\XnViewShellExt.dll" ; ; RMDir /r /REBOOTOK "$INSTDIR\" SetAutoClose true SectionEnd ; Section /o "Un.Перезагрузка Проводника Windows" RestartExplorer SectionIn 1 ExecWait 'taskkill /F /IM explorer.exe' $0 DetailPrint "taskkill exit: [ $0 ]" Sleep 500 StrCmp $0 0 0 +2 Exec "explorer.exe" Delete "$INSTDIR\ShellEx\XnViewShellExt.dll" RMDir /r "$INSTDIR\ShellEx\" RMDir /r "$INSTDIR\" SectionEnd Function un.INSTFILES_LEAVE ${If} ${FileExists} "$INSTDIR\ShellEx\XnViewShellExt.dll" ;или папка т.е наличие папки SetRebootFlag true ;если есть файл, предлагать перезагрузку ${Else} SetRebootFlag false ;если нету файла, не предлагать перезагрузку ${EndIf} FunctionEnd |
------- Последний раз редактировалось wolkow70, 29-07-2011 в 16:29. Отправлено: 16:20, 29-07-2011 | #1424 |
Пользователь Сообщения: 89
|
Профиль | Отправить PM | Цитировать Случайно вы не знаете, как скрыть от посторонних возможность просмотра содержимого инсталлятора, не прибегая к cript.DLL.
Антивирусники её не любят. |
Отправлено: 16:29, 29-07-2011 | #1425 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать sawe,
Через http://nsis.sourceforge.net/DcryptDll_plug-in "расшифровываем" указанные файлы Через утилиты в архиве NGenKeys.exe и Ncrypt.exe - во время компиляции проекта криптуем файлы (запуск препроцессором NSIS) - не раз такое делал и антивирусы, не замечал, что визжали... |
------- Отправлено: 16:46, 29-07-2011 | #1426 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать kotkovets,
Читаю вашу публикацию в справке DeleteRegKey (/ifempty) [root_key] [subkey] Удаляет раздел реестра subkey из ветки root_key. Если вызывается с параметром /ifempty, то удаление происходит только в том случае, если раздел пустой. Флаг ошибки будет установлен в том случае, если раздел не найден, или удаление невозможно. DeleteRegKey HKLM "Software\My Company\My Software" DeleteRegKey /ifempty HKLM "Software\A key that might have subkeys" Удалится ли ключ реестра, если ему не присвоено значение по умолчанию, но имеются подключи? Напрмер : HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.dib" "" HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.dib\UserChoice" "Progid" Мне надо, что бы только полностью пустые ключи удалялись.. |
------- Отправлено: 16:56, 29-07-2011 | #1427 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата wolkow70:
если сравнивать с файловой структурой, то означает удалить пустую папку |
|
------- Отправлено: 17:02, 29-07-2011 | #1428 |
Ветеран Сообщения: 3206
|
Профиль | Отправить PM | Цитировать Товарищи, вопрос ламерский (извините):
Распаковались файлы в директорию установки. Предположим в папках 5.1 и 6.1 находятся файлы, которые должны быть скопированы (или перемещены) в Windows\system32 Если XP, то копируется (или перемещается) файл из папки 5.1. Если Vista или W7, то из папки 6.1. Там файлы с одинаковыми наименованиями , но разными версиями (под систему) Подскажите как рациональней реализовать? |
------- Отправлено: 14:12, 30-07-2011 | #1429 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать wolkow70, подключаем библиотеку для работы с различными версиями Windows
Далее в скрипте Что из этого получается? При компиляции проекта в установщике будут 2 версии файлов, в зависимости от версии Windows нужный набор файлов будут скопирован в системную директорию |
------- Последний раз редактировалось kotkovets, 30-07-2011 в 15:45. Причина: поправка логики на Висту Отправлено: 14:30, 30-07-2011 | #1430 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Мультимедиа - WinAmp .:[ обсуждение всех версий ]:. | ssaram | Программное обеспечение Windows | 406 | 12-02-2022 19:45 | |
WinstyleMonitor .:[все вопросы]:. | Mr dUSHA | Проект WinStyle | 331 | 12-02-2014 13:15 | |
Delphi - Delphi .: [все вопросы] :. | Serega | Программирование и базы данных | 94 | 04-05-2013 18:45 | |
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. | Microsoft Windows 2000/XP | 105 | 30-06-2010 11:58 | ||
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|