Показать полную графическую версию : [архив].: NSIS - все вопросы :.
wolkow70
03-04-2012, 14:10
Есть ли возможность узнать как то эти ключи исходя из самого exe-шника? »
Иногда удается узнать с помощью Process monitor. Но там нужно много записей перелопатить, и не всегда удача ждет.
kotkovets,
Подскажите как конвертировать комманду с консольным окном
ExecWait "$INSTDIR\vlc-cache-gen.exe $INSTDIR\plugins"
в вариант со скрытым запуском.
Попробовал так, не запускается:
nsExec::Exec '"$INSTDIR\vlc-cache-gen.exe $INSTDIR\plugins"'
kotkovets
03-04-2012, 14:25
wolkow70, пробуйте так:
SetOutpath "$INSTDIR"
nsExec::Exec `"$INSTDIR\vlc-cache-gen.exe" "$INSTDIR\plugins"`
pop $0
MessageBox MB_OK "$0"
Если $0 равно нулю, утилитка отработала.
kotkovets, что бы не отображалась кнопка детали можно написать
ShowinstDetails nevershow
ShowuninstDetails nevershow
А возможно ли избавится от статусной строки?
http://s019.radikal.ru/i616/1204/f9/2eb82c8d95f4.png
kotkovets
04-04-2012, 16:58
А возможно ли избавится от статусной строки? »
---
SetDetailsPrint
none|listonly|textonly|both|lastused
---
Section Uninstall
SetDetailsPrint listonly
delete "C:\Users\Public\Desktop\CDBurnerXP.lnk"
SectionEnd
Olef2387
05-04-2012, 20:26
kotkovets. Здравствуйте.
Можно ли изменять заголовок для всплывающих мессажбоксов? Ну например чтобы был заголовок "Ошибка!". А так пока заголовок такой же как заголовок окна инсталлятора.
И ещё один вопрос. В силу специфики моей установки - у меня временные файлы копируются на системный диск пользователя. Не знаете как можно было бы проверить количество свободного места на системном диске? Если нехватает - сообщение что нужно место освободить!
спасибо!
kotkovets
05-04-2012, 22:04
Можно ли изменять заголовок для всплывающих мессажбоксов? Ну например чтобы был заголовок "Ошибка!". А так пока заголовок такой же как заголовок окна инсталлятора.
И ещё один вопрос. В силу специфики моей установки - у меня временные файлы копируются на системный диск пользователя. Не знаете как можно было бы проверить количество свободного места на системном диске? Если нехватает - сообщение что нужно место освободить! »
System::Call `kernel32::GetDiskFreeSpaceEx(t'C:\', *l.R3, *l.R4, *l)`
Math::Script "R3 = R3 / 1048576; R4 = R4 / 1048576"
MessageBox MB_OK "Всего: $R4 МБ$\nСвободно: $R3 МБ" IDOK
IntCmp $R3 200 +3 0 +3 ;если на диске С: места меньше, чем 200 МБ
System::Call "user32::MessageBox(i$HWNDPARENT, t'Недостаточно места на диске', t'nsis_error', i0x10)"
Abort
Olef2387
06-04-2012, 02:32
kotkovets. благодарю за код! (откуда только Вы всё знаете...)
А не могли бы дополнить... Я вот имел ввиду именно системный диск (ну там где Виндоус поставлен), просто не у всех диск С - системный. Можно ли как-нибудь сперва определить где стоит операционка и потом определять уже свободное место на этом диске?
Krinkels
06-04-2012, 10:02
откуда только Вы всё знаете... »
Потому что сам во всем старался разобраться, а не задавал глупых вопросов, как некоторые... Есть же справка, куча примеров, можно любой код состряпать.
kotkovets
06-04-2012, 11:03
просто не у всех диск С - системный. Можно ли как-нибудь сперва определить где стоит операционка и потом определять уже свободное место на этом диске? »
Можно подставить предопределенную переменную $WINDIR
первый символ переменной всегда возвратит букву системного раздела
System::Call `kernel32::GetDiskFreeSpaceEx(t'$WINDIR', *l.R3, *l.R4, *l)`
--
--
Olef2387
06-04-2012, 15:53
Потому что сам во всем старался разобраться, а не задавал глупых вопросов, как некоторые... Есть же справка, куча примеров, можно любой код состряпать. »
Это больше для позитива было сказано. Но коли уж в штыки воспринято, то позволю парировать Ваш выпад...
Аргумент номер один: Данная тема существует для общения, для вопросов и для ответов - посмотрите хотя бы на название. Какие вопросы глупые, а какие нет - решать не Вам.
Аргумент номер два: есть справка и что? Справка - это понятие растяжимое, и всего в ней невозможно предусмотреть. Поэтому, если есть какие-то конкретные претензии к моим вопросам в частности - говорите четко и ясно, кашу по тарелке размазывать не надо!
Аргумент номер три: нужно уметь уважительно относиться к людям. Тем более к неопытным пользователям. Я никого не обидел ни прямо, ни косвенно. Веду нормальное общение - спрашиваю, интересуюсь. И между прочим kotkovets, как отзывчивый человек - отвечает, помогает, советует.
Потому что сам во всем старался разобраться, а не задавал глупых вопросов, как некоторые... »
Пооффтопим... :) Во-первых, в контексте темы, глупых вопросов не бывает. Быают одни и те же вопросы и одни и те же грабли. Виноват ли сам "наступающий" на эти грабли ? По разному бывает. В случае с посылом вопрошающего "в справку" - скорее нет чем да. Потому, что штатная справка NSIS крайне отвратительно написана, и к тому же, на английском языке, что напрочь отворачивает многих пользователей от изучения NSIS.
Но на помощь пришли "гуру" NSIS и сделали справочник на русском языке. Но на то они и гуру, что имея опыт программирования пишут и говорят вроде бы по-русски, но ничего не понятно из-за специфики материала... То, что понятно и ясно им, вовсе не означает понимание материала неискушенным пользователем. Это уже чисто педагогический момент - изъясняться так, чтобы у читателя-ученика, не было разнотолков и недоумения в глазах. :)
А с этим пока проблематично... Как выход - подкрепление теории, примерами. Примеры конечно есть, но и примеры без внятных и развёрнутых комментариев - часто не понятны.
Без примеров - NSIS не изучить и не постичь. Начинающим пользователям - точно. И не надо их за это винить и ругать. :)
Больше примеров и Макаренского терпения... :)
АВТОР ТЕМЫ, ПОПРАВЬТЕ ШАПКУ И НА ПЕРВУЮ СТРОЧКУ ПОМЕСТИТЕ ССЫЛКУ НА СПРАВОЧНИК
Из моих постов "прошлых лет" вытаскиваю самое главное
http://forum.oszone.net/post-1301660-235.html
http://forum.oszone.net/post-1334031-371.html
http://forum.oszone.net/post-1335270-375.html
Знаете, когда я начал изучать NSIS (это было где-то года 3 назад), я начинал именно с HM NIS EDIT, и его функция мастера сценариев мне очень помогла, к тому же, я не знал английского языка (да и сейчас не знаю ), и к тому же, у меня тогда не было интернета, открывал пару раз файл справки, было очень страшно там же всё по английскому написано...НО там есть примеры всех команд, и разобраться не так уж и сложно окозалось...главное необходимо желание, и...усиленные тесты! »
Просто было большое желание и очень много тестов
Не скажу, что всё получалось сразу, даже сейчас не всё получается с первого раза, но усилия, которые прилагаются для реализации нужной возможности не оказываются напрасными, просто нужно запастись побольше терпением и желанием »
Сначала команды изучаются по отдельности методом тестов естественно, затем включаем устройство под названием мозг и посылаем ему команду на выявление возможных связок команд в функции, т.е. что можно сделать с использованием нескольких команд, вот тогда и рождаются функции.. »
А зачем вообще нужна справка по NSIS? И не нужно говорить, что там всё написано на английском языке, я начал изучать NSIS в лет 16-17 не зная английского языка (и сейчас не знаю) и никакого языка программирования, с использованием справки и примеров в папки NSIS\Examples
Это так сложно? Ввести в "указатель" в файле справки нужную вам команду и прочитать её описание? Там на все команды написаны подробнейшие примеры
Этими словами я не обращаюсь к кому-то конкретно и не хочу сказать, что лично я не собираюсь отвечать/помогать в разрешении вопросов, но посмотрите, как называется наша тема? NSIS - все вопросы, а не NSIS - скажите, что вам нужно, а мы напишем за вас готовый код »
Что мы видим СЕЙЧАС:
У вас всех есть то самое золото, которого не было ни у меня и ни у кого - Справка NSIS на русском языке, и, как мне кажется, в которой довольно-таки грамотно описаны все ньюансы
И теперь скажите, мне, лично вы Olef2387
знаете как можно было бы проверить количество свободного места на системном диске? Если нехватает - сообщение что нужно место освободить! »
Что вам помешало прочитать нашу справку по NSIS???
Я могу ответить за вас, ЛЕНЬ или просто не хотение "возиться с кодом", как я и процитировал сам себя в этом сообщении "NSIS - все вопросы, а не NSIS - скажите, что вам нужно, а мы напишем за вас готовый код"
В файле справке есть информация, КАК определить системный диск, КАК определить свободное место на диске, ВСЁ это там есть
Любой кто здесь напишет опять же "я не знаю английского" уже не отговорка (я тоже его не знаю и никогда не знал) т.к. уже есть не плохой справочник на русском
Почему я, будучи ещё ребёнком (16-17 лет) начал изучать NSIS с 0, без знания английского, без интернета и пришел к тому, что создал справочник для начинающих программеров?
Просто было огромное желание учиться, повторюсь, ничего с первого раза не получалось
Мне никто ни в чем не помагал
А вы здесь "беспомощные" задаёте одни и те же вопросы, ответы на которые уже давно есть в нашей справке
Я просто недоумеваю...
Если вы не хотите в этом разбираться (мол, лучше зайду-ка задам вопрос и получу готовый код) и банально прочитать уже справку на родном языке для вас затруднительно, то бросайте вообще программирование на NSIS и вообще не беритесь за любое программирование
потому есть смысл, донести администратору, модератору о смене куратора темы »
Ну так...написали бы сами, раз такое дело и вы знали об этом, берите шапку темы под свой контроль :yes:
на их усмотрение. »
Дааа мы тут сами разберёмся ха :)
Я вас назначаю куратором темы, только нужно обратиться к властям :lol:
Власти поддержали инициативу.
Поздравляем Вячеслава (kotkovets) с назначением на кураторство сей полезной темы! :)
Olef2387
08-04-2012, 23:36
kotkovets, тоже поздравляю вас. :)
Но я уже тут боюсь что-то спрашивать. K.A.V. выпрыгнет и отправит справочник читать) А сам справочник будет ли ещё обновляться ?
kotkovets
08-04-2012, 23:42
kotkovets, тоже поздравляю вас. »
спасибо!
А сам справочник будет ли ещё обновляться ? »
будет, когда точно, не знаю...
Но я уже тут боюсь что-то спрашивать. K.A.V. выпрыгнет и отправит справочник читать »
Прочитайте его внимательно и не задавайте вопросов, ответы на которые есть в справочнике
Если после прочтения всё равно остались вопросы по какой-то команде - это другое дело, мы хотя бы будем знать, что вы нашли ответ, но у вас что-то не получилось, мы поможем в любом случае
Поздравляем Вячеслава (kotkovets) с назначением на кураторство сей полезной темы! »
Поздравляем :yes:
wolkow70
09-04-2012, 12:44
kotkovets,
Нашел в справке ваш хедер ProcessFunc.nsh
Подскажите правильно ли я его понял и применяю, в таком случае: ?
${FindProcessName} "opera.exe" $0
StrCmp $0 none NotProcess
MessageBox MB_YESNO|MB_ICONINFORMATION|MB_TOPMOST "ВНИМАНИЕ!$\n\
$\nВ настоящее время программа ${PRODUCT_NAME} запущена!"
$\nПри нажатии кнопки 'Да' программа будет принудительно закрыта и удалена. \
$\nПри нажатии кнопки 'Нет' будет выполнен выход из программы удаления. \
$\nВы хотите продолжить удаление программы ${PRODUCT_NAME} ?" /SD IDYES IDYES close IDNO cancel
cancel:
abort
close:
${KillProcess} "opera.exe" $0
${ProcessWait} "opera.exe" "2000" $0
NotProcess:
kotkovets
09-04-2012, 13:06
Нашел в справке ваш хедер ProcessFunc.nsh
Подскажите правильно ли я его понял и применяю, в таком случае: ? »
Много лишнего...а еще лучше логической конструкцией:
${If} ${ProcessExists} "opera.exe"
MessageBox MB_YESNO|MB_ICONINFORMATION|MB_TOPMOST "ВНИМАНИЕ! $\n\
настоящее время программа ${PRODUCT_NAME} запущена! $\n\
При нажатии кнопки 'Да' программа будет принудительно закрыта и удалена $\n\
При нажатии кнопки 'Нет' будет выполнен выход из программы удаления. $\n\
Вы хотите продолжить удаление программы ${PRODUCT_NAME} ?" /SD IDYES IDYES +2
abort
${KillProcess} "opera.exe" $0
${ProcessWait} "opera.exe" "2000" $0
${EndIf}
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC