Ru-Board.club
← Вернуться в раздел «Программы»

» NSIS (Nullsoft Scriptable Install System)

Автор: xGMZx
Дата сообщения: 22.06.2007 16:47
проблема з ${RefreshShellIcons} решилась... я как-то повредил System.dll.... LordPE jeje

как сделать, чтобы инсталл запоминал атрибуты файлов?
Автор: SmarterBB
Дата сообщения: 29.06.2007 14:13

Цитата:
как сделать, чтобы инсталл запоминал атрибуты файлов?

использование /a должно помочь, если хочешь сохранить атрибуты файла
File /a something.exe

(If the /a switch is used, the attributes of the file(s) added will be preserved.)
Автор: mikar
Дата сообщения: 14.07.2007 18:59
NSIS 2.29 [Release notes:]
Автор: kingoff
Дата сообщения: 18.07.2007 19:55
Доброго! Есть одна задумка, но даже не знаю в какую сторону копать.
Нужно что бы в течении инсталяции, пользователь мог изменить определенный(уже с содержимым) *.ini, файл. Мож кто уже делал это, поделитесь..
Автор: Garrett
Дата сообщения: 18.07.2007 20:21
kingoff
Хелп - Chapter 4: Scripting Reference - 4.9.2 Registry, INI, File Instructions
Автор: kingoff
Дата сообщения: 18.07.2007 20:29
Garrett
Спасибо, я еще вернусь
Автор: Vetal83
Дата сообщения: 19.07.2007 01:28
Создал страницу с выбором переустановки или удаления обнаруженой установленой программы и возникла проблема. Если устанавливать приложение в папку по умолчанию то при следующем запуске её можно удалить а если установить к примеру на диск C то приложение не удаляется. Код брал из makensis.nsi, подскажите в чём может быть проблема?
[more=makensis.ini][Settings]
NumFields=3
[Field 1]
Type=Label
Left=0
Right=-1
Top=0
Bottom=24
Text=MyProg is already installed. Select the operation you want to perform and click Next to continue.
[Field 2]
Type=RadioButton
Left=30
Right=-1
Top=50
Bottom=58
State=1
Text=Reinstall MyProg
[Field 3]
Type=RadioButton
Left=30
Right=-1
Top=70
Bottom=78
Text=Uninstall MyProg[/more]
[more=Код]!include "MUI.nsh"

!define MUI_ABORTWARNING

Name "MyProg"
OutFile "setup.exe"
InstallDir "$PROGRAMFILES\MyProg"

!insertmacro MUI_PAGE_WELCOME
Page custom PageReinstall
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"

ReserveFile "makensis.ini"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS

Function .onInit
!insertmacro MUI_INSTALLOPTIONS_EXTRACT "makensis.ini"
FunctionEnd

Section Files
SetOutPath "$INSTDIR"
File "MyProg.exe"
SectionEnd

Section -Post
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe" "" "$INSTDIR"
WriteUninstaller "$INSTDIR\uninstall.exe"
SectionEnd

Function PageReinstall
!insertmacro MUI_HEADER_TEXT "Already Installed" "Choose the maintenance option to perform."
ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe" ""
StrCmp $R0 "" 0 +2
Abort
StrCpy $R0 "2"
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "makensis.ini"
!insertmacro MUI_INSTALLOPTIONS_READ $R1 "makensis.ini" "Field 2" "State"
StrCmp $R0 "1" 0 +1
StrCmp $R0 "2" 0 +2
StrCmp $R1 "1" reinst_done
ExecWait '$INSTDIR\uninstall.exe'
Quit
reinst_done:
FunctionEnd

Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove MyProg?" IDYES +2
Abort
FunctionEnd

Section Uninstall
Delete "$INSTDIR\MyProg.exe"
Delete "$INSTDIR\uninstall.exe"
RMDir "$INSTDIR"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\App Paths\MyProg.exe"
SectionEnd[/more]
Автор: SmarterBB
Дата сообщения: 20.07.2007 15:26
Нужно сделать так, чтобы возможность выбора компонента установки зависела от того, существует ли конкретный файл, данный код не помогает

Iffileexists "C:\temp\123.txt" +2 0
SectionIn RO

секция всегда получается ридонли, то бишь эта строка выполняется всегда...
Автор: Garrett
Дата сообщения: 20.07.2007 16:24
SmarterBB
Одно из решений - использовать InstType.

Другое решение:
Iffileexists "C:\temp\123.txt" +3 0
копируем одно
goto +2
копируем другое
Автор: SmarterBB
Дата сообщения: 20.07.2007 16:58
ну я имел ввиду то, что если файл существует, галочка будет доступна, если файла нет, то галочка ридонли
Автор: Garrett
Дата сообщения: 20.07.2007 20:25
Тогда - InstType.
Автор: SmarterBB
Дата сообщения: 20.07.2007 21:33
Как я понял с помощью InstType можно реализовать выпадающее меню с выбором варианта установки (минамальная полная итп), но в зависимости от наличия или отсутствия конкретного файла сделать секцию недоступной для включения/выключения и снова доступной он реализовать не может.
На примере:
есть 5 компонентов и соответственно 5 секций и 5 галочек. Для того, чтобы установить первый компонент, в системе должна быть установлена нужная библиотека. Если библиотека установлена, то галочку можно поставить или убрать. Если библиотека не установлена (файла нет), то галочка становится серой (ридонли) и неотмеченной и ничего с ней сделать нельзя будет... вот примерно так.
Автор: Garrett
Дата сообщения: 20.07.2007 22:45
SmarterBB
Я бы попробовал в зависимости от наличия конкретного файла включать или нет конкретный InstType.
Примерно так(синтаксис левый, просто для наглядности)
if файла нет
then
InstType
end-if
В итоге получим энное число галочек, н-р 3, но не 5 галочек из которых 2 нельзя выбрать.

Вообщем, дерзай, потом отпишешь, работает или нет.
Автор: mogdin
Дата сообщения: 22.07.2007 14:16
Помогите пожалуйста кто сможет.
Какаие строки вписать в скрипт для того, чтобы при инсталляции программы в реестр внеслись ключи регистрации. Из приложенной сравки вычитал и получается вот так:
WriteRegStr HKCU "Software\Bomers\Restorator 2006\Registration" "Name" "[имя]"
WriteRegStr HKCU "Software\Bomers\Restorator 2006\Registration" "Password" "[пароль]"
WriteRegStr HKCU "Software\Bomers\Restorator 2006\Registration" "Type" "Regular"
Но компиляции скрипта пишет - ошибка.
Автор: Maks150988
Дата сообщения: 22.07.2007 18:05
вот когда беспорядочный набор символов как в пароле, то знак " не ставится вроде. то есть тебе нужно данные пароля без кавычек просто сделать. а вообще вроде когда-то скачивал кажись вроде твою сборку ресторатора и потом жутко ругался - инсталляшка добавила ассоциации через одно место и все исполняемые файлы при двойном клике открывались в рестораторе, а после удаления оного (думал что восстановится все) вообще пстц был. пришлось самому в ассоциации в винде лазить чтоб исправить...
Автор: mogdin
Дата сообщения: 22.07.2007 18:44
Дело в том, что при компиляции сразу выделяется первая строка этой записи и пишет ошибка. Удалив строку, выделяется вторая и опять ошибка....
А по поводу моей инсталяшки - ну, во первых я сразу извиняюсь (хотя сомневаюсь, что скаченная была моя, потому как я не делал ассоциации в исталляторе. Я же не могу вписать в реестр ключи, соответственно и ассоциации (они тоже прописываются в реестре). Иначе не задал бы такой вопрос). Во вторых, я самоучка и инсталлятор собирал чуть ли не впервые. Сам NSIS перевёл, а справиться с ним не могу. Все вроде бы делаю как в справке, но не получается. Не задача. Убрал скобки и ковычки по твоему совету - не помогло.
Автор: Maks150988
Дата сообщения: 22.07.2007 21:00
На крайний случай можно попробовать Reg2Nsis. Предварительно сохрани требуемый куст или ветку реестра и обработай этой программой. Должно помочь.
Автор: mogdin
Дата сообщения: 22.07.2007 21:11
Качал эту прогу и не пойму как ей пользоваться

Добавлено:
Получилось рег файл конвертировать под скрипт, вставил строки и нифига. Та же ситуация, в первой строке ошибка и т.д. Что то не пойму,где ошибка. Вот файл после конвертации:
############################### reg2nsis begin #################################
# This NSIS-script was generated by the Reg2Nsis utility #
# Author : Artem Zankovich #
# URL : http://aarrtteemm.nm.ru #
# Usage : You can freely inserts this into your setup script as inline text #
# or include file with the help of !include directive. #
# Please don't remove this header. #
################################################################################

WriteRegStr HKEY_CURRENT_USER "Software\Bomers\Restorator\Registration" "Name" "Restorator"
WriteRegStr HKEY_CURRENT_USER "Software\Bomers\Restorator\Registration" "Password" "vGWliRGXQ6BdlBHqUmOLyXf7LeqjMDKT9zANOixXCP0TiTrXm53LnLl69-3JY7znx9TNt10l1rQloPuNmR0BGaVJ2LK0dN+CeOvJnRtwCjAInzHvhY4IQPn5Yu9bNFazjExMYb55vviNKRkGUPytjvJfQuOgLsqULcZ-a-vNRXw"
WriteRegStr HKEY_CURRENT_USER "Software\Bomers\Restorator\Registration" "Type" "Regular"

############################### reg2nsis end #################################
Автор: IMPOMEZIA
Дата сообщения: 22.07.2007 23:26
mogdin
Напиши хоть что за ошибка
Автор: Maks150988
Дата сообщения: 23.07.2007 02:51
Ммм... Может просто слишком длинная строка? На сайте НСИС есть отдельно скомпилированные файлы для работы с длинными строками какая-то спец сборка - вроде экзешник. Типа специально для разработчиков или чего-то там. Попробуй ее использовать. Наверняка делор в этом. Вель ключ у Ресторатора немаленький.
Автор: mogdin
Дата сообщения: 24.07.2007 05:46
Вот ошибка в компилятотре.
Error: command WriteRegStr not valid outside Section or Function
Error in script "D:\Restorator 2007 (Сборка 3.7.0.1729) Русская версия\сборка.nsi" on line 40 -- aborting creation process
А по поводу длинны строки - не думаю, ведь при компиляции скрипта сначала выделяется первая строка (
WriteRegStr HKEY_CURRENT_USER "Software\Bomers\Restorator\Registration" "Name" "Restorator"), а она без ключа. Может нужна секция. Я просто вставляю эти три строчки в скрипт в любое место.
Автор: namchik
Дата сообщения: 24.07.2007 05:56
mogdin
Вводи свои WriteRegStr внутри секций, например

section -registry

WriteRegStr HKEY_CURRENT_USER "Software\Bomers\Restorator\Registration" "Name" "Restorator"
WriteRegStr HKEY_CURRENT_USER "Software\Bomers\Restorator\Registration" "Password" "vGWliRGXQ6BdlBHqUmOLyXf7LeqjMDKT9zANOixXCP0TiTrXm53LnLl69-3JY7znx9TNt10l1rQloPuNmR0BGaVJ2LK0dN+CeOvJnRtwCjAInzHvhY4IQPn5Yu9bNFazjExMYb55vviNKRkGUPytjvJfQuOgLsqULcZ-a-vNRXw"
WriteRegStr HKEY_CURRENT_USER "Software\Bomers\Restorator\Registration" "Type" "Regular"

sectionend
Автор: mogdin
Дата сообщения: 24.07.2007 17:13
Спасибо всем кто отозвался. Отдельное спасибо - namchik. По его совету все сработало. Только в справке вроде нет того, что секция должна начинаться и заканчиваться так. Главное, что сработало.
Еще раз всем большое спасибо за участие в моей проблеме.

Добавлено:
Кстати, namchik ты случайно не с Нукуса? Я там одного знал.
Автор: namchik
Дата сообщения: 25.07.2007 01:00

Цитата:
Спасибо всем кто отозвался. Отдельное спасибо - namchik. По его совету все сработало. Только в справке вроде нет того, что секция должна начинаться и заканчиваться так.

дык ты справку всю читай, а не частями

Цитата:
ты случайно не с Нукуса?


нет... а что это?
Автор: Victor_Dobrov
Дата сообщения: 02.08.2007 16:03
Спецы, посоветуйте как прикрутить к NSIS проверку системных требований как в Corona Skin (в Inno Setup не устраивает объём инсталлятора в 650 Кб)
Автор: iglezz
Дата сообщения: 02.08.2007 16:52
Victor_Dobrov

Цитата:
Спецы, посоветуйте как прикрутить к NSIS проверку системных требований как в Corona Skin (в Inno Setup не устраивает объём инсталлятора в 650 Кб)

Копать нужно в сторону плагинов
какие именно системные требования нужно проверять?
Автор: makarei
Дата сообщения: 02.08.2007 20:31
Пытаюсь сварганить инсталляшку для DivX декодера, и вроде как работает, но только вот при деинсталляции не удаляется папка программы (и линки) из стартового меню. Подскажите, что не так?

[more=Скрипт]

; Script for setting up DivX Decoder

Name "DivX Decoder"
BrandingText ""
SetCompressor /SOLID LZMA
OutFile "C:\1\Output\setup.exe"
InstallDir "$PROGRAMFILES\DivX Decoder"
ShowInstDetails show
ShowUnInstDetails show

Function .onInit
MessageBox MB_YESNO|MB_ICONQUESTION "This will install $(^Name). Do you wish to continue?" IDYES +2
Abort
FunctionEnd

Section -Files
SetOutPath "$INSTDIR"
File "DivX\PROGRAMFILES\config.exe"
SetOutPath "$SYSDIR"
File "C:\1\DivX\SYSDIR\divxdec.ax"
RegDLL "$SYSDIR\divxdec.ax"
File "C:\1\DivX\SYSDIR\DivXMedia.ax"
RegDLL "$SYSDIR\DivXMedia.ax"
File "C:\1\DivX\SYSDIR\DivXsm.exe"
File "C:\1\DivX\SYSDIR\divxsm.tlb"
File "C:\1\DivX\SYSDIR\qt-dx331.dll"
SectionEnd

Section -PostInstall
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DivX Decoder" "DisplayName" "DivX Decoder"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DivX Decoder" "UninstallString" "$INSTDIR\uninstall.exe"
WriteUninstaller "$INSTDIR\uninstall.exe"
CreateDirectory "$SMPROGRAMS\DivX Decoder"
CreateShortCut "$SMPROGRAMS\DivX Decoder\Configuration.lnk" "$INSTDIR\config.exe"
CreateShortCut "$SMPROGRAMS\DivX Decoder\Uninstall.lnk" "$INSTDIR\uninstall.exe"
SectionEnd

Section -Run
ExecWait '"$SYSDIR\DivXsm.exe" /register'
SectionEnd

#### Uninstaller code ####

Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2
Abort
FunctionEnd

Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."
FunctionEnd

Section Uninstall

ExecWait '"$SYSDIR\DivXsm.exe" /unregister'

DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\DivX Decoder"

Delete "$INSTDIR\uninstall.exe"
Delete "$SYSDIR\qt-dx331.dll"
Delete "$SYSDIR\divxsm.tlb"
Delete "$SYSDIR\DivXsm.exe"
UnRegDLL "$SYSDIR\DivXMedia.ax"
Delete "$SYSDIR\DivXMedia.ax"
UnRegDLL "$SYSDIR\divxdec.ax"
Delete "$SYSDIR\divxdec.ax"
Delete "$INSTDIR\config.exe"

Delete "$SMPROGRAMS\DivX Decoder\Configuration.lnk"
Delete "$SMPROGRAMS\DivX Decoder\Uninstall.lnk"
RMDir "$SMPROGRAMS\DivX Decoder"

RMDir "$INSTDIR"

SetAutoClose true
SectionEnd


[/more]
Автор: iglezz
Дата сообщения: 02.08.2007 20:57
makarei
У меня этот скрип отработал как надо, все созданное при установке снес.
установка и удаление происходят под одним и тем же юзером? (константы типа $SMPROGRAMS по умолчанию подразумевают текущего пользователя).
Автор: makarei
Дата сообщения: 02.08.2007 21:05
iglezz

Цитата:
установка и удаление происходят под одним и тем же юзером?

Да, под одним и тем же (админ). У меня Vista (32bit), UAC выключен.
Автор: iglezz
Дата сообщения: 02.08.2007 22:10
makarei
может тогда попробовать поиграть с параметрами SetShellVarContext, проследить с помощью filemon куда создаются линки и откуда инсталлер пытается их удалить.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364

Предыдущая тема: The Bat!


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.