[архив].: NSIS - все вопросы :.
-
NoName01.cpp
Re: [архив].: NSIS - все вопросы :.
Здраствуйте, мой инсталлятор ставит 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 деинсталляторов?
И куда поместить код, который будет выполнятся в любом случае, независимо от того какую программу выбрал юзер?
Заранее благодарю)
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 - все вопросы :.
Доброй ночи, друзья 
Вопрос у меня вот назрел. Хочется сделать установщик-обновлятор. Чтобы он, если вдруг уже программа установлена, находил все экземпляры запущенной более старой версии программы, закрывал их и корректно ставил новую версию в тот же каталог с обновлением существующих файлов.
Я сделал пока через FindWindow/SendMessage в цикле. Мне бы хотело более человеческий способ. Есть такой?
И вот еще вопрос, как сделать, чтобы установщик в конце замочил сам себя? Деинсталлятор же умеет так.

Вопрос у меня вот назрел. Хочется сделать установщик-обновлятор. Чтобы он, если вдруг уже программа установлена, находил все экземпляры запущенной более старой версии программы, закрывал их и корректно ставил новую версию в тот же каталог с обновлением существующих файлов.
Я сделал пока через FindWindow/SendMessage в цикле. Мне бы хотело более человеческий способ. Есть такой?
И вот еще вопрос, как сделать, чтобы установщик в конце замочил сам себя? Деинсталлятор же умеет так.
-
NoName01.cpp
Re: [архив].: NSIS - все вопросы :.
wander, рулите процессами через
Как понять, "закончил себя"? У вас он не закрывается? Может, конкретный код глянем?
Только не в приват
http://nsis.sourceforge.net/Processes_plug-in
Как понять, "закончил себя"? У вас он не закрывается? Может, конкретный код глянем?
Только не в приват

-
K.A.V.
Re: [архив].: NSIS - все вопросы :.
Посмотрите, может это то, что вам нужно 
Код:
*Команда ${GetParent} помещает в переменную $R0 путь к запущенному деинсталлятору

читать дальше »
Код:
Код: Выделить всё
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 - все вопросы :.
Возник вопрос
Помогите с решением
ОS - win7
необходимо скопировать файл по адресу:
c:\Users\Default\AppData\Roaming\
если использовать $APPDATA копится в c:\Users\user\AppData\Roaming\
SetShellVarContext all
$APPDATA копится в c:\Users\All Users\AppData\Roaming\
есть ли возможность закинуть файл в дефолтовый профиль используя предопределенные переменные
Помогите с решением
О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 - все вопросы :.
Здравствуйте! У меня небольшая просьба помочь мне со скриптами на 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. Сам скрипт писался только для собственных нужд, так как другие сборки в сети меня не устраивают...
Заранее благодарен...
Есть весьма интересный пример 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 - все вопросы :.
wander,
Цитата wander:
Не закончил, а замочил. То есть удалился с диска.
veln, вам поможет чтение реестра, ветка HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList, значение Default.
Вот вам небольшой примерчик. Работает только в Windows Vista и Windows 7, для ХР путь на винте, как вы понимаете, другой.
Код:
Цитата 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 - все вопросы :.
У меня проблема с установкой программы в операционной системе win7.
Запускаю установку, указывают путь для установки по умолчанию в "Program Files\Название программы". Для работы программы требуется ключ, копирую его в каталог с программой. Все отлично работает.
Проблема возникает когда захожу под другим пользователем. Установленная программа говорит, что не зарегистрированна. Странно! Проверяю есть ли ключ в каталоге с программой. Его там нет.
И так для остальных пользователей. Например меняешь какой-нибудь файл под одним пользователем, под другим пользователем он остается прежним.
С чем это связано? Как это можно исправить? Может быть в инсталяторе как-то указать, что каталог с программой общий для всех пользователей?
Запускаю установку, указывают путь для установки по умолчанию в "Program Files\Название программы". Для работы программы требуется ключ, копирую его в каталог с программой. Все отлично работает.
Проблема возникает когда захожу под другим пользователем. Установленная программа говорит, что не зарегистрированна. Странно! Проверяю есть ли ключ в каталоге с программой. Его там нет.
И так для остальных пользователей. Например меняешь какой-нибудь файл под одним пользователем, под другим пользователем он остается прежним.
С чем это связано? Как это можно исправить? Может быть в инсталяторе как-то указать, что каталог с программой общий для всех пользователей?
-
dracosha
Re: [архив].: NSIS - все вопросы :.
Разобрался. Надо было дать полный доступ для всех пользователей на каталог, куда устанавливается программа.
Для этого надо было установить AccessControl plug-in
и написать:
AccessControl::GrantOnFile \
"$INSTDIR" "(S-1-1-0)" "FullAccess"
Для этого надо было установить AccessControl plug-in
http://nsis.sourceforge.net/AccessControl_plug-in
и написать:
AccessControl::GrantOnFile \
"$INSTDIR" "(S-1-1-0)" "FullAccess"
-
NoName01.cpp
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
Но 3 последних функции не вызываются.
Проверил значение $EXEPATH. Там совсем не тот путь: C:\Users\836D~1\AppData\Local\Temp\~nsu.tmp
То есть условие не срабатывает((((
читать дальше »
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
То есть условие не срабатывает((((