[архив].: NSIS - все вопросы :.

Ответить
 • Просмотры: 10
Аватара пользователя
NoName01.cpp

Re: [архив].: NSIS - все вопросы :.

Сообщение NoName01.cpp »

Здраствуйте, мой инсталлятор ставит 3 программы, то есть у меня 3 секции, которые ставят 3 разных деинсталлятора для каждой программы. Что-то типа такого:



Section "Sec1" Sec1

...

WriteUninstaller "$INSTDIR\Sec1\uninstall.exe"

SectionEnd



Section "Sec2" Sec2

...

WriteUninstaller "$INSTDIR\Sec2\uninstall.exe"

SectionEnd



Section "Sec2" Sec2

...

WriteUninstaller "$INSTDIR\Sec2\uninstall.exe"

SectionEnd



Как мне прописать что должен делать каждый из 3 деинсталляторов?

И куда поместить код, который будет выполнятся в любом случае, независимо от того какую программу выбрал юзер?

Заранее благодарю)
Аватара пользователя
K.A.V.

Re: [архив].: NSIS - все вопросы :.

Сообщение K.A.V. »

Доброй ночи, друзья Изображение



Вопрос у меня вот назрел. Хочется сделать установщик-обновлятор. Чтобы он, если вдруг уже программа установлена, находил все экземпляры запущенной более старой версии программы, закрывал их и корректно ставил новую версию в тот же каталог с обновлением существующих файлов.



Я сделал пока через FindWindow/SendMessage в цикле. Мне бы хотело более человеческий способ. Есть такой?



И вот еще вопрос, как сделать, чтобы установщик в конце замочил сам себя? Деинсталлятор же умеет так.
Аватара пользователя
NoName01.cpp

Re: [архив].: NSIS - все вопросы :.

Сообщение NoName01.cpp »

wander, рулите процессами через
http://nsis.sourceforge.net/Processes_plug-in


Как понять, "закончил себя"? У вас он не закрывается? Может, конкретный код глянем?

Только не в приват Изображение
Аватара пользователя
K.A.V.

Re: [архив].: NSIS - все вопросы :.

Сообщение K.A.V. »

Посмотрите, может это то, что вам нужно Изображение


читать дальше »






Код:

Код: Выделить всё

Section "Sec1" Sec1
...
WriteUninstaller "$INSTDIR\Sec1\uninstall.exe"
SectionEnd
Section "Sec2" Sec2
...
WriteUninstaller "$INSTDIR\Sec2\uninstall.exe"
SectionEnd
Section "Sec3" Sec3
...
WriteUninstaller "$INSTDIR\Sec3\uninstall.exe"
SectionEnd
!include "FileFunc.nsh"
Section Uninstall
${GetParent} "$EXEPATH" $R0
StrCmp $R0 "$INSTDIR\Sec1" 0 +2
call UnInstall_SEC1
StrCmp $R0 "$INSTDIR\Sec2" 0 +2
call UnInstall_SEC2
StrCmp $R0 "$INSTDIR\Sec3" 0 +2
call UnInstall_SEC3
  SetAutoClose true
SectionEnd
Function UnInstall_SEC1
...
FunctionEnd
Function UnInstall_SEC2
...
FunctionEnd
Function UnInstall_SEC3
...
FunctionEnd

*Команда ${GetParent} помещает в переменную $R0 путь к запущенному деинсталлятору
Аватара пользователя
hb860

Re: [архив].: NSIS - все вопросы :.

Сообщение hb860 »

Возник вопрос

Помогите с решением



ОS - win7



необходимо скопировать файл по адресу:

c:\Users\Default\AppData\Roaming\



если использовать $APPDATA копится в c:\Users\user\AppData\Roaming\



SetShellVarContext all

$APPDATA копится в c:\Users\All Users\AppData\Roaming\





есть ли возможность закинуть файл в дефолтовый профиль используя предопределенные переменные
Аватара пользователя
hb860

Re: [архив].: NSIS - все вопросы :.

Сообщение hb860 »

Здравствуйте! У меня небольшая просьба помочь мне со скриптами на NSIS, если есть возможность и время, то можно ли мне помочь разобраться с ними, я был бы весьма признателен...



Есть весьма интересный пример RememberComponents.rar (прикрепил к сообщению), я хотел бы этот скрипт адаптировать в мой скрипт Nero_v10.0.rar (прикрепил к сообщению)... Собственно мне не понятно как адаптировать часть скрипта RememberComponents, Function .onInit и Function un.onInit , применение этих функций нарушает мои SectionGroup, тобишь все компоненты на странице MUI_PAGE_COMPONENTS идут в один ряд, без использования SectionGroup.



Вот скрины:



до





после





Если вам не сложно объясните как и что подправить или добавить в мой скрипт Nero_v10.0.rar... можно примером.... или правкой моего скрипта Nero_v10.0.rar. Сам скрипт писался только для собственных нужд, так как другие сборки в сети меня не устраивают...



Заранее благодарен...
Аватара пользователя
Painkiller

Re: [архив].: NSIS - все вопросы :.

Сообщение Painkiller »

wander,


Цитата wander:



Не закончил, а замочил. То есть удалился с диска.
[архив].: NSIS - все вопросы :.




http://nsis.sourceforge.net/SelfDel_plug-in




veln, вам поможет чтение реестра, ветка HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList, значение Default.

Вот вам небольшой примерчик. Работает только в Windows Vista и Windows 7, для ХР путь на винте, как вы понимаете, другой.



Код:

Код: Выделить всё

outfile "hello world.exe"
section
	ReadRegStr $0 HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" "Default"
	ExpandEnvStrings $0  $0
	StrCpy $0 "$0\AppData\Roaming\"
	MessageBox MB_OK $0
sectionEnd
Аватара пользователя
K.A.V.

Re: [архив].: NSIS - все вопросы :.

Сообщение K.A.V. »

У меня проблема с установкой программы в операционной системе win7.

Запускаю установку, указывают путь для установки по умолчанию в "Program Files\Название программы". Для работы программы требуется ключ, копирую его в каталог с программой. Все отлично работает.

Проблема возникает когда захожу под другим пользователем. Установленная программа говорит, что не зарегистрированна. Странно! Проверяю есть ли ключ в каталоге с программой. Его там нет.

И так для остальных пользователей. Например меняешь какой-нибудь файл под одним пользователем, под другим пользователем он остается прежним.

С чем это связано? Как это можно исправить? Может быть в инсталяторе как-то указать, что каталог с программой общий для всех пользователей?
Аватара пользователя
dracosha

Re: [архив].: NSIS - все вопросы :.

Сообщение dracosha »

Разобрался. Надо было дать полный доступ для всех пользователей на каталог, куда устанавливается программа.

Для этого надо было установить AccessControl plug-in
http://nsis.sourceforge.net/AccessControl_plug-in


и написать:

AccessControl::GrantOnFile \

"$INSTDIR" "(S-1-1-0)" "FullAccess"
Аватара пользователя
NoName01.cpp

Re: [архив].: NSIS - все вопросы :.

Сообщение NoName01.cpp »

Здраствуйте, K.A.V. Я задавал вопрос о трех деинсталляторах. Вы мне предложили следущий код:


читать дальше »


Section "Sec1" Sec1

...

WriteUninstaller "$INSTDIR\Sec1\uninstall.exe"

SectionEnd



Section "Sec2" Sec2

...

WriteUninstaller "$INSTDIR\Sec2\uninstall.exe"

SectionEnd



Section "Sec3" Sec3

...

WriteUninstaller "$INSTDIR\Sec3\uninstall.exe"

SectionEnd







!include "FileFunc.nsh"

Section Uninstall

${GetParent} "$EXEPATH" $R0

StrCmp $R0 "$INSTDIR\Sec1" 0 +2

call UnInstall_SEC1



StrCmp $R0 "$INSTDIR\Sec2" 0 +2

call UnInstall_SEC2



StrCmp $R0 "$INSTDIR\Sec3" 0 +2

call UnInstall_SEC3



SetAutoClose true

SectionEnd





Function UnInstall_SEC1

...

FunctionEnd



Function UnInstall_SEC2

...

FunctionEnd



Function UnInstall_SEC3

...

FunctionEnd



Но 3 последних функции не вызываются.

Проверил значение $EXEPATH. Там совсем не тот путь: C:\Users\836D~1\AppData\Local\Temp\~nsu.tmp

То есть условие не срабатывает((((
Ответить

Вернуться в «Автоматическая установка приложений»