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

Valdise
23-03-2012, 18:16
Почтенные ГУРУ подскажите пожалуйста как вместо ярлыка *.lnk [параметры "http:/ тру-ля-ля"] вставить значение *.url - Ярлыка интернета с прописанным адресом страницы. Именно значение, а не .lnk ссылку на таковой ярлык
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Сайт ${PRODUCT_NAME}.lnk" "${PRODUCT_WEB_SITE}" "" "" "" "" "" "${PRODUCT_NAME} в Интерненте"
CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Сайт ${PRODUCT_NAME}.url" "" "" "" "" "" "" ""
Как вставить InternetShortcut ?
Заранее Спасибо

kotkovets
23-03-2012, 23:40
Valdise, а чем плох обычный ярлык, который ссылается на адрес в сети:
CreateShortCut "$EXEDIR\aimp.lnk" "http://wwww.aimp.ru" "" "shell32.dll" 220
а url делается так:
WriteINIStr "$EXEDIR\aimp.url" "InternetShortcut" "URL" "http://wwww.aimp.ru"
но мне лично первый вариант куда лучше...

K.A.V.
24-03-2012, 13:02
kotkovets, по хорошему, нужно делать и первый и второй вариант
Почему второй вариант нужен?
Например для Portable программ, будет очень хорошо зайдя в папку с программой, "ткнуть" на url файл и перейти на домашнюю страничку

Valdise
25-03-2012, 10:20
а чем плох обычный ярлык, который ссылается на адрес в сети: »Почему второй вариант нужен? »
Обычно так и делаю - *.lnk.
Иногда делаю перепаки полных русских версий, чтобы в два клика, а не париться программа, русификатор, регистрация\кряки. В одной из программ, в авторской сборке, в ярлыках именно URL а не LNK вот и заинтересовало, захотел сделать так-же, как в Авторском оригинале, правда он собран ISetup, а мне он совершенно не нравится.
WriteINIStr "$EXEDIR\aimp.url" "InternetShortcut" "URL" "http://wwww.aimp.ru" »
Растолкуйте чайнику, плиз - всё это строка, так-же как "CreateShortCut", или это всё-же ini-команда, которая создаст в папке программы "$EXEDIR\aimp.url"? Дело в том, что в оригинале url файл только в папке ярлыков, т.е его нет в $INSTDIR, а тут"$EXEDIR\aimp.url"???
ВОПРОС: К слову, а для NSIS путь $EXEDIR и $INSTDIR равны и имеют одинаковое значение?

kotkovets
25-03-2012, 11:02
Valdise, url это обычный текстовый конфигурационный файл - ярлык Интернета
Дело в том, что в оригинале url файл именно в папке ярлыков, а не в програмфайл »
так и укажите в скрипте, где создавать url.

Valdise
25-03-2012, 11:55
так и укажите в скрипте, где создавать url. »
Растолкуйте, пожалуйста что и в каком порядке написать в скрипте, для создания такого ярлыка:
WriteINIStr "$SMPROGRAMS\${PRODUCT_NAME}\Сайт ${PRODUCT_NAME}.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}"
Верно? Только почему-то NSIS ругается, говорит ошибка...
Сообразил, всё получилось, ОГРОМНОЕ спасибо :Beer:
P.S Не сразу сообразил и заметил чего NSIS требовал - Error in script WriteINIStr expects 4 parameters, got 8, т.к оставил 8 кавычек, как в обычном *.lnk

ВОПРОС: К слову, а для NSIS путь $EXEDIR и $INSTDIR равны и имеют одинаковое значение?

kotkovets
25-03-2012, 13:49
Valdise, все вопросы в шапке темы в справочнике, хотите гадать на кофейной гуще - дело ваше.

MKN
25-03-2012, 16:34
Подскажите пожалуйста , как решить такую задачу :

Нужно, чтобы последовательность из 5 команд "${WordReplace} и т.д.", выполнилась N раз подряд, причём значение переменной $R1 в каждой команде , с каждым следующим "проходом", должно увеличиваться на 1.
N - берётся из переменной $1

Пытался организовать цикл ${For} с счётчиком, но команды ${WordReplace} внутри него не срабатывают...

Если нельзя организовать 5 командную последовательность, то как организовать вышеназванные действия для одной команды ${WordReplace}?

kotkovets
25-03-2012, 17:03
Нужно, чтобы последовательность из 5 команд "${WordReplace} и т.д.", выполнилась N раз подряд, причём значение переменной $R1 в каждой команде , с каждым следующим "проходом", должно увеличиваться на 1. »
ну так для этого есть цикл For, тут важно, сколько этих циклов нужно делать, или другой признак выхода из цикла.
${for} $1 1 10
MessageBox MB_OK "$1" IDOK
${next}
здесь цикл начнется, отсчет $1=1, до $1=10 - условие выхода из цикла
можно организовать цикл и так:
${Do}
IntOp $1 $1 + 1
MessageBox MB_OK "$1" IDOK
${LoopUntil} $1 == 10
здесь условие выхода из цикла, если $1=10,
любой цикл можно прервать макросом - ${Break}

MKN
25-03-2012, 17:15
здесь цикл начнется, отсчет $1=1, до $1=10 - условие выхода из цикла »
Вроде как, так и делал...
Может я не правильно использую код для замены...
Делаю так :
Section
${LineFind} "a.txt" "" "1:-1" "Replace"
IfErrors 0 +2
MessageBox MB_ICONSTOP|MB_OK "Файл не найден!"
SectionEnd

Function Replace
${For} $R1 $R0 3
IntOp $R2 $R0 + 1
${WordReplace} '$R9' '=$R0' '=$R2' "+" '$R9'
Push $0
${Next}
FunctionEnd
Всё время - "Файл не найден"
И с ${ForEach} , что как мне кажется лучше, ничего не выходит...

kotkovets
25-03-2012, 17:52
MKN, а зачем здесь цикл в функции чтения файла :o , здесь и так цикл работает в функции Replace
до конца файла, в голову не приходила мысль откуда берутся строки в $R9 до конца файла?
это получается, один цикл функции на три цикла вложенного цикла фор, с каждым циклом, то переменная $R9 разная,
причем не известно условие выхода из внутреннего цикла:
IntOp $R2 $R0 + 1 - что это? :o
${For} $R1 $R0 3
$R1 - c каждым циклом и так увеличивается на единицу, причем отсчет начнется от величины значения $R0,
выход из внутреннего цикла, если $R1 = 3, а если $R0 > 3 (начало отсчета), что будет проверял?
ну месаджексы проставь, проследи за значениями переменных $R1 и $R0

MKN
25-03-2012, 18:08
kotkovets,
Нужно в таком файле :

count=5
a1
b1
c1
d1
e1
a2
b2
c2
d2
e2
a3
b3
c3
d3
e3
a4
b4
c4
d4
e4
a5
b5
c5
d5
e5

где количество пронумерованных групп (a...e), записанное в значение count (т.е. равное кол-ву групп) и состав групп - всегда разные.
В этот файл нужно, записывать ещё одну группу, номер которой будет также произвольным (от 1 до count+1)
При этом вся последующая нумерация групп, после "вставки" новой группы, смещается на 1.
Я и хочу заменять нумерацию значений "от" и "до", (по сути смещение значений на 1) - в зависимости от значения count и местоположения новой группы.

Valdise
25-03-2012, 21:10
все вопросы в шапке темы в справочнике, хотите гадать на кофейной гуще - дело ваше. »
На новости раздела я подписан, за русский Help поблагодарил сразу после его выхода
P.S I думаю что Ваш ответ "ДА" - "НЕТ", или "+" "-" был-бы более приемлемым
P.S II ещё раз ОГРОМНОЕ спасибо за помощь!

kotkovets
25-03-2012, 21:36
P.S I думаю что Ваш ответ "ДА" - "НЕТ", или "+" "-" был-бы более приемлемым »
достаточно прочитать в справке про (предопределенные)переменные - минут 5 и все вопросы будут исчерпаны...

Valdise
25-03-2012, 22:15
Если чем-то оскорбил - пардону просим (+ см ЛС)
Можно новый вопрос?
Почему на некоторых системах WinX32 бинарные значения при установке упорно не желают прописываться?
Из 113 установок 28 почему-то "взбрыкнули" (за статистику спасибо пользователям ru-board-a)
Конкретно - крякунутый PhotoInstrument 5.5 на большинстве систем молча кушает прописываемые значения в Реестр, а на некоторых упирается рогом и при первом запуске программа успевает нацарапать своё "Купить"

Olef2387
26-03-2012, 14:06
kotkovets. Привет.
Возник вопрос изменения ресурсов... На странице установки хочу опустить прогресс бар чуть пониже и небольшую картинку на этой же странице разместить (хотелось бы это сделать без плагинов). а то пробовал как-то плагин, картинка работала только на хп, а на висте и семёрке не отображалась.

kotkovets
26-03-2012, 15:07
Возник вопрос изменения ресурсов... На странице установки хочу опустить прогресс бар чуть пониже »
NSIS\Contrib\UIs\modern.exe --> 106 диалог, элемент 1004 - прогресс бар.
небольшую картинку на этой же странице разместить (хотелось бы это сделать без плагинов) »
можно, но много букафф через апи функцию
CreateWindowEx (http://www.firststeps.ru/mfc/winapi/win/r.php?58)
если апи не знаете, то код приводить бессмысленно

MKN
27-03-2012, 10:56
kotkovets,
То, что отсчёт будет происходить от и до, понятно, (но видно только при "служебных сообшениях") :
${for} $1 1 10
MessageBox MB_OK "$1" IDOK
${next}
А каким образом записать последовательность значений отсчёта
а - в файл ?
b - в переменные (чего очень хотелось бы !), где каждое значение (от 1 до 10 в данном примере), "прирощенное" в каждом отсчёте цикла, записывается в свою переменную ? Т.е. небходимы 10 переменных. Ну, очень...

kotkovets
27-03-2012, 11:15
MKN, StrCpy не пробывал, работу со строкой, брать 1 символ строки или последний один символ, кидать в свою переменную,
если строка имеет вид: a1, то StrCpy $count $R9 "" 1
$count = 1$\r$\n или $count = 1, если StrCpy $count1 $R9 1 то, $count1 = a
дальше логика И-ИЛИ, метод сравнения, ведь в одном цикле прохода $R9 неизменна.

MKN
27-03-2012, 11:24
Всё равно не ясно, как перенумеровывать значения, находящиеся в середине текста строк (ещё и в разных местах), в не предсказуемом кол-ве строк...




© OSzone.net 2001-2012