|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Ветеран Сообщения: 860
|
Профиль | Отправить PM | Цитировать Есть такой макрос
!define ANSIToUTF8 "!insertmacro ANSIToUTF8" !macro ANSIToUTF8 SOURCE_STRING OUTPUT_STRING Push `${SOURCE_STRING}` System::Store SR2 System::Call "kernel32::MultiByteToWideChar(i0,i0,tR2,i-1,i0,i0)i.R1" IntOp $R1 $R1 * 2 System::Alloc $R1 Pop $R0 System::Call "kernel32::MultiByteToWideChar(i0,i0,tR2,i-1,iR0,iR1)" System::Call "kernel32::WideCharToMultiByte(i65001,i0,iR0,i-1,t.s,iR1,i0,i0)" System::Free $R0 System::Store L Pop `${OUTPUT_STRING}` !macroend Вопрос снят. Нашел Utf8Converter |
------- Последний раз редактировалось Dodakaedr, 21-02-2016 в 10:12. Отправлено: 09:47, 21-02-2016 | #1991 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 860
|
Профиль | Отправить PM | Цитировать Помогите, пожалуйста, разобраться с ini файлом. Не определяется секция и при записи нового значения создается дубль секции.
|
------- Отправлено: 10:43, 21-02-2016 | #1992 |
Пользователь Сообщения: 94
|
Профиль | Отправить PM | Цитировать Dodakaedr, NSIS не умеет работать с INI-файлами в кодировках отличной от ANSI. А ваш файл INI имеет кодировку UTF-8. По этой причине и получается ошибка. Воспользуйтесь плагином Unicode для преобразования кодировок. Примерный код сценария будет следующий:
Пример сценария
# Обработка INI-файлов кодировке UTF-8 # Используемые плагины: # - Unicode v1.1 (http://nsis.sourceforge.net/Unicode_plug-in) # - EnumINI (http://nsis.sourceforge.net/EnumINI_plug-in) outfile "TestINI.exe" Section main ; Выполняем конвертацию исходного файла INI из кодировки UTF-8 в ANSI ; во временный файл с именем _Config.ini unicode::FileUnicode2Ansi "$EXEDIR\Config.ini" "$EXEDIR\_Config.ini" AUTO ; Извлекаем из стека результат обращения к функции Pop $1 ; Проверяем наличие в INI-файле секции с именем "General" EnumINI::SectionExist "$EXEDIR\_Config.ini" "General" ; Извлекаем из стека результат обращения к функции Pop $1 ; Выполняем сравнение значения переменной $1 с "1" StrCmp $1 "1" 0 +6 ; Если результат сравнения положительный (секция существует), то... ; Показываем уведомление пользователю MessageBox MB_OK|MB_ICONINFORMATION "Указанная секция существует." ; Записываем во временный новый INI-файл значение для заданного ключа WriteINIStr "$EXEDIR\_Config.ini" "General" "RutaBaseExtraccion" "$EXEDIR\" ; Выполняем конвертацию временного файла INI из кодировки ANSI в UTF-8 ; и перезаписываем исходный файл INI unicode::FileAnsi2Unicode "$EXEDIR\_Config.ini" "$EXEDIR\Config.ini" UTF-8 ; Извлекаем из стека результат обращения к функции Pop $1 ; Переходим на команду удаления временного файла INI (_Config.ini) Goto +2 ; Если результат сравнения отрицательный (секция НЕ существует), то... ; Показываем уведомление пользователю MessageBox MB_OK|MB_ICONSTOP "Указанная секция не существует!!!" ; Удаляем временный файл INI, он больше не нужен. Delete "$EXEDIR\_Config.ini" SectionEnd Рекомендую ввести дополнительные проверки как, например, наличие самого файла INI и результатов конвертирования. К сожалению, оба используемых плагина сделаны в редакции ANSI, поэтому пользоатели NSIS Unicode оказываются в пролёте. |
Отправлено: 15:21, 21-02-2016 | #1993 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Flix:
|
|
------- Отправлено: 16:00, 21-02-2016 | #1994 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать А возможно как то отключить автоматический detailprint таких команд как rename и delete?
|
Отправлено: 15:08, 23-02-2016 | #1995 |
Пользователь Сообщения: 83
|
Профиль | Отправить PM | Цитировать Привет.
Нужно реализовать такую функцию: проверка подключения к интернету и если подключение активно, то автоматически открывается браузер и переходит на заданный url Пожалуйста помогите реализовать эту задачу. С уважением, Serg866 |
Отправлено: 12:23, 09-03-2016 | #1996 |
Ветеран Сообщения: 2358
|
Профиль | Отправить PM | Цитировать Цитата Serg866:
Если интернет есть, то в $1 - online если нет, то в в $1 - offline Можно также использовать (но совершенно ни к чему) : ; http://msdn.microsoft.com/ru-ru/libr...(v=vs.85).aspx System::Call 'wininet.dll::InternetGetConnectedState(*i .r0, i 0) i.r1' IntFmt $R1 "0x%X" "$0" ; (connection in hex) MessageBox MB_OK "$1 $R1 " ; есть сеть - $1 == 1 ; нет - $1 == 0 ; $R1 - описание соединения: Modem=0x01, LAN=0x02, Proxy=0x04, RAS=0x10, Offline=0x20 Configured=0x40 и др ; также в $R1 может быть результат сложения разных сочетаний... Например : ; Значение 0x12 представляет собой сочетание INTERNET_CONNECTION_LAN (0x02) и INTERNET_CONNECTION_RAS_INSTALLED (0x10) |
|
Последний раз редактировалось MKN, 09-03-2016 в 13:30. Отправлено: 13:02, 09-03-2016 | #1997 |
Пользователь Сообщения: 83
|
Профиль | Отправить PM | Цитировать MKN. Красава! То что надо.
С проверкой я понял, а команду для открытия url как прописывать? если что у меня в скрипте один url уже есть (линк на созданной странице) |
Отправлено: 16:50, 09-03-2016 | #1998 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата Serg866:
|
|
------- Отправлено: 09:09, 10-03-2016 | #1999 |
Пользователь Сообщения: 83
|
Профиль | Отправить PM | Цитировать Коллеги, попутно ещё такая задачка.
Надо прописать удаление с раб.стола папки, в имени которой есть пробел и плюс название на кириллице. Условно это вот так выглядит RMDir /r $DESKTOP\Моя папка И конечо не работает, ругается при компиляции из-за пробела. |
Отправлено: 12:06, 10-03-2016 | #2000 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 | dimadr | Наборы обновлений для Windows XP/2003/Windows 7 | 267 | 14-02-2020 08:25 | |
[архив].: NSIS - все вопросы :. | kotkovets | Автоматическая установка приложений | 3387 | 09-12-2012 11:56 | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 | jameszero | Наборы обновлений для Windows XP/2003/Windows 7 | 1491 | 22-07-2011 22:42 | |
Выбор|модернизация процессора .:[все вопросы]:. Часть I | Myxa | Выбор отдельных компонентов компьютера и конфигурации в целом | 1845 | 01-01-2011 19:18 | |
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|