PDA

Показать полную графическую версию : [архив].: NSIS - все вопросы :.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 [77] 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

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'

sawe
21-08-2011, 20:46
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.
21-08-2011, 22:48
K.A.V., всё же название программы - SFX Creator, сбивает с толку и не отражает действительной её сути и оригинального назначения...
Может стОит "окрестить" её как то по другому ? »
Даже не хочу забивать этим голову себе...Править очень много придётся, много где эти строки уже прописаны, не говоря уже про отдельные библиотеки для SFX Creator написанные мной, файлы графики так же должны будут подвергнуться исправлению...мне пока совсем не хочется снова менять название программы и править "всё и вся"

BARS73
22-08-2011, 08:22
В чем проблема может быть? заработал Uninstall.exe, но в открывающемся окне только две кнопки закрыть и отмена.
что дописать то надо?:(

BARS73
22-08-2011, 08:37
и что нужно дописать к
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, Может все таки почитаете шапку темы
Документация =>....
Много для себя полезного найдете.

BARS73
22-08-2011, 09:21
да я скачал, изучаю...но как то не совсем понятно...
В NSIS деинсталлятор создается очень просто, всего одной командой:
WriteUninstaller "$OUTDIR\uninst.exe"
почему же у меня не получилось его создать одной командой??

kotkovets
22-08-2011, 09:50
BARS73, скрипт в студию, а то надоело уже догадываться, че вы вы там понаписали.

BARS73
22-08-2011, 09:56
!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"

BARS73
22-08-2011, 10:31
хм... вроде бы ошибок не выдает, но папку в пуске так и не создает, и деинстоллятор так и не удаляет ничего:(

kotkovets
22-08-2011, 10:37
BARS73, Значит не судьба.... :read:
Читайте до дыр статьи, больше мне вам посоветовать нечего... :closed-to

K.A.V.
22-08-2011, 11:24
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

K.A.V.
22-08-2011, 12:01
И в этом "маленькую error" »
Это не "маленькая error", а при серьёзном проекте криворукость автора пакета инсталлятора
Возьмите пример, где автор установил SetoutPath и прописал создание деинсталлятора, а потом нужно заглядывать в код или в реестра, чтобы отыскать файл удаления, это в лучшем случае, а если в реестр записей не было...вот и ищи его потом по диска, вообщем даже и продолжать и обсуждать это я не вижу смысла, если писать правильно, то это ошибка

BARS73
22-08-2011, 13:41
2. Почему у вас
Цитата BARS73:
WriteUninstaller "$OUTDIR\uninst.exe" »
а не переменная $INSTDIR ? »
потому что, когда я пишу как вы советуете файл uninst.exe отсутсвует в папке после установки....

K.A.V.
22-08-2011, 13:46
потому что, когда я пишу как вы советуете файл uninst.exe отсутсвует в папке после установки.... »
Да не сочтите за грубость...
криворукость автора пакета инсталлятора »
Если указанный вами код это весь код вашего проекта.
Конечно, где это будет создавать инсталлятор программу удаления, если вы не назначили переменной $INSTDIR каталог для установки вашей программы? Вот поэтому и не создаёт, потому что Вы "не сказали" программе установке в какой папке ему нужно это сделать......




© OSzone.net 2001-2012