PDA

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


Страниц : 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 147 148 149 150 151 152 153 154 155 156 157 158 159 [160] 161 162 163 164 165 166 167 168 169 170

Begin2Fly
26-09-2012, 21:58
Salmo, проверил, с двойными кавычками:
FileOpen $4 "$EXEDIR\SomeText.txt" w
FileWrite $4 '"OSZone.net"$\r$\n'
FileClose $4

Salmo
26-09-2012, 22:04
Begin2Fly, Спасибо, я еще и не успел проверить... На предыдущей странице я написал, что не заметил одинарные кавычки :)

kotkovets
26-09-2012, 23:15
FileWrite $4 '"OSZone.net"$\r$\n' »
Бывает, но не часто, что такое экранирование не принимается...
или не подходит...
А что бы всегда и везде принималась экранировка кавычек, можно делать так:
FileWrite $4 "$\"OSZone.net$\"$\r$\n"
выглядит сложнее, но надежно 100%

Reptiliy
27-09-2012, 03:34
Как сделать чтоб после распаковки запустилась фотка?

Section "File2"
SetOutPath "$DESKTOP"
SetOverwrite on
File "C:\Users\user\Desktop\Install Nsis\foto.png"
Exec $Desktop\foto.png
FileClose $0

Begin2Fly
27-09-2012, 03:39
Reptiliy, так, например:
ExecShell "open" "$DESKTOP\фото.png"

Exec $DESKTOPфото.png
FileClose $0
Это ни к чему.

Salmo
28-09-2012, 01:10
выглядит сложнее, но надежно 100% »
Спасибо, принял к сведению... Проверил - работают оба варианта.

dix75
28-09-2012, 18:30
Добрый вечер!
есть функция
HINTERNET InternetOpen(
_In_ LPCTSTR lpszAgent,
_In_ DWORD dwAccessType,
_In_ LPCTSTR lpszProxyName,
_In_ LPCTSTR lpszProxyBypass,
_In_ DWORD dwFlags
);

я её пытаюсь вызвать так.
System::Call "wininet::InternetOpen( t'w', i 0, t'', t'', i 0) *v.r1"

Общий код для запроса выглядит так

System::Call "wininet.dll::InternetOpen( t 'w2', i 0, t '', t '', i 0) *v.r1"
#System::Call "Kernel32::GetLastError() i.r2"
#MessageBox MB_OK "$2"
System::Call "wininet.dll::InternetOpenUrl( *v $1, t 'http://example.ru/', t '', i 0, i 0, i 0) *v.r2"
System::Free $1
System::Free $2

Код ошибки 80. Почему-то не хочет работать. Не могу найти ошибку

kotkovets
28-09-2012, 23:06
dix75, а что вы хотите сделать через WinAPI?
---
Здесь очень много функций - для рядового "чайника" они то и не нужны...
http://msdn.microsoft.com/en-us/library/windows/desktop/aa385098(v=vs.85).aspx
http://www.rsdn.ru/article/inet/inetapi.xml
---
Вообще эти функции возвращают идентификаторы на объект...
System::Call "wininet::InternetOpen(t,i,t,t,i)i.r1"
${If} $1 != 0
System::Call "wininet::InternetOpenUrl(ir1, t'http://example.ru/', t,i,i,i)i.r2"
System::Call "wininet::InternetCloseHandle(ir2)"
System::Call "wininet::InternetCloseHandle(ir1)"
${Else}
MessageBox MB_OK "Error: $1" IDOK
${EndIf}

Salmo
30-09-2012, 14:04
kotkovets, если не затруднит, подскажите, как можно организовать таймаут, задержку выполнения команд скрипта на N миллисекунд. Честно скажу, что справку пытался читать... :)

kotkovets
30-09-2012, 14:15
как можно организовать таймаут, задержку выполнения команд скрипта на N миллисекунд »
Sleep 100
задержка 100 миллисекунд

Salmo
30-09-2012, 14:23
Sleep 100 »
ХА!...Я думал, что на NSIS будет что-то громоздкое, по сравнению с VBS, а оказалось все просто...

dix75
01-10-2012, 13:06
Здесь очень много функций - для рядового "чайника" они то и не нужны... »
Почему для рядового?
на С++ это пишется на ура. Перетащить сей код на NSIS, вот где проблема.
Вообще эти функции возвращают идентификаторы на объект... »
Вот в этом то и была загвоздка.
На самом деле если посмотреть определенние
typedef LPVOID HINTERNET;
typedef void far *LPVOID;то видно, что это указатель на void

Да кстати более правильный вариант
System::Call "wininet::InternetOpen(t,i,t,t,i)i.r1"
${If} $1 != 0
System::Call "wininet::InternetOpenUrl(ir1, t'http://example.com', t,i,i,i)i.r2"
${If} $2 != 0
System::Call "wininet::InternetCloseHandle(ir2)"
${EndIf}
System::Call "wininet::InternetCloseHandle(ir1)"
${EndIf}
т.е Данный код позволяет сделать скрытый запрос, без ожидания ответа.
Возможно стоит добавить его в help.

В общем спасибо за ответ.

kotkovets
01-10-2012, 14:35
Вот в этом то и была загвоздка.
На самом деле если посмотреть определенние
Код:
typedef LPVOID HINTERNET;
typedef void far *LPVOID;
то видно, что это указатель на void »
у мелкомягких, как всегда не все однозначно :)
Почему для рядового?
на С++ это пишется на ура. Перетащить сей код на NSIS, вот где проблема. »
что на си пишется - я знаю, я про NSIS имел ввиду...

Creator000
02-10-2012, 18:37
Как можно обвести вокруг контрола рамку?

kotkovets
02-10-2012, 21:06
Как можно обвести вокруг контрола рамку? »
Итак, можно создать следующие элементы управления при помощи макросов ${NSD_Create*}:
---
GroupBox — контейнер группы

andrei60
03-10-2012, 18:12
Здравствуйте. Я очень недавно приступил к изучению NSIS. Пытаюсь начать делать portable проги. И тут же столкнулся со следующим. Нужно экспортировать из реестра что то типа HKEY_USERS\S-1-5-21-2998198832-1981029454-3828699296-1000\Software..., потом все portable приложение переносится на другую машину с другим SID-ом. И разумеется ничего не играет, импорт получается не туда, куда нужно. Как в этом случае лучше поступить? Отказаться от импорта-экспорта ключей в файл? Или, возможно, есть способ вмешиваться в процесс импорта-экспорта с какими то своими параметрами, "на лету" подменять имя ключа? Поискал в гугле и не нашел, здесь посмотрел, признаюсь не очень внимательно, очень большой объем. Надеюсь удалось внятно объяснить суть, помогите, пожалуйста, советом.

K.A.V.
03-10-2012, 19:30
andrei60, а зачем сохранять именно с SID пользователя, есть привязка у приложения к учетной записи? Попробуйте использовать не ветку HKEY_USERS, а HKEY_CURRENT_USER

andrei60
03-10-2012, 20:12
Точно! Вот я лошара. Я про HKEY_CURRENT_USER забыл совсем. Я когда снимки реестра делал, у меня эта ветка куда то испарилась отчего то, а я сам и не вспомнил про неё. Спасибо, K.A.V. ))

Creator000
03-10-2012, 20:39
Посмотрел тему http://forums.winamp.com/showthread.php?t=293962 и вроде так и не сказали как сделать заголовок на странице nsdialog
подскажите, научите, пожалуйста.

Creator000
03-10-2012, 22:52
у меня проблема. когда просто навожу мышкой на элемент рамка ломается
http://s018.radikal.ru/i505/1210/88/8fc1b44ec070.png




© OSzone.net 2001-2012