|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » [архив].: NSIS - все вопросы :. |
|
[архив].: NSIS - все вопросы :.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
|
|
Отправлено: 23:35, 17-06-2006 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать MKN, давай полный пример, а то ты меня уже достал своей непонятностью
|
------- Отправлено: 11:27, 27-03-2012 | #2441 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2360
|
Профиль | Отправить PM | Цитировать kotkovets,
Да, чувствую что достал... Но кроме тебя, никто на белом свете, не откликается так развёрнуто, с помощью по NSIS заморочкам... Задача такая - в файле Default.bar, в котором определяется расположение и содержание кнопок на тулбаре в ТotalCommаnder_e : [Buttonbar] Buttoncount=5 button1=%COMMANDER_PATH%\WCMICONS.DLL,15 cmd1=%COMMANDER_PATH%\Bar2.bar iconic1=0 button2= iconic2=0 button3=%COMMANDER_PATH%\Dop\TCPlugman\Plugman.exe cmd3=%COMMANDER_PATH%\Dop\TCPlugman\Plugman.exe path3=%COMMANDER_PATH%\Dop\TCPlugman\ iconic3=0 menu3=Plugman button4=%COMMANDER_PATH%\Dop\myuninst\myuninst.exe cmd4=%COMMANDER_PATH%\Dop\myuninst\myuninst.exe path4=%COMMANDER_PATH%\Dop\myuninst\ iconic4=0 menu4=myuninst button5=wcmicons.dll,79 cmd5=cm_SwitchHidSys iconic5=0 Например, вставляем кнопку первой на тулбар. Следовательно бывшая первая кнопка станет второй , вторая третьей и т.д. Такая же нумерация со смещением в + единицу, будет и укаждого параметра этих кнопок. Параметров для разных кнопок может быть от 2 до 5. |
Последний раз редактировалось MKN, 27-03-2012 в 11:51. Отправлено: 11:36, 27-03-2012 | #2442 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать MKN, насколько я понял:
var Buttoncount ClearErrors ReadIniStr $Buttoncount "$EXEDIR\Default.bar" "Buttonbar" "Buttoncount" ClearErrors IntOp $Buttoncount $Buttoncount + 1 WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "Buttoncount" "$Buttoncount" WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "button$Buttoncount" "%COMMANDER_PATH%\WCMICONS.DLL,15" WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "cmd$Buttoncount" "%COMMANDER_PATH%\Bar2.bar" WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "iconic$Buttoncount" "%COMMANDER_PATH%\Bar2.bar" WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "path$Buttoncount" "path" WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "menu$Buttoncount" "Plugman" |
------- Отправлено: 12:32, 27-03-2012 | #2443 |
Ветеран Сообщения: 2360
|
Профиль | Отправить PM | Цитировать kotkovets,
Это понятно, самое простое для вставки одной кнопки в конец тулбара. А надо вставить кнопку в середину или в начало. Т.е. надо управлять нумерацией всех остальных параметров других кнопок. |
Отправлено: 12:41, 27-03-2012 | #2444 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать MKN, я тебя уже поставил на правильный путь, если тебе это уже понятно, так почему ты задаешь
Цитата MKN:
|
|
------- Отправлено: 12:48, 27-03-2012 | #2445 |
Ветеран Сообщения: 2360
|
Профиль | Отправить PM | Цитировать kotkovets,
Приведи пожалуйста пример для вставки первой кнопки. |
Отправлено: 12:50, 27-03-2012 | #2446 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата MKN:
ClearErrors ReadIniStr $Buttoncount "$EXEDIR\Default.bar" "Buttonbar" "Buttoncount" ClearErrors IntOp $0 $Buttoncount - 3 IntOp $1 $Buttoncount - $0 ${If} $1 == 3 WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "button$1" "bla...bla..." WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "cmd$1" "bla...bla..." WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "iconic$1" "bla...bla..." WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "path$1" "bla...bla..." WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "menu$1" "bla...bla..." ${EndIf} следовательно, 11-3=9, находим разницу между 11 и 9 = 3, ну ставим условие только 3 кнопка математика 3 класса, ей богу! |
|
------- Отправлено: 13:14, 27-03-2012 | #2447 |
Ветеран Сообщения: 2360
|
Профиль | Отправить PM | Цитировать kotkovets,
А как же с перезаписью номеров следующих за 1ой кнопкой , параметров остальных кнопок ? Вот что не понятно... Перезаписать надо ведь только нумерацию, но не сами команды "bla...bla...". Или именно так и произойдёт ? Я ведь не заменяю кнопку, а добавляю... |
Отправлено: 13:23, 27-03-2012 | #2448 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать MKN, я уже сказал и показал, вот что мешает прочитать предыдущее значение в переменную, и записать вычитая или отнимая единичку.
|
------- Отправлено: 14:00, 27-03-2012 | #2449 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать MKN
Как-то так... Function SortInINI_Section var /Global NumToAdd var /Global Buttoncount StrCpy $NumToAdd "3" ; Какой порядковый номер добавляем ReadIniStr $Buttoncount "$EXEDIR\Default.bar" "Buttonbar" "Buttoncount" StrCmp $NumToAdd "1" 0 +3 ; Если добавляем 1-ый пункт, то это сделает функция FirstAdd call FirstAdd goto end StrCmp $NumToAdd "$Buttoncount" 0 +3 call EndAdd ; Если добавляем последний, то это сделает функция EndAdd goto end ; Здесь идёт код, который добавляет ваш пункт в середину CopyFiles /silent "$EXEDIR\Default.bar" "$EXEDIR\tmp.bar" ; Копируем файл, чтобы сохранить предыдущие пункты и не перетасовывать их IntOp $0 $NumToAdd - 1 StrCpy $1 $NumToAdd start: IntOp $0 $0 + 1 IntOp $1 $1 + 1 clearerrors ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "button$0" IfErrors endFunc ; Уберите строку StrCmp $3 "" +2 0 чтобы записывать пустые значения StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "button$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "cmd$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "cmd$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "iconic$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "iconic$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "path$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "path$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "menu$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "menu$1" "$3" goto start endFunc: ; Добавляемый пункт, за место ... вставляем добавляемые данные WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "button$NumToAdd" "..." WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "cmd$NumToAdd" "..." WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "iconic$NumToAdd" "..." WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "path$NumToAdd" "..." WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "menu$NumToAdd" "..." Delete "$EXEDIR\Default.bar" Rename "$EXEDIR\tmp.bar" "$EXEDIR\Default.bar" end: FunctionEnd Function FirstAdd ; Добавляемый пункт, за место ... вставляем добавляемые данные WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "button1" "..." WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "cmd1" "..." WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "iconic1" "..." WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "path1" "..." WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "menu1" "..." StrCpy $0 0 start: IntOp $0 $0 + 1 StrCmp $0 "1" 0 +3 StrCpy $1 2 goto +2 IntOp $1 $1 + 1 clearerrors ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "button$0" IfErrors endFunc ; Уберите строку StrCmp $3 "" +2 0 чтобы записывать пустые значения StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "button$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "cmd$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "cmd$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "iconic$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "iconic$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "path$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "path$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "menu$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\tmp.bar" "Buttonbar" "menu$1" "$3" goto start endFunc: Delete "$EXEDIR\Default.bar" Rename "$EXEDIR\tmp.bar" "$EXEDIR\Default.bar" FunctionEnd Function EndAdd StrCpy $0 $NumToAdd IntOp $1 $NumToAdd + 1 ; Уберите строку StrCmp $3 "" +2 0 чтобы записывать пустые значения ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "button$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "button$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "cmd$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "cmd$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "iconic$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "iconic$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "path$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "path$1" "$3" ReadINIStr $3 "$EXEDIR\Default.bar" "Buttonbar" "menu$0" StrCmp $3 "" +2 0 WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "menu$1" "$3" ; Добавляемый пункт, за место ... вставляем добавляемые данные WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "button$0" "..." WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "cmd$0" "..." WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "iconic$0" "..." WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "path$0" "..." WriteIniStr "$EXEDIR\Default.bar" "Buttonbar" "menu$0" "..." FunctionEnd |
------- Последний раз редактировалось K.A.V., 27-03-2012 в 14:58. Отправлено: 14:42, 27-03-2012 | #2450 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Мультимедиа - WinAmp .:[ обсуждение всех версий ]:. | ssaram | Программное обеспечение Windows | 406 | 12-02-2022 19:45 | |
WinstyleMonitor .:[все вопросы]:. | Mr dUSHA | Проект WinStyle | 331 | 12-02-2014 13:15 | |
Delphi - Delphi .: [все вопросы] :. | Serega | Программирование и базы данных | 94 | 04-05-2013 18:45 | |
Доступ - Никак не удаляются файлы (AVI и все остальные форматы) .:[все вопросы]:. | Microsoft Windows 2000/XP | 105 | 30-06-2010 11:58 | ||
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|