PDA

Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 [96] 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

MaGoth
16-12-2015, 15:30
Если коротко:
3.хх — полноценная поддержка Unicode.
2.48 и ниже — только ANSI. »
Шта ?! :o
2.48 и ниже Юникод также поддерживают по полной и лучше чем 3.0 (!)
2.48 сейчас уже в юнике выйти должна..
Различия в версиях 2х и 3х, только в ориентире 3-й на УГ ОСи Мелкософта, Вин7, 8, 10...

Flix
16-12-2015, 22:34
MaGoth, прежде чем нести ахинею, почитайте историю официальных релизов.

Версия 3.0 альфа (релиз 19 мая 2013), цитата
"MakeNSIS can now generate ANSI and Unicode installers. Source files can be UTF8SIG, UTF16BOM or traditional MBCS text files (which are converted to Unicode with ACP unless you specify a different codepage). The default plugins are now stored in sub-folders based on their CPU target and character set encoding."

MaGoth
16-12-2015, 23:37
Эм. т.е. я по твоему не в официальном работаю 2.46.5 Unicode ?! :)

MKN
17-12-2015, 08:35
Наверное вся разница в том, что версии 2.46 - две: ANSI и Unicode
А версия 3 - одна, совмещающая обе кодировки + якобы адаптирована под новые ОС + учтены баги (выявленные) v2.46...

Flix
17-12-2015, 12:44
я по твоему не в официальном работаю 2.46.5 Unicode ? »
Да! Это сторонняя разработка на базе исходного кода NSIS - форк. Разработчики официальной версии NSIS никакого отношения к вашей 2.46.5 Unicode не имеют, не развивают её и не разрабатывают. Загляните в репозитарий официальной разработки NSIS на sourceforge (http://sourceforge.net/projects/nsis/files/NSIS%202/) и найдите там вашу 2.46.5 Unicode.
А версия 3 - одна, совмещающая обе кодировки »
Верно. Версия 3 позволяет создать инсталлятор как в кодировке ANSI, так и в Unicode. :)

MaGoth
18-12-2015, 06:16
Да! Это сторонняя разработка на базе исходного кода NSIS - форк. »
Это тоже самое сказать что бывший разраб Пираний, НикоДЕ, выпуская свой софт теперь для одной игры, от этого становится неофициальным разрабом..

Ибо, идём на страничку разрабов "оригинальной" версии Нсис, Project Members (http://sourceforge.net/p/nsis/wiki/Home/) и видим на ней в числе разрабов этого товарища: Jim Park.

А теперь идем на страницу репозитария Гитхаба для Юникодного Нсис: jimpark/unsis (https://github.com/jimpark/unsis) и наблюдаем там же в авторах, все того-же самого Джима.


Очень странное утверждение, когда разраб один, а разработка сторонняя...

Flix
19-12-2015, 11:10
Очень странное утверждение, когда разраб один, а разработка сторонняя... »
Это не мое утверждение. Так написано на главной страничке NSIS. :)

MKN
19-12-2015, 11:17
Натолкнулся на статью : Почему вам (никогда) не следует использовать ShellExecute и WinExec
http://www.gunsmoker.ru/2015/01/never-use-ShellExecute.html

Вот те раз...

Говоря кратко: ShellExecute и WinExec - это устаревшее *овно мамонта начала 90-х годов. Они созданы в действительно доисторические времена. 640 Кб. Сегменты. Ближние и дальние указатели. Нет виртуальной памяти. Кооперативная многозадачность. Эти функции устарели в 1995 году. Ни один код, написанный после 1995 года, не должен использовать эти функции.

Правильное решение
Ответ: вместо функции ShellExecute следует использовать функцию ShellExecuteEx, а вместо функции WinExec следует использовать функцию CreateProcess.

K.A.V.
19-12-2015, 12:43
Говоря кратко: ShellExecute и WinExec - это устаревшее говно мамонта начала 90-х годов. Они созданы в действительно доисторические времена. 640 Кб. Сегменты. Ближние и дальние указатели. Нет виртуальной памяти. Кооперативная многозадачность. Эти функции устарели в 1995 году. Ни один код, написанный после 1995 года, не должен использовать эти функции.
Вообще без комментариев. Думаешь, есть прогеры, которые пользуются функцией WinExec? Сколько ей лет?
Такое ощущение, что автор застрял в каком-то прошлом типа 90-го года, тогда был программистом, а потом уснул, проснулся тем же программистом в 2015 году и написал сразу же статью, чтобы предостеречь современных прогеров от использования WinExec в своём коде

Как мы знаем, в современных 32-битных (и выше) Windows (т.е. Windows 95 и старше)
Может, мой мозг неправильно понимает суть написанного предложения, но я понял это как:
Windows 95 - современная

Натолкнулся на статью »
Сделай вид, что не видел её

MKN
19-12-2015, 13:12
есть прогеры, которые пользуются функцией WinExec? »
Гы... В прошлом году здесь упоминали. Для запуска батника с скрытым окном консоли.
System::Call 'kernel32.dll::WinExec(t "$EXEDIR\My.bat", i 0) i.r0'
И ведь работает... :)

K.A.V.
19-12-2015, 14:28
Гы... В прошлом году здесь упоминали »
Я не про NSIS со всякими обходными путями решения, я про прогеров, пишущих на нормальном языке типа с++
В винде куча функций типа WinExec, которые давно устарели и существуют только в целях совместимости при переходе из оси в ось

И ведь работает... »
execshell open "$desktop\1.bat" "" SW_HIDE
и ведь это тоже работает...но кому-то проще было заюзать винапи :)

ZaxBoys66
21-12-2015, 20:09
Please help my with this script

How can I synchronize percentage at the same time progress bar.

MKN
22-12-2015, 12:49
ZaxBoys66,

Use http://nsis.sourceforge.net/Inetc_plug-in

inetc::get /caption "2005 report" /canceltext "interrupt!" "http://download.ap.bittorrent.com/track/stable/endpoint/utorrent/os/windows" "$EXEDIR\uTorrent.exe" /end
Pop $1 # return value = exit code, "OK" means OK
MessageBox MB_OK "Download Status: $1"

Serg866
25-12-2015, 01:53
Друзья! Вот такой к вам вопрос:
Можно ли добавлять кликабельные ссылки в MessageBox ?
Например всплывает мессадж с ошибкой и там ссылка на страницу с подробным описанием ошибки и методами её исправления.

MKN
25-12-2015, 08:26
Можно ли добавлять кликабельные ссылки в MessageBox ? »
Нет.

Но, можно сделать собственный MessageBox - окно нужного размера, с кликабельными ссылками, с нужными элементами управления и пр. содержимым.

Можно использовать messagebox plugin, скомпоновав messagebox таким образом, чтобы в нём был и нужный текст
и кнопка(и) с надписью-ссылкой, кликнув которую, открываешь нужную страницу.

Или, самое простое - обычный MessageBox , с текстом-описанием ошибки и заключительный вопрос : "Открыть такую то страницу для детальной информации об ошибке ?" + кнопки "Да" "Нет"

Serg866
25-12-2015, 12:20
Можно использовать messagebox plugin, скомпоновав messagebox таким образом, чтобы в нём был и нужный текст
и кнопка(и) с надписью-ссылкой, кликнув которую, открываешь нужную страницу. »
А где найти данный плагин и будет ли он работать с третьей версией НСИС?

http://nsis.sourceforge.net/MessageBox_plug-in
как я понимаю автор сам удалил свою разработку...

Sancho5555
25-12-2015, 13:19
Serg866,
С третьей плагин работает.

MKN
25-12-2015, 16:46
Собственные MessageBox (с кликабельными ссылками и пр.) можно делать с помощью DlgHost Plugin_а
http://nsis.sourceforge.net/File:DlgHostPlugin.zip

Пример :


!include nsDialogs.nsh
OutFile "DlgHostDialog-test.exe"
Page custom MyPage
Page InstFiles
Var dlg
Var Link

!ifndef INC__DLGHOST_PLUGIN
!define INC__DLGHOST_PLUGIN 20110619
!define DLGHOST_DLGBOXMSG_INITDLG 0
!define DLGHOST_DLGBOXMSG_SHOWDLG 1
!endif

Function CloseDlgHostDialog
Pop $0
DlgHost::Close
FunctionEnd

Function ShowNSDChildDlg
GetFunctionAddress $0 MyMB
DlgHost::DlgBox "* $0 p 150u 100u Заголовок DlgBox"
FunctionEnd

Function MyPage
nsDialogs::Create 1018
Pop $dlg
${NSD_CreateLabel} 125u 50u 80u 10u "MyPage"
nsDialogs::Show
FunctionEnd

Function MyMB
${Select} $0
${Case} ${DLGHOST_DLGBOXMSG_INITDLG}
nsDialogs::Create 1018
Pop $1
DlgHost::SetClient $1

${NSD_CreateLabel} 5u 5u 80u 25u "MessageBox Txt1$\nMessageBox Txt2$\nMessageBox Txt3"
Pop $1

${NSD_CreateLink} 5u 30u 80u 10u "MyLink"
Pop $Link
${NSD_OnClick} $Link ClickMyLink

${NSD_CreateButton} 25% 60% 45% 15u "&Close"
Pop $1
${NSD_OnClick} $1 CloseDlgHostDialog

${Case} ${DLGHOST_DLGBOXMSG_SHOWDLG}
nsDialogs::Show
${EndSelect}
FunctionEnd

Function ClickMyLink
ExecShell "open" "http://forum.oszone.net"
FunctionEnd

Section
Call ShowNSDChildDlg
SectionEnd


ShowNSDChildDlg вызываете ессно откуда надо и при необходимых условиях.
Содержимое DlgHost.nsh включено в код.

MaGoth
26-12-2015, 02:18
Вопрос имеется.
Есть ли какая-то специфика в создании ярлыка для раб стола и меню пуска, и прикручивании к нему определенной иконки ?!
Ибо сделал у себя работает у других нет. :dont-know

MKN
26-12-2015, 09:54
Есть ли какая-то специфика в создании ярлыка для раб стола и меню пуска, и прикручивании к нему определенной иконки ?! »
Всё как всегда... :
CreateShortCut "$DESKTOP\Your Program.lnk" "$INSTDIR\Your Program.exe" "" "$INSTDIR(or FullPatch)\myicon.ico"

Ну, и конечно при необходимости :
SetShellVarContext all
или
SetShellVarContext current




© OSzone.net 2001-2012