Показать полную графическую версию : [архив].: NSIS - все вопросы :.
david141
21-08-2011, 20:07
Скажите, пожалуйста, как добавить такой ключ реестра в NSIS?
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{EC8030F7-C20A-464F-9B0E-13A3A9E97384}]
@="Firefox"
Или
[HKEY_CLASSES_ROOT\CLSID\{EC8030F7-C20A-464F-9B0E-13A3A9E97384}\DefaultIcon]
@="\"C:\\Program Files\\Firefox\\Firefox.exe\",0"
kotkovets
21-08-2011, 20:11
david141,
WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{EC8030F7-C20A-464F-9B0E-13A3A9E97384}" "" "Firefox"
WriteRegStr HKCR "CLSID\{EC8030F7-C20A-464F-9B0E-13A3A9E97384}\DefaultIcon" "" '"$PROGRAMFILES\Firefox\Firefox.exe",0'
NSIS Wizard, NSIS Helper, Easy NSIS Setup Builder и т.п. ? »
По моемому это будет банально, особенно Wizard, Easy. Лучше схитрить, к примеру NSISer
david141
21-08-2011, 20:50
kotkovets,
А вот такой. Спасибо.
[HKEY_CLASSES_ROOT\CLSID\{EC8030F7-C20A-464F-9B0E-13A3A9E97384}\ShellFolder]
"Attributes"=hex:18,00,00,00
kotkovets
21-08-2011, 20:58
david141, Смотрите шапку темы, там есть ссылка на справочник по NSIS
Можно так:
WriteRegBin HKCR "CLSID\{EC8030F7-C20A-464F-9B0E-13A3A9E97384}\ShellFolder" "Attributes" 18000000
K.A.V., всё же название программы - SFX Creator, сбивает с толку и не отражает действительной её сути и оригинального назначения...
Может стОит "окрестить" её как то по другому ? »
Даже не хочу забивать этим голову себе...Править очень много придётся, много где эти строки уже прописаны, не говоря уже про отдельные библиотеки для SFX Creator написанные мной, файлы графики так же должны будут подвергнуться исправлению...мне пока совсем не хочется снова менять название программы и править "всё и вся"
В чем проблема может быть? заработал Uninstall.exe, но в открывающемся окне только две кнопки закрыть и отмена.
что дописать то надо?:(
и что нужно дописать к
CreateDirectory "$SMPROGRAMS\MIDA15TOOL\"
CreateShortCut "$SMPROGRAMS\MIDA15TOOL\Packers Show.lnk" "$INSTDIR\PipeDataVisualizer.exe"
CreateShortCut "$SMPROGRAMS\${APPNAME}\Help.lnk" "$INSTDIR\Help.chm"
CreateShortCut "$SMPROGRAMS\MIDA15TOOL\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
чтобы создавалась папка в пуске..
kotkovets
22-08-2011, 09:09
BARS73, Может все таки почитаете шапку темы
Документация =>....
Много для себя полезного найдете.
да я скачал, изучаю...но как то не совсем понятно...
В NSIS деинсталлятор создается очень просто, всего одной командой:
WriteUninstaller "$OUTDIR\uninst.exe"
почему же у меня не получилось его создать одной командой??
kotkovets
22-08-2011, 09:50
BARS73, скрипт в студию, а то надоело уже догадываться, че вы вы там понаписали.
!define PRODUCT_NAME "MIDA15TOOL"
!define PRODUCT_VERSION "1.1"
!define pkgdir "D:\Pavel\proba\Release2"
!include "MUI.nsh"
SetCompressor /SOLID lzma
!define MUI_ABORTWARNING
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "Russian"
Name "MIDA15TOOL"
Caption "Установка MIDA15TOOL 1.1"
OutFile "MIDA15TOOL 1.1.exe"
ShowInstDetails show
Section
SetOutPath "C:\Program Files\MIDA15TOOL2"
File /r D:\Pavel\proba\Release\*.*
CreateShortCut "$DESKTOP\PipeDataVisualizer.lnk" "C:\Program Files\MIDA15TOOL2\PipeDataVisualizer.exe"
WriteUninstaller "$OUTDIR\uninst.exe"
; CreateDirectory "$SMPROGRAMS\MIDA15TOOL\"
; CreateShortCut "$SMPROGRAMS\MIDA15TOOL\Packers Show.lnk" "$INSTDIR\PipeDataVisualizer.exe"
; CreateShortCut "$SMPROGRAMS\${APPNAME}\Help.lnk" "$INSTDIR\Help.chm"
; CreateShortCut "$SMPROGRAMS\MIDA15TOOL\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
SectionEnd
kotkovets
22-08-2011, 10:20
BARS73,
Строку !insertmacro MUI_UNPAGE_CONFIRM пишем
после строки !insertmacro MUI_PAGE_FINISH
Вы нарушаете порядок страничек!!!
--
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
--
У вас нет секции Uninstall для выполнения различных действий деинсталятора, вы не внимательно читали статьи из шапки темы, в конце скрипта:
Section Uninstall
Delete "$DESKTOP\PipeDataVisualizer.lnk" ;удаляем ярлык на рабочем столе
RmDir /r "$SMPROGRAMS\MIDA15TOOL" ; удаляем папку в меню Пуск
RmDir /r "$INSTDIR" ;удаляем папку прграммы
SectionEnd
У вас не определена константа ${APPNAME} - вам об этом предупреждает компилятор. В вашем случае здесь это излишне.
CreateShortCut "$SMPROGRAMS\MIDA15TOOL\Help.lnk" "$INSTDIR\Help.chm"
хм... вроде бы ошибок не выдает, но папку в пуске так и не создает, и деинстоллятор так и не удаляет ничего:(
kotkovets
22-08-2011, 10:37
BARS73, Значит не судьба.... :read:
Читайте до дыр статьи, больше мне вам посоветовать нечего... :closed-to
BARS73
1. Чтобы отработала секция Uninstall нужно прописывать макрос
!insertmacro MUI_UNPAGE_INSTFILES
2. Почему у вас WriteUninstaller "$OUTDIR\uninst.exe" »
а не переменная $INSTDIR ?
kotkovets
22-08-2011, 11:28
WriteUninstaller "$OUTDIR\uninst.exe" »
а не переменная $INSTDIR ? »
http://forum.oszone.net/post-1734709-1496.html
И в этом "маленькую error" можно сделать, так, что да соглашусь лучше $INSTDIR
И в этом "маленькую error" »
Это не "маленькая error", а при серьёзном проекте криворукость автора пакета инсталлятора
Возьмите пример, где автор установил SetoutPath и прописал создание деинсталлятора, а потом нужно заглядывать в код или в реестра, чтобы отыскать файл удаления, это в лучшем случае, а если в реестр записей не было...вот и ищи его потом по диска, вообщем даже и продолжать и обсуждать это я не вижу смысла, если писать правильно, то это ошибка
2. Почему у вас
Цитата BARS73:
WriteUninstaller "$OUTDIR\uninst.exe" »
а не переменная $INSTDIR ? »
потому что, когда я пишу как вы советуете файл uninst.exe отсутсвует в папке после установки....
потому что, когда я пишу как вы советуете файл uninst.exe отсутсвует в папке после установки.... »
Да не сочтите за грубость...
криворукость автора пакета инсталлятора »
Если указанный вами код это весь код вашего проекта.
Конечно, где это будет создавать инсталлятор программу удаления, если вы не назначили переменной $INSTDIR каталог для установки вашей программы? Вот поэтому и не создаёт, потому что Вы "не сказали" программе установке в какой папке ему нужно это сделать......
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC