Показать полную графическую версию : [архив].: NSIS - все вопросы :.
с предыдущим вопросом разобрался:
; в месте перехода
StrCpy $R9 -1
Call RelGotoPage
; за секцией установки
Function RelGotoPage ; Функция для произвольного перехода по страницам
; Вызывать след образом:
; StrCpy $R9 X ; где Х - относительный номер страницы (например: -1 переход на одну назад, 1 - на одну вперед)
; Call RelGotoPage
IntCmp $R9 0 0 Move Move
StrCmp $R9 "X" 0 Move
StrCpy $R9 "120"
Move:
SendMessage $HWNDPARENT "0x408" "$R9" ""
FunctionEnd
... но возник новый вопрос:
когда возвращаюсь снова в секцию установки (например когда во втором файле 2.msi была ошибка, и он не установился) то сначала запускается установка 3го файла 3.msi и одновременно начинается установка 1-го. Собственно вопрос? как сделать так, что бы не продолжалась "старая" установка, т.е. обнулить состояние данной секции?
Потому что скрипт выполняет процесс установки уже. Вам надо писать свою страницу и функцию установки. MUI_PAGE_INSTALLFILES (или как там её) вам уже не подходит в вашем случае
спасибо, но данное сделал след образом: после установки есть страница которая проверяет как прошла установка... если неверна, то возвращает на страницу с серийниками, если все ок. то к странице финиша
Создание своих собственных ключей для инсталлятора NSIS (http://winreview.ru/NSIS/472/Sozdanie-svoego-installyatora-na-NSIS.-Realizatciya-dopolnitelnih-klyuchej-komandnoj-stroki)
Это для тех, кому мало /S, /D и /NCRC
Как прописать System32 чтобы NSIS сам определял битность куда распаковаться в system32 или в syswow64
стоит $SYSDIR он лепит в system32 всегда без руздумий даже на 64-битной системе
прописать $WINDIR\SysWOW64\ нельзя т.к. на 32-битной системе такой папки нет
нужно чтобы NSIS на 32-битах в System32 распаковывал, а эта же установка на 64-битах в SysWOW64
kotkovets
11-06-2010, 01:44
Как прописать System32 чтобы NSIS сам определял битность куда распаковаться в system32 или в syswow64 »
Попробуйте так :
Name "GetVersion Example"
OutFile "GetVersion.exe"
ShowInstDetails show
Page InstFiles
Section
GetVersion::WindowsPlatformArchitecture
Pop $R9
StrCmp $R9 32 Not
MessageBox MB_OK "WindowsPlatformArchitecture: $R9"
SetOutPath "$WINDIR\SysWOW64"
Not:
StrCmp $R9 64 Note
MessageBox MB_OK "WindowsPlatformArchitecture: $R9"
SetOutPath "$SYSDIR"
Note:
SectionEnd
Плагин (http://nsis.sourceforge.net/GetVersion_(Windows)_plug-in#Download)
kotkovets, Систему определяет правильно, но распаковывает сразу в обе папки все равно - взял руками закинул файл в system32 и он автоматом скопировался в wow - значит сама винда копирует
kotkovets
11-06-2010, 23:02
И удаляются одинаковые файлы с двух папок одновременно?
kotkovets, Да! Как зеркала друг друга папки System32 и WOW64!
kotkovets
12-06-2010, 02:26
По скрипту в 32-битной системе папка C:\Windows\SysWOW64 не создаётся.
В 64-битной системе ,предполагаю, это системные переменные , которые не рекомендуется изменять - глюки возможны.
Возможно Винда копирует файлы для совместимости 32-разрядных и 64-разрядных приложений.
kotkovets, Странная совместимость - когда я указываю 64-битным файлам в System32 а в WOW 32-битные, то получается какие в последнюю очередь копируются - те и помещаются в обе папки
Доброй ночи, друзья :)
Вопрос у меня вот назрел. Хочется сделать установщик-обновлятор. Чтобы он, если вдруг уже программа установлена, находил все экземпляры запущенной более старой версии программы, закрывал их и корректно ставил новую версию в тот же каталог с обновлением существующих файлов.
Я сделал пока через FindWindow/SendMessage в цикле. Мне бы хотело более человеческий способ. Есть такой?
И вот еще вопрос, как сделать, чтобы установщик в конце замочил сам себя? Деинсталлятор же умеет так.
wander, рулите процессами через http://nsis.sourceforge.net/Processes_plug-in
Как понять, "закончил себя"? У вас он не закрывается? Может, конкретный код глянем?
Только не в приват :)
Только не в приват
И в мыслях не было!
Как понять, "закончил себя"? У вас он не закрывается? Может, конкретный код глянем?
Не закончил, а замочил. То есть удалился с диска.
http://nsis.sourceforge.net/Processes_plug-in
Спасибо :)
Возник вопрос
Помогите с решением
ОS - win7
необходимо скопировать файл по адресу:
c:\Users\Default\AppData\Roaming\
если использовать $APPDATA копится в c:\Users\user\AppData\Roaming\
SetShellVarContext all
$APPDATA копится в c:\Users\All Users\AppData\Roaming\
есть ли возможность закинуть файл в дефолтовый профиль используя предопределенные переменные
Здравствуйте! У меня небольшая просьба помочь мне со скриптами на NSIS, если есть возможность и время, то можно ли мне помочь разобраться с ними, я был бы весьма признателен...
Есть весьма интересный пример RememberComponents.rar (прикрепил к сообщению), я хотел бы этот скрипт адаптировать в мой скрипт Nero_v10.0.rar (прикрепил к сообщению)... Собственно мне не понятно как адаптировать часть скрипта RememberComponents, Function .onInit и Function un.onInit , применение этих функций нарушает мои SectionGroup, тобишь все компоненты на странице MUI_PAGE_COMPONENTS идут в один ряд, без использования SectionGroup.
Вот скрины:
до
http://s42.radikal.ru/i095/1005/d6/b0894321f1a4t.jpg (http://radikal.ru/F/s42.radikal.ru/i095/1005/d6/b0894321f1a4.jpg.html)
после
http://s60.radikal.ru/i168/1005/d5/9b5d68a23c6ct.jpg (http://radikal.ru/F/s60.radikal.ru/i168/1005/d5/9b5d68a23c6c.jpg.html)
Если вам не сложно объясните как и что подправить или добавить в мой скрипт Nero_v10.0.rar... можно примером.... или правкой моего скрипта Nero_v10.0.rar. Сам скрипт писался только для собственных нужд, так как другие сборки в сети меня не устраивают...
Заранее благодарен...
wander,
Не закончил, а замочил. То есть удалился с диска. »
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
Cyber-pilot
22-06-2010, 19:35
У меня проблема с установкой программы в операционной системе win7.
Запускаю установку, указывают путь для установки по умолчанию в "Program Files\Название программы". Для работы программы требуется ключ, копирую его в каталог с программой. Все отлично работает.
Проблема возникает когда захожу под другим пользователем. Установленная программа говорит, что не зарегистрированна. Странно! Проверяю есть ли ключ в каталоге с программой. Его там нет.
И так для остальных пользователей. Например меняешь какой-нибудь файл под одним пользователем, под другим пользователем он остается прежним.
С чем это связано? Как это можно исправить? Может быть в инсталяторе как-то указать, что каталог с программой общий для всех пользователей?
Cyber-pilot
24-06-2010, 10:42
Разобрался. Надо было дать полный доступ для всех пользователей на каталог, куда устанавливается программа.
Для этого надо было установить AccessControl plug-in http://nsis.sourceforge.net/AccessControl_plug-in
и написать:
AccessControl::GrantOnFile \
"$INSTDIR" "(S-1-1-0)" "FullAccess"
WolfSoul
30-06-2010, 00:13
Привет всем, доброго Вам времени суток.
Пожалуйста помогите с кодом...
Создал отдельную страницу
;--------------------------------
Var Dialog
Var CheckBox
Var GroupBox
Function fnCustomInit
nsDialogs::Create 1018
Pop $Dialog
${NSD_CreateGroupBox} 0 5% 100% 50% "Ярлыки программы:"
Pop $GroupBox
${NSD_CreateCheckBox} 10 18u 70% 10% "В меню Пуск"
Pop $CheckBox
${NSD_CreateCheckBox} 10 30u 70% 10% "На рабочем столе"
Pop $CheckBox
${NSD_CreateCheckBox} 10 42u 70% 10% "В панели быстрого запуска"
Pop $CheckBox
${NSD_CreateGroupBox} 0 -25% 100% 25% "Запуск программы вместе с системой:"
Pop $GroupBox
${NSD_CreateCheckBox} 10 -22u 70% 10% "Добавить программу в автозапуск"
Pop $CheckBox
nsDialogs::Show
FunctionEnd
Function fnCustomDestroy
${NSD_GetState} $CheckBox $R0
FunctionEnd
;--------------------------------
А как сделать что-бы она работала не как не разберусь.
;--------------------------------
Пока могу сделать только так...
;--------------------------------
; Пользователь сам выбирает, какие ярлыки ему нужны, по умолчанию все включено
SectionGroup /e "Ярлыки программы" SecShortcut
Section "Ярлык в меню Пуск" MenuProgramsShortcut
SectionIn 1 ; означает, что секция включена, а если не вставлять эту строку, тогда секция отключена
CreateDirectory "$SMPROGRAMS\AudioGrabber"
CreateShortCut "$SMPROGRAMS\AudioGrabber\Help.lnk" "$INSTDIR\AudioGrabber.hlp" "" "" "" "" "" "Помощь!!!"
CreateShortCut "$SMPROGRAMS\AudioGrabber\AudioGrabber.lnk" "$INSTDIR\AudioGrabber.exe" "" "" "" "" "" "AudioGrabber 1.83.0.1"
CreateShortCut "$SMPROGRAMS\AudioGrabber\Website.lnk" "$INSTDIR\${PRODUCT_NAME}.url" "" "" "" "" "" "Посетить сайт автора -> AudioGrabber"
CreateShortCut "$SMPROGRAMS\AudioGrabber\Uninstall.lnk" "$INSTDIR\Uninstall.exe" "" "" "" "" "" "Удалить -> AudioGrabber с Вашей системы"
SectionEnd
;--------------------------------
Section "Ярлык на рабочем столе" SecDesctopShortcut
SectionIn 1 ; означает, что секция включена, а если не вставлять эту строку, тогда секция отключена
CreateShortCut "$DESKTOP\AudioGrabber.lnk" "$INSTDIR\AudioGrabber.exe" "" "" "" "" "" "AudioGrabber 1.83.0.1"
SectionEnd
;--------------------------------
;
Section "Ярлык в панели быстрого запуска" SecQlaunchShortcut
SectionIn 1 ; означает, что секция включена, а если не вставлять эту строку, тогда секция отключена
CreateShortCut "$QUICKLAUNCH\AudioGrabber.lnk" "$INSTDIR\AudioGrabber.exe" "" "" "" "" "" "AudioGrabber 1.83.0.1"
SectionEnd
SectionGroupEnd
;--------------------------------
;
SectionGroup "Автозапуск" SecArlaunch
Section "Добавить программу в автозапуск" SecArlaunchShortcut
SectionIn 1 ; означает, что секция включена, а если не вставлять эту строку, тогда секция отключена
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Run" "AudioGrabber" "$INSTDIR\AudioGrabber.exe"
SectionEnd
SectionGroupEnd
;--------------------------------
Так вот как сделать что-бы моя страница заработала(реагировала на действия пользователя)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC