Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
Можно воспользоваться ExecShell "open" »
Можно, а нужно ли? Если у пользователя будут сбиты ассоциации, то команда не сработает...Чем вам не угодил nsExec?
но тогда как решить проблему невозможности закрытия окна cmd до завершения процесса? »
Скрыть окно? FindWindow + ShowWindow
ShowWindow $HWND 0
; $HWND - дескриптор cmd окна, узнаётся через FindWindow
; 0 - скрыть, 1 - показать окно
Описание команды FindWindow есть в справочнике
Добрый день. Как отключить функцию перетаскивания для окна инсталлятора?
kotkovets
05-11-2013, 14:49
но тогда как решить проблему невозможности закрытия окна cmd до завершения процесса? »
Я себе делаю так, запуск скрытно все, что можно, с ожиданием:
Outfile ostart_.exe
!define hideexec "!insertmacro func_hideexec"
!macro func_hideexec exehide
System::Store S
System::Alloc 72
Pop $2
System::Call "*$2(i72,i,i,i,i,i,i,i,i,i,i,i3)"
System::Call "*(i,i,i,i)i.r3"
System::Call 'kernel32::CreateProcess(i0,t"${exehide}",i0,i0,i0,i0,i0,i0,ir2,ir3)i.r4'
System::Call "*$3(i.r1)"
System::Call "kernel32::WaitForSingleObject(ir1, i-1)"
System::Call "kernel32::CloseHandle(ir4)"
System::Free $2
System::Free $3
System::Store L
!macroend
Section
${hideexec} "C:\123.bat"
SectionEnd
В батнике можно прописать в конце exit или прибивать в конце cmd
Limonica
05-11-2013, 16:43
kotkovets, http://forum.oszone.net/post-2247556-700.html
Как отключить функцию перетаскивания для окна инсталлятора? »
Здесь есть решение :
http://forum.codenet.ru/q72348/Как+запретить+перемещение+окна+мышкой%3F?s=0#answer_379693
Но не для NSIS...
kotkovets
05-11-2013, 19:17
Тестировался нижеследущий код XP Professional - все ок, XP Home - установка не проходит, в чем может быть проблема, непонятно, буду благодарен если посмотрите...
Limonica че там тестировать в кастрированом Home, есть утилика DPInst (http://www.filecrop.com/DPInst.exe.html)
для установки драйверов.. изучайте ключи запуска - в сети туча примеров - DPInst /?
Как отключить функцию перетаскивания для окна инсталлятора »
скорее штатными средствами врятли легко реализуемо..
Здесь есть решение :
Но не для NSIS... » Спасибо, но...
скорее штатными средствами врятли легко реализуемо.. »
Первый вопрос задал, на который не получил ответа: "писалось раньше" :) , а жаль...
Limonica
06-11-2013, 01:30
kotkovets, задача установить драйвер без посторонних ехе, в исходниках devcon указанно:
cmdUpdate
This command shows how to use UpdateDriverForPlugAndPlayDevices to update the driver for all devices to a specific driver. Normally INSTALLFLAG_FORCE would not be specified allowing UpdateDriverForPlugAndPlayDevices to determine if there is a better match already known. It's specified in DevCon to allow DevCon to be used more effectively as a debugging/testing tool. This cannot be done on a remote machine or in the context of Wow64.
cmdInstall
A variation of cmdUpdate to install a driver when there is no associated hardware. It creates a new root-enumerated device instance and associates it with a made up hardware ID specified on the command line (which should correspond to a hardware ID in the INF). This cannot be done on a remote machine or in the context of Wow64.
Такое ощущение что в скрипте реализованно именно обновление уже установленных устройст, а вовсе не в кастрации дело...
http://code.msdn.microsoft.com/windowshardware/DevCon-Sample-4e95d71c
Первый вопрос задал, на который не получил ответа: "писалось раньше" »
Ответ то есть. Осталась самая "малость" - интерпретировать его в NSIS... :) Это мутная работа для программистов, причём цель весьма сомнительной полезности...
И в сети ранее уже "писалось" :) по поводу перетаскивания - должно перестать действовать, если удалить заголовок окна. Но есть "но" - этот способ работает не на всех окнах и по сути не оч корректный... Пробуй...
Limonica,
Для установки драйверов для одной не новой программы, есть хедер... Кстати код похож, на тот, что и у kotkovets
Если ещё есть интерес , выложу. Хотя DPInst - лучший вариант.
Как переименовать файл ffg.exe в ffg_old.exe перед установкой
Пишу
Section # "Файлы программы"
...
IfFileExists "$INSTDIR\ffg.exe" 0 +2
Rename $INSTDIR\ffg.exe $INSTDIR\ffg_old.exe
...
но выходит сначала устанавливает а потом переименовывает
Подскажите куда нужно поместить этот код
alexfinik
06-11-2013, 13:55
YoraG, А смысл? Сформулируйте цель. Что мешает сделать файл сразу ffg_old.exe?
Могу предложить создать некоторый файл, в который будет класться информация с некоторым индексом i, который будет каждый раз меняться при запуске файла.
Ну т.е. есть файл index.ini. При первом запуске его нет и он создается, после чего туда записывается цифра 1. Содержимое строки падает в переменную $R0. Файл в конце переименовывается в Rename $INSTDIR\ffg.exe $INSTDIR\ffg_old($R0).exe
Limonica
06-11-2013, 14:40
MKN, выложи пожалуйста, интересно будет посмотреть...
по поводу перетаскивания - должно перестать действовать, если удалить заголовок окна. Но есть "но" - этот способ работает не на всех окнах и по сути не оч корректный... Пробуй... »
Добрый день. Эта мысль мне пришла в голову до вашего комментария, видимо в ней (в голове) еще есть место :) и уже реализована в коде ( спасибо K.A.V.) Мне нужна эта возможность не для всех окон, а только для инсталлятора, так что о корректности можно не думать... Осталось опробовать. Спасибо за отклик!
и уже реализована в коде ( спасибо K.A.V.) »
Выложи пожалуйста это решение для всеобщего обозрения.
Хедер установки драйверов :
Выложи пожалуйста это решение для всеобщего обозрения. »
Там нет ничего сверхъестественного...
Открываешь EXE с ресурсами диалогов (modern.exe), переходишь в диалог "105", удаляешь стили окна: WS_CAPTION и WS_SYSMENU
По вкусу, можно добавить другие стили окна, для придания некой формы, например добавить WS_THICKFRAME для толстой рамки или WS_BORDER с тонкой...Инфы в гугле много по стилям окон WS_*
K.A.V.,
Нее... Это как то в лоб и не по NSIS_совски... :) А ежели кодом, то это как ?
не по NSIS_совски... »
Некоторые коды, которые мы уже здесь разбирали тоже "не по NSIS_совски", но всё же ими пользуются
Скажи мне, в чем разница, что ты вырежишь стили окон из EXE, что ты вызовишь API функцию, которая это сделает при инициализации граф. интерфейса?
Разве что усложнишь себе задачу
Скажи мне, в чем разница, что ты вырежишь стили окон из EXE, что ты вызовишь API функцию, которая это сделает при инициализации граф. интерфейса? »
Управление кодом и редактиование ресурсов - совершенно разные методы, пусть и приводящие иногда к одному результату.
Редактирование ресурсов посредством кода - это другое дело. Метод прямого редактирования ресурсов - явно не программистский, а какой то любительский что ли... :) Конечно, большинство нас здесь, по сути, любители, но всё же... :)
Метод прямого редактирования ресурсов - явно не программистский, а какой то любительский что ли... »
Ну, на это я могу сказать только то, что лично в этой теме, как ты здесь заметил - великих программистов нет (разве что Вячеслав :) ), которые бы по каждому запросу кодеров NSIS рвались бы и писали для них мегакоды, да и зачем это? Если есть более быстрый способ, тем более приводящий к одному результату.
А если вам предлагают решение и вы уже выбираете, нравится вам или нет - дело ваше
Я, например, не программист и не знаю ничего, кроме NSIS. Да, могу писать плагины для NSIS мелкой функциональности с простенькими командами, поэтому лично для меня проще дать решение, которым бы я сам воспользовался. Да, способ любительский, но я и никогда здесь не говорил, что я программист и буду давать мегакоды с плагином system (которым не пользуюсь, мне проще dll написать). Я самоучка... :)
А если ты хочешь "кодом", то гугли по функциям API, которые устанавливают стиль окна, например SetWindowLongPtr, этой функцией в своём плагине я удалял кнопки "скрыть, развернуть" и оставлял лишь кнопку "Закрыть" в шапке окна.
Limonica
06-11-2013, 16:06
MKN, тоже на Home Edition не работает, но спасибо.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC