Показать полную графическую версию : [архив].: NSIS - все вопросы :.
MDinc, да пришлось сталкиваться с таким. Ключи реестра добавлялись на обоих системах, но при деинсталле удалялись только на одной, в зависимости от значения SetRegView. Как проверять разрядность системы нашел поиском на англоязычном форуме винампа.
Добавил такой кусочек кода:
!include "x64.nsh"
${If} ${RunningX64}
SetRegView 64
${Endif}
и все заработало.
Подскажите - как задать директорию для программы в меню пуск? например - программа.ехе /S что дальше?
Habetdin
09-09-2009, 18:40
Bond01, вроде бы никак :dont-know
В справке только такие ключи:
/NCRC disables the CRC check, unless CRCCheck force was used in the script.
/S runs the installer or uninstaller silently. See section 4.12 for more information.
/D sets the default installation directory ($INSTDIR), overriding InstallDir and InstallDirRegKey. It must be the last parameter used in the command line and must not contain any quotes, even if the path contains spaces. Only absolute paths are supported.
Жалко, я тоже ничего не нашел. Хочу прибраться в меню пуск, а то все программу кто-куда устанавливаются.
А есть русик на сам компилятор, что-то с ним немогу разобраться.
Habetdin
10-09-2009, 17:48
Bond01, http://vadimsva.ucoz.org/NSIS_rus_2.xx.7z
У NSIS есть поиск по реестру, только чтобы поиск подразделы тоже в себя включал?
Archius, воспользуйтесь плагином Registry для NSIS
http://nsis.sourceforge.net/Registry_plug-in
SlavikGol
04-10-2009, 04:48
Подскажите пожлуйста как можно сделать инсталяшку на nsis чтоб она инсталировалась у пользователе без прав админа
SlavikGol, попробуйте добавить в начале кода:
RequestExecutionLevel user
SlavikGol
04-10-2009, 12:31
K.A.V., Продовал при компиляции выдает ошибку
Invalid command: RequestExecutionLevel
эту строчку надо добавлять перед описанием всех функций, но после инклудинка библиотек, если всё равно ошибки- обновите свою версию NSIS, команда 100% валидная
SlavikGol
05-10-2009, 03:14
K.A.V., Спасибо! Старая версия NSIS стояла
Может глупые вопросы, но всё же нигде не нашел на них ответ:
1. Можно ли в NSIS сделать так чтобы при установке проги ставился или 1-й её компонент, или 2-й (тоесть при выборе 2-го галочка с 1-го автоматически снималась и наоборот)?
2. Может ли NSIS различать в какой ОС запущен инсталятор и в зависимости от этого выполнять те или иные действия?
3. При создании инстолятора делаю секцию "ярлыки" которая и создает при установке эти самые ярлыки... Создаётся папка с ярлыками в меню пуск в которой ярлычки на некоторые компоненты устанавливаемой проги, если при установке отменить выбор некоторых компонентов то ярлыки на них всё равно создаются, если создавать ярлыки в той же секции где устанавливается сам компонент то пропадает возможность выбора, создавать ярлыки или нет. Можно ли с этим както бороться?
Если у кого-то есть положительные ответы на эти вопросы, то, если можно, дайте пример....
Заранее благодарен всем.
1. Можно ли в NSIS сделать так чтобы при установке проги ставился или 1-й её компонент, или 2-й (тоесть при выборе 2-го галочка с 1-го автоматически снималась и наоборот)? »
Можно :)
2. Может ли NSIS различать в какой ОС запущен инсталятор и в зависимости от этого выполнять те или иные действия? »
Конечно
3. При создании инстолятора делаю секцию "ярлыки" которая и создает при установке эти самые ярлыки... Создаётся папка с ярлыками в меню пуск в которой ярлычки на некоторые компоненты устанавливаемой проги, если при установке отменить выбор некоторых компонентов то ярлыки на них всё равно создаются, если создавать ярлыки в той же секции где устанавливается сам компонент то пропадает возможность выбора, создавать ярлыки или нет. Можно ли с этим както бороться?
Если у кого-то есть положительные ответы на эти вопросы, то, если можно, дайте пример.... »
Можно, например я делал так: создавал глобальные переменные, если отмечена секция на установку компонента, то глобальной переменной назначается допустим "1", потом в секции "post" просто напросто делаем сравнение значений переменных, если значение переменной "1", то создаём ярлык, если нет, то нет... :)
Можно »
Конечно »
Можно, например я делал так: создавал глобальные переменные, если отмечена секция на установку компонента, то глобальной переменной назначается допустим "1", потом в секции "post" просто напросто делаем сравнение значений переменных, если значение переменной "1", то создаём ярлык, если нет, то нет... »
если не трудно можно какой либо скрипт для примера?
Определение операционной системы
; Создаём переменную
var WinVer
; В любой функции вызываем функцию определения ОС
call GetWindowsVersion
; Результат в переменной $WinVer (95, 98, ME, NT, 2000, XP, 2003, Vista, 7)
; Сама функция определения ОС
Function GetWindowsVersion
Push $R0
Push $R1
ClearErrors
ReadRegStr $R0 HKLM \
"SOFTWARE\Microsoft\Windows NT\CurrentVersion" CurrentVersion
IfErrors 0 lbl_winnt
; we are not NT
ReadRegStr $R0 HKLM \
"SOFTWARE\Microsoft\Windows\CurrentVersion" VersionNumber
StrCpy $R1 $R0 1
StrCmp $R1 '4' 0 lbl_error
StrCpy $R1 $R0 3
StrCmp $R1 '4.0' lbl_win32_95
StrCmp $R1 '4.9' lbl_win32_ME lbl_win32_98
lbl_win32_95:
StrCpy $R0 '95'
Goto lbl_done
lbl_win32_98:
StrCpy $R0 '98'
Goto lbl_done
lbl_win32_ME:
StrCpy $R0 'ME'
Goto lbl_done
lbl_winnt:
StrCpy $R1 $R0 1
StrCmp $R1 '3' lbl_winnt_x
StrCmp $R1 '4' lbl_winnt_x
StrCpy $R1 $R0 3
StrCmp $R1 '5.0' lbl_winnt_2000
StrCmp $R1 '5.1' lbl_winnt_XP
StrCmp $R1 '5.2' lbl_winnt_2003
StrCmp $R1 '6.0' lbl_winnt_vista
StrCmp $R1 '6.1' lbl_winnt_7 lbl_error
lbl_winnt_x:
StrCpy $R0 "NT $R0" 6
Goto lbl_done
lbl_winnt_2000:
Strcpy $R0 '2000'
Goto lbl_done
lbl_winnt_XP:
Strcpy $R0 'XP'
Goto lbl_done
lbl_winnt_2003:
Strcpy $R0 '2003'
Goto lbl_done
lbl_winnt_vista:
Strcpy $R0 'Vista'
Goto lbl_done
lbl_winnt_7:
Strcpy $R0 '7'
Goto lbl_done
lbl_error:
Strcpy $R0 ''
lbl_done:
strcpy $WinVer $R0
Pop $R1
Exch $R0
FunctionEnd
Один компонент для установки
; Секции с компонентами
Section /o "Компонент №1" ID_1
SectionEnd
Section /o "Компонент №2" ID_2
SectionEnd
Section /o "Компонент №3" ID_3
SectionEnd
Section /o "Компонент №4" ID_4
SectionEnd
Section /o "Компонент №5" ID_5
SectionEnd
Section /o "Компонент №6" ID_6
SectionEnd
; Функция проверки отметки, обязательна
Function .onSelChange
; Выбор между компонентам 1, 2, 3
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${ID_1}
!insertmacro RadioButton ${ID_2}
!insertmacro RadioButton ${ID_3}
!insertmacro EndRadioButtons
; Выбор между компонентам 5 и 6
!insertmacro StartRadioButtons $2
!insertmacro RadioButton ${ID_5}
!insertmacro RadioButton ${ID_6}
!insertmacro EndRadioButtons
FunctionEnd
Создаём ярлыки в зависимости отметки компонета
; Создаём глобальные переменные
var Component_1_is_checked
var Component_2_is_checked
var Component_3_is_checked
; Пошли компоненты
Section /o "Компонент №1" ID_1
strcpy $Component_1_is_checked "1"
SectionEnd
Section /o "Компонент №2" ID_2
strcpy $Component_2_is_checked "1"
SectionEnd
Section /o "Компонент №3" ID_3
strcpy $Component_3_is_checked "1"
SectionEnd
; Пост секция создания ярлыков
Section -Post
StrCmp $Component_1_is_checked "1" 0 no_shortCuts_1
;
; Ярлыки для 1 компонента
;
no_shortCuts_1:
StrCmp $Component_2_is_checked "1" 0 no_shortCuts_2
;
; Ярлыки для 2 компонента
;
no_shortCuts_2:
StrCmp $Component_3_is_checked "1" 0 no_shortCuts_3
;
; Ярлыки для 3 компонента
;
no_shortCuts_3:
SectionEnd
Подскажите, как подобную страничку создать?
http://pic.ipicture.ru/uploads/091016/thumbs/f3tU77wwsc.png (http://ipicture.ru/Gallery/Viewfull/25151896.html)
Impeck, сам показ диалога, картинки и всего текста отображенного на изображении реализовать не составляет никакого труда...для меня :)...но вот какие действия происходят если отмечена галочка "Установить яндекс бар", т.е. что именно выполняется для установки бара, здесь я вам подсказать не смогу (впринципе уже не по теме установка яндекс бара :))...могу лишь помочь вам в создании диалога
K.A.V., да это и интересует, с установкой тулбара сам разберусь.
Судя по скриншоту, мне кажется что использовался инсталлер не от NSIS по некоторым особенностям...
Но всё же, качайте прикреплённый архив, если чего не поймёте - спрашивайте не стесняйтесь ;)
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC