Показать полную графическую версию : [архив].: NSIS - все вопросы :.
Была раньше статья о реализации дополнительных ключей в NSIS »
Ссылка (http://yadi.sk/d/q2KwXvyu060wA).
Creator000
09-10-2012, 19:33
1 warning:
Generating version information for language "1049-Russian" without standard key "LegalCopyright"
Можно как нибудь использовать русский язык в описании?
добрый день,
у меня есть несколько вопросов, может кто-то подскажет.
1. Можно ли средствами NSIS переназначить действие стандартных кнопок диалогов (назад,вперед,отмена)
мне нужно что бы к примеру первая была отмена две другие - назад и вперед.
я знаю что могу просто поменять их местами любым редактором ресурсов.
Но может можно как то вешать свои действия на эти кнопки?
2. как вы реализуете подобные предложения?
"By clicking on Accept, you are accepting the EULA (http://) of domen (http://) and bla-bla-bla."
сейчас мы используем InstallOptions (те кастомные странички реализуем на ини файлах). Я знаю что это не удобно и устарело но ниже объясню почему делаем именно так.
мне приходиться разбивать данное предложение на несколько частей:
"By clicking on Accept, you are accepting the"
"EULA (http://)"
"of"
"domen (http://)"
" and bla-bla-bla."
и за тем в ини файле для каждой части делать свое поле и подбирать для этого поля координаты, что бы весь текст читался как одно предложение.
Теперь собственно почему ини файлы а не nsDialogs.
мы делаем инсталер с разными языками. И так как на разных языках мы будем иметь разную длину этих текстов, то приходиться для каждого языка делать отдельный ини файлик со своими координатами этих полей.
используя nsDialogs я так понял вместо 10 ини файлов и одной функции мне пришлось бы использовать 10 функций. Что мне кажется не очень удобным.
или может быть я что-то упускаю, и есть другие возможности реализации подобных конструкций?
с ув. Я
Creator000
10-10-2012, 13:31
Почему есть такое предупреждение:
Generating version information for language "1049-Russian" without standard key "FileVersion"
Если я удалил строку "FileVersion"?
kotkovets
10-10-2012, 14:24
yyv,
1. нет и да(гиморно), в любом случае будет выполняться стандартное действие...
2. Зачем 10 функций - http://forum.oszone.net/post-1553443-903.html
Langstring - задаете "переменную константу" для каждого из языков...
текст поля в nsDialogs легко изменять в зависимости от языка, тоже заданной языковой константой.
LangString height ${LANG_ENGLISH} "20"
LangString height ${LANG_FRENCH} "25"
---
${NSD_CreateLabel} 0u 0u 100% $(height)u ""
мне приходиться разбивать данное предложение на несколько частей:
"By clicking on Accept, you are accepting the"
"EULA"
"of"
"domen"
" and bla-bla-bla."
и за тем в ини файле для каждой части делать свое поле и подбирать для этого поля координаты, что бы весь текст читался как одно предложение. »
Абсолютное нерациональное решение! ИМХО!
Абсолютное нерациональное решение! ИМХО! »
Я с вами согласен... Но что делать, если мне в середине предложения необходимо вставить ссылку?
например у меня в предложении две ссылки.
все равно ведь придется разбивать предложение на составные блоки и собирать их как пазл?
размер для каждого языка/блока придется просчитать экспериментальным путем?
ведь мы не имеем никакой возможности сделать "авто размер" блока по содержимому?
или я что-то не понимаю?
kotkovets
10-10-2012, 15:00
или я что-то не понимаю? »
не понимаете...
я же сказал, что в nsDialogs можно менять размеры контрола на "лету"(в отличии от InstallOptions - правкой ini на лету)
---
Есть на крайний случай полезная встроенная переменная - $LANGUAGE
Так вот эта переменная меняет значение в зависимости от языка...
например:
!include "mui2.nsh"
OutFile "example.exe"
Page custom fnCustomInit
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE Russian
!insertmacro MUI_LANGUAGE English
LangString TITLE ${LANG_RUSSIAN} "Эта надпись"
LangString TITLE ${LANG_ENGLISH} "This inscription in English"
;длина контрола от выбранного языка
LangString length ${LANG_ENGLISH} 100
LangString length ${LANG_RUSSIAN} 50
var Dialog
var Label
Function .onInit
!insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd
Function fnCustomInit
MessageBox MB_OK "$$LANGUAGE = $LANGUAGE$\n$$(length) = $(length)" IDOK ;смотрим как меняются значения переменных
nsDialogs::Create 1018
Pop $Dialog
${NSD_CreateLabel} 0 5u "$(length)u" 12u "$(TITLE)"
Pop $Label
nsDialogs::Show
FunctionEnd
section
sectionend
Все просто и лаконично!
хорошо, просто что бы уточнить и резюмировать.
1 В моем случае разбивать на блоки все равно придется.
2 размер и координаты каждого блока для каждого языка я должен будут вычислить сам экспериментальным путем
я все правильно понял?
Creator000
10-10-2012, 15:11
kotkovets, поделитесь секретом?
kotkovets
10-10-2012, 15:14
В моем случае разбивать на блоки все равно придется. »
придется, константы забивать нужным текстом - к примеру знак $\n - переход на новую строку, значит...
значит увеличиваем высоту одного контрола... в зависимости от языка и длины текста...
2 размер и координаты каждого блока для каждого языка я должен будут вычислить сам экспериментальным путем
я все правильно понял? »
совершенно верно! но не 10 функций!
один раз рассчитать размеры для каждого из языков и все!
---
kotkovets, поделитесь секретом? »
все секреты в справке и + "рассекричиваются только опытным путем"... раз так 100-500 :lol:
Creator000
10-10-2012, 15:45
kotkovets,
ткните мне, пожалуйста, где написано в справке:
1. Как сделать так чтобы отображались русские буквы в LegalCopyrigt
2. Я удалил запись
VIAddVersionKey /LANG=${LANG_RUSSIAN} "FileDescription" "${PRODUCT_NAME} ${PRODUCT_VERSION}"
Почему программа говорит не понятно что?
С удовольствием почитаю, если бы это было.
И еще я создал деинсталлятор
WriteUninstaller "$INSTDIR\Uninstall.exe"
Но его имя с маленькой буквы: "uninstall.exe" Я хочу с большой.
Заметьте, я читал справку "Статьи от hb860 -> Деисталлятор". Как сделать с большой буквы там нет.
kotkovets
10-10-2012, 15:55
ткните »
VIProductVersion "1.2.3.4"
VIAddVersionKey "ProductName" "nsis"
VIAddVersionKey "LegalCopyright" "nsis"
VIAddVersionKey "CompanyName" "© xxxxxxxxx"
VIAddVersionKey "FileDescription" "${PRODUCT_NAME} ${PRODUCT_VERSION}"
VIAddVersionKey "FileVersion" "xxxx"
Creator000
10-10-2012, 15:57
kotkovets,
1. Как сделать так чтобы отображались русские буквы в LegalCopyrigt »
kotkovets
10-10-2012, 16:05
Как сделать так чтобы отображались русские буквы в LegalCopyrigt »
в win7 использовать юникодную версию nsis
Creator000
10-10-2012, 16:09
kotkovets,
Юникод версия ведь не будет работать в старых операционных системах?
И про деисталятор подскажите, пожалуйста. Если Вам не трудно.
kotkovets
10-10-2012, 16:23
Юникод версия ведь не будет работать в старых операционных системах? »
блин, win2000 нормально работает, ниже операционку используют 0,1% фанов или на производстве.
и еще буду благодарен за помощь
кнопка отмены на странице PAGE_INSTFILES
когда на нее нажимаю не выводиться предупреждение о закрытии
просто инсталер завершает работу
на всех предыдущих страницах это сообщение появляется...
подскажите где посмотреть...
Creator000
10-10-2012, 16:41
kotkovets, у меня такая проблема случилась:
При установки у меня в Пуск делается папка с ярлыками. При деинстлляции она должна полностью удалиться. Но этого не происходит.
С помощью Unlocker я вижу, что папка занята двумя процессами Explorer.EXE. Причем они появляются, когда запускается деинсталлятор. И поэтому не удаляются.
А вот руками удаляются в легкою.
И вот мне нужно сделать так, чтобы деинсталлятор все же их удалял сам. Просить перезагрузку как минимум глупо из-за ярлыков. Причем, я уже сказал, удалить руками легко.
Нет какой-нибудь команды "удалить принудительно"? Ведь другие установщики как то удаляют все сразу.
P.S.
Извините за деинсталлятор. NSIS глюканул. Щас все норм.
kotkovets
10-10-2012, 17:42
кнопка отмены на странице PAGE_INSTFILES
когда на нее нажимаю не выводиться предупреждение о закрытии
просто инсталер завершает работу »
покажите кусок скрипта, очень интересно...
по ходу когда страничка установки выполняется кнопка отмены недоступна...
назад нет возврата на предыдущую страничку...
если только сделать прерывание - abort, кнопка подсвечивается...
но прерывание уже было, завершена работа и закрытие установщика!
Где логика??? прерывать или не прерывать установку во время установки? установка уже прервана!
kotkovets
11-10-2012, 01:13
Можете поделиться секретом? »
SetShellVarContext current
или убрать в деинсталляторе SetShellVarContext all
по умолчанию current :biggrin:
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC