Показать полную графическую версию : [архив].: NSIS - все вопросы :.
Begin2Fly
26-09-2012, 21:58
Salmo, проверил, с двойными кавычками:
FileOpen $4 "$EXEDIR\SomeText.txt" w
FileWrite $4 '"OSZone.net"$\r$\n'
FileClose $4
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
Это ни к чему.
выглядит сложнее, но надежно 100% »
Спасибо, принял к сведению... Проверил - работают оба варианта.
Добрый вечер!
есть функция
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}
kotkovets, если не затруднит, подскажите, как можно организовать таймаут, задержку выполнения команд скрипта на N миллисекунд. Честно скажу, что справку пытался читать... :)
kotkovets
30-09-2012, 14:15
как можно организовать таймаут, задержку выполнения команд скрипта на N миллисекунд »
Sleep 100
задержка 100 миллисекунд
Sleep 100 »
ХА!...Я думал, что на NSIS будет что-то громоздкое, по сравнению с VBS, а оказалось все просто...
Здесь очень много функций - для рядового "чайника" они то и не нужны... »
Почему для рядового?
на С++ это пишется на ура. Перетащить сей код на 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-ом. И разумеется ничего не играет, импорт получается не туда, куда нужно. Как в этом случае лучше поступить? Отказаться от импорта-экспорта ключей в файл? Или, возможно, есть способ вмешиваться в процесс импорта-экспорта с какими то своими параметрами, "на лету" подменять имя ключа? Поискал в гугле и не нашел, здесь посмотрел, признаюсь не очень внимательно, очень большой объем. Надеюсь удалось внятно объяснить суть, помогите, пожалуйста, советом.
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
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC