Показать полную графическую версию : [архив].: NSIS - все вопросы :.
CyberMaster,
File /r "Папка для упаковки\*.*"
Всё что вам нужно - это дописать /r после слова File.
CyberMaster
03-03-2010, 07:02
K.A.V., hb860, большое спасибо!
И еще один глупый вопрос :) Как изменить иконку деинсталлятора?
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"
MUI_ICON - это иконка инсталлятора,
MUI_UNICON - иконка деинсталлятора
Вы, например, можете использовать такой вариант:
!define MUI_ICON "d:\Мои иконки\windows.ico"
Подскажите кто нибудь как сделать картинку фона при инсталляции? (Смотрел пример в папке Examples но нифига не понял)
И еще такой вопрос, можно ли сделать музыку при инсталляции и если можно то как?
McG
В начале кода
!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit
В любом месте кода
Function myGuiInit
BgImage::SetBg "D:\...\...\bground.bmp"
BgImage::Redraw
BgImage::Sound "D:\...\...\song.wav"
FunctionEnd
CyberMaster
06-03-2010, 03:34
Перепробовал штук 20 скинов SkinCrafter Plugin и не один не работает, кроме Skinastic.skf. С чем это связано и можно ли решить данную проблему?
CyberMaster, шапка данной темы обязательна для прочтения
Расширение функциональности -> Интерфейс SkinCrafter Plugin -> Инструкция по использованию от K.A.V. (http://forum.oszone.net/post-1317606-267.html)
K.A.V., я так понимаю сначала звук и картинку нужна распаковать в папку TEMP а потом читать их оттуда функцией BgImage. А как так сделать чтоб при запуске инсталлятора сразу само распаковывались звук и картинка в папку TEMP а по окончанию действий инсталлятора удалялись оттуда?
CyberMaster
06-03-2010, 06:16
K.A.V., да я читал это естественно. И библиотеку которую вы давали тоже юзал (собственно на другой библиотеке вообще не один скин не грузится).
McG
Файлы bground.bmp и song.wav должны находиться в одной папке с вашим скриптом
Function myGuiInit
File /oname=$TEMP\bground.bmp bground.bmp
File /oname=$TEMP\song.wav song.wav
BgImage::SetBg "$TEMP\bground.bmp"
BgImage::Redraw
BgImage::Sound "$TEMP\song.wav"
FunctionEnd
Function .onGUIEnd
Delete "$TEMP\bground.bmp"
Delete "$TEMP\song.wav"
FunctionEnd
CyberMaster, вот вам моя (http://winxpregp.narod.ru/NSIS/K.A.V._SkinCrafter.rar) библиотека, качал не помню когда, удалил парочку ресурсов, тем самым размер сократился с 5 Мб до 300 Кб, функционал не поврежден :)
Подгружаются все скины (по крайней мере какие я тестировал, а их примерно штук 20 было :) )
Забыл, обращаться с вызовом функции нужно к System.dll
Это реально сделать, если да то подскажите плз как.
Производим вызов файла инсталятора с различными параметрами. Внутри инсталера в зависимости от значений параметров производится дальнейшая установка.
ant20
В начале кода
!include "FileFunc.nsh"
Затем
Function .onInit
${GetParameters} $R0
${GetOptions} "$R0" "/Test" $R1
IfErrors +2 0
call MyFunc1
FunctionEnd
Вся командная строка помещается в переменную $R0
Функция GetOptions определяет 1 параметр и его значение (если есть), например, командная строка инсталлятора:
C:\Install.exe /Silent /Test 12345 /OtherPar
при вызове функции с параметром /Test в переменную $R1 поместится текст 12345, т.к. после параметра ему указанно значение, если данный параметр будет указан (вне зависимости от значения), то будет выполнена функция MyFunc1
ant20, посмотрите пример в топике про оперу. Я там как раз разбираю командную строку, http://forum.oszone.net/thread-49157.html
А вообще, принцип тот же, что описал выше уважаемый (как минимум мной) K.A.V..
Подскажите пожалуйста, как сделать следующее.
Можно ли сделать, чтобы в зависимости от выбранного пользователем языка, при запуске инсталлятора, был установлен тот или иной файл?
Конкретнее, есть русская программа, она была переведена на английский, все сопутствующие с ней файлы остались прежними - изменился только exe'файл программы. Цель добавить в дистрибутив файлы "Программа_rus.exe" и "Программа_eng.exe", и в зависимости от выбранного языка инстяллятора один из этих файлов будет установлен с именем "Программа.exe".
Можно
Section "!${PRODUCT_NAME}" secOPERA
SetOutPath "$INSTALLDIR"
File "$(File_Ru)"
File "Все остальные файлы"
.....
......
......
SectionEnd
............
LangString File_Ru ${LANG_RUSSIAN} "d:\мой русский.ехе"
LangString File_En ${LANG_RUSSIAN} "d:\мой английский.ехе"
Или
Section "!${PRODUCT_NAME}" secOPERA
SetOutPath "$INSTALLDIR"
File /r /x "программа.exe" "d:\файлы программы\*.*"
File /oname "программа.exe" $(File_Ru)
.....
......
......
SectionEnd
............
LangString File_Ru ${LANG_RUSSIAN} "d:\мой русский.ехе"
LangString File_En ${LANG_RUSSIAN} "d:\мой английский.ехе"
Вот по такому принципу
kotkovets
19-03-2010, 13:25
Подскажите пожалуйста,как реализовать выбор одного компонента исключающий выбор других компонентов в пределах одной секционной группы компонентов? т.е:
SectionGroup "A"
Section 1
SectionEnd
Section 2
SectionEnd
Section 3
SectionEnd
SectionGroupEnd
Можно ли сделать, чтобы в зависимости от выбранного пользователем языка, при запуске инсталлятора, был установлен тот или иной файл? »
hb860, можно сделать проще :)
В переменной $LANGUAGE хранится ID выбранного языка (1033 - выбрали английский, 1049 - выбрали русский), поэтому распаковку файла можно реализовать гораздо проще:
Section "Моя программа"
SetOutPath $INSTDIR
StrCmp $LANGUAGE "1049" 0 +3
File /oname="$INSTDIR\Program.exe" "Rus.exe"
goto +2
File /oname="$INSTDIR\Program.exe" "Eng.exe"
SectionEnd
kotkovets, видите ссылку в моей подписи? Справочник по NSIS (http://forum.oszone.net/thread-168287.html)
Там описано, и в этой теме в доль и поперёк уже разжевали до немогу работу с секциями
Имейте совесть, ну пожалуйста, мы уже даже не направляем никого в файл помощи NSIS, мы просим вас хотя бы прочитать наш справочник на русском языке, это не совсем дико звучит?
hb860, оформи ссылку на справочник в шапку темы, выделив его жирным красным цветом :)
И шрифт примерно на 72 сделать, чтобы все увидили :biggrin:
совсем все обленились, даже лень русский help почитать...
kotkovets
19-03-2010, 14:24
За справочник спасибо! но, когда отметишь группу А, отмечаются два компонента или все, а нужно только один компонент или снять все компонеты.
SectionGroup /e A
;file
Section "Компонент №1" ID_1
SectionEnd
Section /o "Компонент №2" ID_2
SectionEnd
Section /o "Компонент №3" ID_3
SectionEnd
SectionGroupend
Function .onSelChange
; Выбор между компонентам 1, 2, 3
!insertmacro StartRadioButtons $1
!insertmacro RadioButton ${ID_1}
!insertmacro RadioButton ${ID_2}
!insertmacro RadioButton ${ID_3}
!insertmacro EndRadioButtons
FunctionEnd
Function .onInit
StrCpy $1 ${ID_1}
FunctionEnd
kotkovets, я из принципа вам сейчас не дам готовый ответ, ведь я не зря вам написал:
и в этой теме в доль и поперёк уже разжевали до немогу работу с секциями »
Это уже обсуждалось не раз, а то, что вам лень почитать посты в данной теме для решения вашей задачи - дело ваше
Если честно, утомляет отвечать (и искать за вас нужные посты) по несколько раз на одни и те же ответы, когда готовый ответ уже есть в этой теме
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC