Показать полную графическую версию : [архив].: NSIS - все вопросы :.
kotkovets
25-07-2010, 17:54
maximum142
WriteINIStr $SYSDIR\Oeminfo.ini "Support Information" Line1 --
kotkovets,
Цитата Lisabon:Мне необходимо сделать проверку перед инсталляцией на пользователя... если это будет "Администратор" ("Admin"), то папка установки c:\Program Files\Программа\ , а если "Пользователь" ("User") - с ограниченными правами, то папка установки c:\Программа\ »
читать дальше » »
За совет конечно спасибо, но это не совсем, то, что нужно... то что вы привели в качестве примера, есть в c:\Program Files\NSIS\Examples\ ... Мне нужно чтоб перед установкой делалась проверка на пользователя... если это будет "Администратор" ("Admin"), то папка установки c:\Program Files\Программа\ , а если "Пользователь" ("User") - с ограниченными правами, то папка установки c:\Программа\ ,
тобишь надо чтоб перед установкой сделалась проверка на пользователя и в зависимости от от пользователя Администратор или Пользователь, менялось значение InstallDir, при Администраторе - InstallDir "$PROGRAMFILES\${PRODUCT_NAME}" , а при пользователе InstallDir "$SYSDRIVE\${PRODUCT_NAME}"
kotkovets
25-07-2010, 22:26
Lisabon ,что вам мешает в функции .onInit менять значение $INSTDIR в зависимости от переменной
$R0 ???
Function .onInit
!insertmacro IsUserAdmin $R0
; с правами администратора
${If} $R0 == 1
StrCpy $INSTDIR "$PROGRAMFILES\Программа"
MessageBox MB_OK "$INSTDIR"
${EndIf}
; c ограниченной учеткой
${If} $R0 == 0
StrCpy $SYSDRIVE $WINDIR 2
StrCpy $INSTDIR "$SYSDRIVE\Программа"
MessageBox MB_OK "$INSTDIR"
${EndIf}
FunctionEnd
может и глупый вопрос, но всё же, как заставить деинсталятор перед началом удаления убить запущенный процесс удаляемой проги?
kotkovets
02-08-2010, 14:50
как заставить деинсталятор перед началом удаления убить запущенный процесс удаляемой проги »
Function un.onInit
ExecWait 'TASKKILL /F /IM процесс.exe'
FunctionEnd
или Плагин (http://mulder.dummwiedeutsch.de/pub/downloads/testing/NSIS-KillProc-Plugin.2006-12-16.zip)
Привет всем!Люди я начинающий в среде NSIS...Подскажите пожалуйста как отобразить страницу с вводом параметров?
kotkovets
13-08-2010, 15:13
отобразить страницу с вводом параметров? »
Параметров чего?
при установке выбирается какие программы устанавливать, потом отображается страница ввода параметровнекотрой программы...
Я накидал что то похожее:
Function SozdStr
!insertmacro MUI_HEADER_TEXT "" ""
File /oname=$PLUGINSDIR\Forma.ini "*.ini"
InstallOptions::initDialog "$PLUGINSDIR\*.ini"
InstallOptions::Show
FunctionEnd
как сделать чтобы если не выбрана программа для установки из писка, то пропускать определенную страницу?
скажите пожалуйста с чего начать написание плагина???
kotkovets
13-08-2010, 18:41
как сделать, чтобы если не выбрана программа для установки из cписка, то пропускать определенную страницу? »
Вот примерчик, изучайте:
!include "MUI.nsh"
!insertmacro MUI_PAGE_COMPONENTS
Page custom Моя_страница
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
!insertmacro MUI_LANGUAGE "Russian"
OutFile "setup.exe"
InstallDir "$PROGRAMFILES\Моя программа"
Section "Настройка программы" test ;test -индефикатор секции
SectionEnd
Function Моя_страница
SectionGetFlags ${test} $9 ;считытывает значение секции и записывает в переменную $9
;если $9 =1 - секция отмечена, $9 =0 - секция не отмечена
StrCmp $9 0 Next ;сравнение: при $9 =0 переход к Next
Initpluginsdir
!insertmacro INSTALLOPTIONS_EXTRACT "Dialog.ini"
!insertmacro MUI_HEADER_TEXT "Установка" "Настройка программы"
!insertmacro MUI_INSTALLOPTIONS_DISPLAY "Dialog.ini"
Next:
FunctionEnd
Dialog.ini
[Settings]
NumFields=8
NextButtonText=Установить
RTL=0
[Field 1]
Type=Label
Text=Вы попали на страницу настройки программы
Left=5
Right=301
Top=1
Bottom=20
скажите пожалуйста с чего начать написание плагина??? »
Изучением NSIS , шапки темы (http://forum.oszone.net/thread-67386.html) и языков программирования
например, как пишется плагин на delphi?есть примеры плагинов?
Belial4444
15-08-2010, 12:21
Здравствуйте я новичок в нсис, собрал свой инсталлятор почти нормально). Есть проблема: при выборе пользователем папку установки после нажатия ок к папке установки автоматически приписывается \Left 4 dead 2 Берется это приписывание видимо осюда : InstallDir $PROGRAMFILES\Left4 dead 2 . Как такое возможно? Ведь эта команда просто отвечает за дефолтный путь. Причем если я напишу InstallDir $PROGRAMFILESLeft4 dead 2 то у меня не приписывается ничего, все нормально. Посмотрел примеры в папке нсис, там такая же ситуация). SetOutPath $***INSTDIR у меня стоит, может что-то в ней?
kotkovets
15-08-2010, 16:03
Belial4444,
команда InstallDir записывает значение в переменную $INSTDIR
OutFile "Test.exe"
Page Directory
Page InstFiles
InstallDir "$PROGRAMFILES\Left4 dead 2"
Section "test"
MessageBox MB_ICONINFORMATION|MB_OK "$INSTDIR"
SectionEnd
Нельзя так писать:
InstallDir $PROGRAMFILESLeft4 dead 2, a то у вас получится C:\Program FilesLeft4 dead 2 :cool:
SetOutPath $INSTDIR , а не SetOutPath $***INSTDIR
P.S
Имена папок,файлов имеющие пробел обязательно брать в "кавычки" - "$PROGRAMFILES\Left4 dead 2"
Привет всем!люди как писать плагин?подскажите будьте добры.
Ау?!есть кто?:)Не могу сообразить как написать плагин который будет при установке записывать данные в файл с определенной страницы где мы вводили некоторые данные.
Belial4444
15-08-2010, 19:44
kotkovets, видимо я на форум не так скопировал. В скрипте у меня нет звездочек. А про C:\Program FilesLeft4 dead 2, я написал чтобы акцентировать внимание нга том что при выборе папки установки не приписывается \Left 4 dead 2. Ковычки я поставил все равно после выбора папки установки к ней приписывается \ Left 4 dead 2.Вот скрипт http://rapidshare.com/files/413111679/patch.nsi Вот скомпилированный вариант http://rapidshare.com/files/413111981/l4d2_universal_update_2033.exe
kotkovets
15-08-2010, 23:42
Belial4444,
как вариант1:
Eсли вам надо, что бы файлы распаковывались в разные папки:
SetOutPath "Ваш Путь"
File /r *.*
SetOutPath "Ваш Путь1"
File /r *.*
Если не нужно,то страницу выбора директории исключаем
Команду InstallDir также исключаем
как вариант2:
!include "MUI.nsh"
Name "Universal L4D2 Patch"
!define MUI_ABORTWARNING
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES
!insertmacro MUI_LANGUAGE "Russian"
OutFile "l4d2_universal_update_2033.exe"
;InstallDir "$PROGRAMFILES\Left 4 dead 2"
Section ""
SetOutPath $INSTDIR
MessageBox MB_ICONINFORMATION|MB_OK "$INSTDIR"
;File /r /x *.nsi *.*
SectionEnd
$PROGRAMFILES - Предопределенная переменная
C:\Program FilesLeft4 dead 2 - вы просто указываете на определенную папку т.е абсолютный путь
А подробней все расскажет:
Справочник по NSIS (http://forum.oszone.net/thread-168287.html)
kotkovets
16-08-2010, 00:20
hb860, вы уж извините ,что за вас в этой теме отвечаю на все посты... :)
kotkovets, я только ЗА. у меня как раз со временем ппц полный
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC