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

wolkow70
15-04-2013, 13:52
Кто-нибудь может подсказать как при выполнении функции ReplaceLinesInFile по замене текста в файле сделать так, чтобы временный файл создавался не в папке с инсталлятором, а где-нибудь в другом месте?
Вопрос связан с тем, что инсталлятор нужно записать на диск.

Function ReplaceLinesInFile

${LineSum} "$_FindInFile" $_LineNumbers ; Подсчитываем количество строк
strcpy $_CurLineNumber 0
startLineRead:
intop $_CurLineNumber $_CurLineNumber + 1
IntCmp $_CurLineNumber $_LineNumbers 0 0 endFunc ; Если номер текущей строки больше количества строк в файле - поиск завершен
${LineRead} "$_FindInFile" "$_CurLineNumber" $_CurLine ; Читаем строку по номеру текущей строки
${WordFind} '$_CurLine' "$_LineReplace" "E+1{" $R0 ; Ищем в строке нужный текст
StrCmp $R0 "1" startLineRead 0 ; Если в строке присутствует искомый текст, выполняем код ниже
${LineFind} "$_FindInFile" "" "" "Insert_Line" ; Вызываем функцию Insert_Line, которая произведёт замену
goto startLineRead
endFunc:
;
FunctionEnd
Function Insert_Line
StrCmp $R8 "$_CurLineNumber" 0 push
${StrRep} $_CurLine "$_CurLine" "$_LineReplace" "$_LineToInsert"
FileWrite $R4 "$_CurLine"
StrCpy $0 SkipWrite
push:
Push $0
FunctionEnd

sov44
15-04-2013, 18:53
Хочу понять, что куда распаковываются компоненты программы, написанной в NSIS. Подскажите, как вытянуть сценарий?

K.A.V.
15-04-2013, 22:12
Кто-нибудь может подсказать как при выполнении функции ReplaceLinesInFile по замене текста в файле сделать так, чтобы временный файл создавался не в папке с инсталлятором, а где-нибудь в другом месте? »
Какой временный файл? В данной функции есть только 1 ссылка на файл, это файл, в котором производится замена текста
Вы можете его изменить как вам угодно, вы же обрезали и выкинули кусочек кода, где присваивается переменной путь файла

StrCpy $_FindInFile '$EXEDIR\TEST.txt' ; Заменяем строки в этом файле
StrCpy $_LineReplace 'NSIS' ; Ищем и заменяем ЭТУ фразу
StrCpy $_LineToInsert 'Справочник по NSIS' ; На что будем заменять
Можете сначала скопировать файл в $TEMP, произвести там замену, а потом скопировать файл обратно. Значение переменной поменять легко. Или я не правильно понял суть вопроса? :)

Хочу понять, что куда распаковываются компоненты программы, написанной в NSIS. »
Клац (http://bit.ly/138DQvE)

Подскажите, как вытянуть сценарий? »
Никак.
И прочитайте шапку темы, там ответ кстати дан. И прочитайте справочник по NSIS на русском языке. Всё в шапке.

wolkow70
16-04-2013, 10:24
вы же обрезали и выкинули кусочек кода, где присваивается переменной путь файла »
Не обрезал, просто не вставил, есть такой кусочек:

StrCpy $_FindInFile '$INSTDIR\opera_install_log.xml' ; Заменяем строки в этом файле
StrCpy $_LineReplace 'C:\Program Files\Opera' ; Ищем и заменяем ЭТУ строку
StrCpy $_LineToInsert '$INSTDIR' ; На что будем заменять
Call ReplaceLinesInFile

В процессе замены неоднократно именно в папке с инсталлятором (не в $INSTDIR) создается временный файл. В деталях отображается переименование файла во временный по мере внесения изменений. Вот мне нужно,чтобы он мелькал в другом месте, так как на CD он не сможет создаваться.

yyv
17-04-2013, 02:18
здравствуйте,
подскажите, отличаются ли события при нажатии на крестик закрытия и Cancel button?
Я использую пользовательскую функцию CustomAbort и хотел бы при нажатии на кнопку отмены выводить одно сообщение, а при нажатии на крестик другое.
возможно ли это?







.

Salmo
27-04-2013, 15:09
kotkovets, Здравствуйте. Хочу повторить вопрос, который я задавал раньше... У Вас, как-то, было желание написать библиотеку, чтобы работать в NSIS с окнами приложений. Очень хочется, например, кликать на кнопки формы по координатам мышью... :) Появилось ли что-то подобное где-нибудь, у кого-нибудь?

Mafioza
08-05-2013, 00:41
Всем Привет , кто может помочь мне ? Мне нужен простой пример ассциации файлов , и еще при выборе компонентов мне необходимо чтобы флажок был установлен по умолчанию и его нельзя было бы убрать как в inno setup где флаг установлен как fixed , помогите плиз! Заранее спасибо .

ValerBOSS
08-05-2013, 05:11
Mafioza, про ассоциацию фалов есть раздел в справочнике из первого поста (Создание своего инсталлятора на NSIS. Ассоциации файлов. Макросы)
Чтобы флажок был заблокирован нужно вставить в скецию SectionIn RO, например:
Section "Sec Name" secName

SectionIn RO

SectionEnd

Ivn78
09-05-2013, 14:47
Друзья, подскажите:
Как в поле Show Detalis скрыть отображение распаковки файлов и путь программы? (распаковывается один файл в $Temp, затем удаляется). И напротив, как в это поле вывести выхлоп запуска консольной утилиты, и при этом скрыть консольное окно?

K.A.V.
11-05-2013, 11:54
В процессе замены неоднократно именно в папке с инсталлятором (не в $INSTDIR) создается временный файл. В деталях отображается переименование файла во временный по мере внесения изменений. Вот мне нужно,чтобы он мелькал в другом месте, так как на CD он не сможет создаваться. »
Насчет этого не знаю, не замечал
Ну как вариант, можно сделать отдельный EXE чисто с функцией замены строк, копировать его в $TEMP и запускать оттуда

Друзья, подскажите:
Как в поле Show Detalis скрыть отображение распаковки файлов и путь программы? (распаковывается один файл в $Temp, затем удаляется). И напротив, как в это поле вывести выхлоп запуска консольной утилиты, и при этом скрыть консольное окно? »
Дружище, Справочник по NSIS (http://forum.oszone.net/thread-168287.html)

Mafioza
11-05-2013, 23:08
Всем привет , я хочу создать инсталляторм браузера Opera , не могли бы вы мне помочь , я хочу чтобы после установки браузер был назначем по умолчанию и дом, страницей стала страница opera.com , заранее спасибо !

K.A.V.
12-05-2013, 00:08
я хочу чтобы после установки браузер был назначем по умолчанию »
Сложно? (http://bit.ly/121njbI)

и дом, страницей стала страница opera.com »
В файле opera6.ini (или operaprefs.ini, не знаю, копайтесь сами), в секции User Prefs присвойте парамметру Home URL адрес сайта
Либо упаковываете изменённый файл конфигурации, либо после распаковки файла, командой WriteINIStr устанавливаем значение параметра, описание команд NSIS есть в Справочнике по NSIS (http://forum.oszone.net/thread-168287.html)

Awral
14-05-2013, 20:49
Какое сжатие использовать, чтобы файлы из инсталлятора нельзя было вытащить при помощи 7-zip и прочих архиваторов?

Aquila
19-05-2013, 01:50
Здравствуйте. Моя трабла такова, хочу сделать установочник в котором хотел бы использовать несколько ключей установки, в частности для добавления в различные директории ярлыки программы, подскажите пожалуйста кто чем может.

wolkow70
19-05-2013, 05:44
Здравствуйте. Моя трабла такова, хочу сделать установочник в котором хотел бы использовать несколько ключей установки, в частности для добавления в различные директории ярлыки программы, подскажите пожалуйста кто чем может. »

например так:


!define PRODUCT_NAME "µTorrent"
!include "FileFunc.nsh"
!include "Sections.nsh"
Var AppExe

Section /o "Добавить ярлык на Рабочий стол" Desktop
SetShellVarContext all
CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\$AppExe"
SectionEnd

Section /o "Добавить ярлык в панель Быстрого запуска" QuickLaunch
CreateShortCut "$QUICKLAUNCH\${PRODUCT_NAME}.lnk" "$INSTDIR\$AppExe"
SectionEnd

Function .onInit

StrCpy $AppExe "uTorrent.exe"

ClearErrors
${GetOptions} $CMDLINE "/T" $0
IfErrors +2
SectionSetFlags ${Desktop} 1
Pop $0

ClearErrors
${GetOptions} $CMDLINE "/Q" $0
IfErrors +2
SectionSetFlags ${QuickLaunch} 1
Pop $0
FunctionEnd
В данном коде при наличии ключа /T будет подключена секция создания ярлыка на рабочем столе , а при наличии /Q в Панели быстрого запуска для файла uTorrent.exe.

MKN
23-05-2013, 17:52
NSIS 3.0a0

Скачать : http://nsis.sourceforge.net/Download
Обсуждение : http://forums.winamp.com/showthread.php?t=361808

kotkovets
23-05-2013, 21:26
NSIS 3.0a0 »
неужели разродились...
бегло пробежался, что нового... самые существенные:
---
1) Подержка юникода (я так понял примерно..), т.е не нужно отдельно скачивать юникодную версию - текстовый скрипт может быть в любом юникоде..
деинсталлятор всегда "юникодный" - т.е будет работать от windows 2000 (XP) и выше...
--
2) Поддержка Windows 8 и Windows Server 2012
--
3) Плагины отдельно хранятся в папках:
анси - NSIS\Plugins\x86-ansi
юникодные - NSIS\Plugins\x86-unicode
---
ссылку на скачивание добавил в шапку

MKN
24-05-2013, 17:41
Ещё пример для функции CreateWindowEx :

Создаём на странице окно и помещаем в это окно флеш анимацию ( в формате swf )


!include MUI2.nsh
Page custom fnc_Create
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_LANGUAGE "English"
OutFile "test_play_swf.exe"
Var dlg

Function fnc_Create
nsDialogs::Create 1018
Pop $dlg
System::Call `atl::AtlAxWinInit() i.r0`
System::Call `kernel32::GetModuleHandle(i 0) i.R3`
System::Call 'user32::CreateWindowEx(i 0, t "AtlAxWin", t "{D27CDB6E-AE6D-11cf-96B8-444553540000}", i ${WS_CHILD}|${WS_VISIBLE}, i 15, i 8, i 400, i 40, i $HWNDPARENT, i 0, i R3, i 0) i.R1'
System::Call `atl::AtlAxGetControl(i R1, *i .r1) i .r0`
StrCpy $3 "$EXEDIR\a.swf"
System::Call "$1->22(w r3) i .r2" ; 22 = set_Movie
nsDialogs::Show
FunctionEnd

Section
SectionEnd


AtlAxWinInit - Эта функция инициализирует код размещения элемента управления библиотеки ATL
путем регистрации классов окна "AtlAxWin80" и "AtlAxWinLic80" плюс несколько пользовательских сообщений окна.
(ATL - Active Template Library - Это библиотека классов и шаблонов, предназначенная для разработки собственных компонетов )

classid - при вставке flash это константа и всегда имеет значение clsid: {D27CDB6E-AE6D-11cf-96B8-444553540000},
это значение указывает на элемент ActiveX : \WINDOWS\system32\Macromed\Flash\Flash11e.ocx

AtlAxGetControl - Получает указатель интерфейса IUnknown элемента управления, который хозяйничает в окне.

Вот комплект-пример :

Николай М.
26-05-2013, 04:45
Всем доброго времени суток!
У меня к Вам следующий вопрос - мне нужно при установке программы дописать/вписать свое значение в ключ реестра. Вся проблема в том, что до меня уже может быть несколько записей, и мне нужно определить есть ли запись в ключе реестра. Если запись уже есть, то мне нужно дописать свой путь к программе. Также возникает проблема с анисталом.
Например:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Windows]
"AppInit_DLLs"="c:\myapp.dll, c:\123.dll, D:\321.exe, "

или

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Run]
"Test"="c:\123.exe, c:\myapp.dll, D:\321.exe "

Эти две проблемы можно решить?

PS: Заранее благодарю!

K.A.V.
26-05-2013, 08:37
"AppInit_DLLs"="c:\myapp.dll, c:\123.dll, D:\321.exe, " »
Вирусы пишем?

Эти две проблемы можно решить? »
Можно решить, если прочитать наш Справочник по NSIS (http://forum.oszone.net/thread-168287.html)




© OSzone.net 2001-2012