PDA

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


Страниц : 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

Андрей1990
18-04-2017, 19:53
Задам еще пару вопросов)))
Как выставить свою иконку на приложение exe, которое устанавливаю?

Когда нажимаю "Uninstall", файлы и папка из меню пуск-программы не удаляется(

И последнее: когда выставляю свойства "от имени администратора" для ярлыков, как советовали выше(пример взял со стр. 183), ярлык из меню пуск-программы не работает.
Прилагаю свой код:

Name "SetupSpectran119"
OutFile "SetupSpectran119.exe"

InstallDir "$PROGRAMFILES\LOMO PHOTONICS\Spectran119"
InstallDirRegKey HKLM SOFTWARE\NSIS_LOMO_PHOTONICS\Spectran119 "Install_Dir"

Section "Spectran119 (required)"
SectionIn RO
SetOutPath $INSTDIR
File /r "C:\Users\Ф1\Desktop\Спектран\"
File "C:\Users\Ф1\Desktop\Спектран\spectran119.exe"
WriteRegStr HKLM SOFTWARE\NSIS_LOMO_PHOTONICS\spectran119 "Install_Dir" "$INSTDIR"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\spectran119" "DisplayName" " spectran119 (только удаление)"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\spectran119" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteUninstaller "uninstall.exe"
SectionEnd

Section "Start Menu Shortcuts"
CreateDirectory "$SMPROGRAMS\LOMO PHOTONICS\spectran119"
CreateShortCut "$SMPROGRAMS\LOMO PHOTONICS\spectran119\Uninstall.lnk" "$INSTDIR\uninstall.exe" "" "$INSTDIR\uninstall.exe" 0
CreateShortCut "$SMPROGRAMS\LOMO PHOTONICS\spectran119\spectran119.lnk" "$INSTDIR\spectran119.exe" "" "$INSTDIR\spectran119.exe" 0
CreateShortCut "$DESKTOP\spectran119.lnk" "$INSTDIR\spectran119.exe" "" "$INSTDIR\spectran119.exe" 0
${aSC::SetON} "$DESKTOP\spectran119.lnk"
${aSC::SetON} "$SMPROGRAMS\LOMO PHOTONICS\spectran119\spectran119.lnk"
SectionEnd

UninstallText "Программа spectran119 будет удалена с вашего компьютера. Нажмите Uninstall, чтобы продолжить." "Удаляем программу из:"

Section "Uninstall"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\spectran119.exe"
DeleteRegKey HKLM SOFTWARE\NSIS_LOMO_PHOTONICS\spectran119
Delete $INSTDIR\makensisw.exe
Delete $INSTDIR\uninstall.exe
Delete "$SMPROGRAMS\LOMO PHOTONICS\spectran119\*.*"
RMDir "$SMPROGRAMS\LOMO PHOTONICS\spectran119" ; удалить каталог myprog из меню Программы
Delete "$DESKTOP\spectran119.lnk" ; удалить ярлык с рабочего стола
RMDir /r "$PROGRAMFILES\LOMO PHOTONICS\spectran119"
SectionEnd


Помогите новичку)))

MKN
19-04-2017, 10:16
Андрей1990,
Твой вышеприведённый код указывает на отсутствие даже начальных знаний "матчасти" NSIS...
При таком раскладе сложно (и даже бесполезно) вести конструктивный диалог... Без обид.
Поэтому, для начала изучи по ссылкам из шапки :
Справочник по NSIS - создан силами нашего сообщества.
Руководство пользователя. Перевод – Поляков А.В
И особенно обрати внимание на готовые примеры, как из документации так и из темы.

Андрей1990
19-04-2017, 12:09
Никаких обид)
Я действительно не знаю NSIS. Просто надо сделать установщик)))

Андрей1990
19-04-2017, 12:49
И, кстати, "Справочник по NSIS" - пустой)))

Painkiller
19-04-2017, 16:37
Андрей1990, разблокируйте

MaGoth
20-04-2017, 03:53
И, кстати, "Справочник по NSIS" - пустой))) »
В свойствах это файла жми ПКМ свойста, а далее, разблокировать напротив строки: "Файл получен из Инета, заблокирован" или как-то так, далее Применить и Ок. После этого все будет видно..

Rool6
23-04-2017, 14:06
Друзья, подскажите.

Задача: скопировать файлы из папки, которая лежит рядом с инсталятором в произвольную.

Делаю:
SetOutPath "${instdir}${Main_Dir}\" ;путь куда будем копировать
File /r "$EXEDIR\eee*" ;копируем все файлы из папки EEE, которая лежит рядом с инсталятором (она физически есть на диске, и в ней есть файлы)

Пробовал File /r "$EXEDIR\eee\*" - ошибка так же

Но выдаёт ошибку мол фалы не в этой папке не найдены.

Пробовал добавлять "\nofatal"
File /nonfatal /r "$EXEDIR\exe\*" - компиляция проходит, но файлы не копируются при запуске инсталятора

Пробую через переменную:
!define exe_dir "$EXEDIR"

SetOutPath "${instdir}${Main_Dir}\" ;путь куда будем копировать
File /r "${exe_dir}\eee*" ;копируем все файлы из папки EEE, которая лежит рядом с инсталятором

Ошибка ровно та же.

Пробую вывести сообщением, какой же путь оно имеет ввиду.
MessageBox MB_OK|MB_ICONSTOP "${exe_dir}\eee"
и
MessageBox MB_OK|MB_ICONSTOP "$EXEDIR\eee"

Путь видит правильный в обоих вариантах...

Пробую вместо $EXEDIR указать сам путь
File /r "d:\путь\eee*"


Так всё копируется нормально

Подскажите, что я делаю не так?

MaGoth
07-05-2017, 10:00
Задача: скопировать файлы из папки, которая лежит рядом с инсталятором в произвольную. »
Попробуй так:
CopyFiles ".\Orig_Dir\*.*" "$INSTDIR\Main_Dir"

Где:
Orig_Dir — папка, которая лежит рядом с инсталлятором.
Main_Dir — папка, куда копируем файлы.

AlekseyPopovv
26-05-2017, 16:41
Как поставить пароль на инсталлятор, что бы нельзя было открыть в 7zip?
Ну и естественно, что бы при запуске пароль не требовался.

Serg866
27-05-2017, 12:44
Коллеги, не срабатывает автоматическое определение папки установки на 64-разрядных системах

Сам код такой функции такой:
Function .OnInit
${If} ${RunningX64}
SetRegView 64
ClearErrors
ReadRegStr "$INSTDIR" HKLM "Software\MyProgram" "Install Dir"
ClearErrors
SetRegView 32
${EndIf}
FunctionEnd

в скрипте также прописана подгрузка нужных nsh
!include "x64.nsh"
!include "FileFunc.nsh"

а также InstallDirRegKey
InstallDirRegKey HKLM "Software\MyProgram" "Install Dir"


Использую юникод НСИС 3.0.
На 32-разрядной системе папка определяется, т.е функция срабатывает.
А на Windows x64 пустое поле в окне выбора папки установки...
Компилятор ошибок не выдаёт.

Что не так делаю, ребят?

Flix
28-05-2017, 00:00
Что не так делаю, ребят? »
А вы уверены, что на 64-бит системах, в указанной ветке реестра, действительно существует такой ключ? Может он прописан в 32-бит разделе и его нужно искать там? Уберите условие и проверьте, какой путь в таком случае покажет установщик.

Serg866
28-05-2017, 12:53
Спасибо. Действительно в 32-битном разделе ключ.
Код функции убрал, путь определился.

AlekseyPopovv
03-06-2017, 12:17
Мне нужно найти файл "file.exe" на компе (он может быть в любом месте) и путь до него записать в переменную. Как это сделать?

icq99999999
15-07-2017, 14:24
Подскажите, пожалуйста
Пытаюсь на Windows 7 импортировать данные реестра командой ExecWait '$SYSDIR\reg.exe import "$EXEDIR\Settings.reg"'
но reg файл не корректно импортируется (и дело явно не в reg файле)
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\DesktopBackground\Shell\Menu1]
"MUIVerb"="Программы"
"SubCommands"="notepad;calc"
"icon"="explorer.exe"
"Position"="bottom"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad]
@="Блокнот"
"icon"="notepad.exe"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\notepad\com mand]
@="notepad.exe"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\calc]
@="Калькулятор"
"icon"="calc.exe"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\CommandStore\shell\calc\comman d]
@="calc.exe"
суть в том что, каскадное контекстное меню почему то не работает, хотя если вручную запустить reg файл тогда работает как нужно.

Begin2Fly
15-07-2017, 14:27
icq99999999, а если regedit.exe /s "$EXEDIR\Settings.reg"

icq99999999
15-07-2017, 14:36
пробовал так: nsExec::Exec 'regedit.exe /s "$EXEDIR\Settings.reg"'
всю равно, хоть на рабочем столе и появляется меню но оно не открывается

Begin2Fly
15-07-2017, 14:39
icq99999999, пробелы лишние в слове command.

icq99999999
15-07-2017, 14:46
Begin2Fly, пробелы появились когда я копировал текс на сайт, а так в самом reg файле их нет
дело явно не в reg файле..

Begin2Fly
15-07-2017, 16:41
icq99999999,
${DisableX64FSRedirection}
ExecWait '$WINDIR\regedit.exe /s "$EXEDIR\Settings.reg"'

icq99999999
15-07-2017, 17:52
ну вот теперь всё работает. кстати как можно подняться на папку выше чем $EXEDIR ? и присвоить этот путь переменной




© OSzone.net 2001-2012