Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Аватара для K.A.V.

Ленивый кусок мяса


Contributor


Сообщения: 1986
Благодарности: 723

Профиль | Сайт | Отправить 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

-------
[Справочник по командам Windows] -- [Справочник по NSIS] -- [SFX Creator - для создания SFX архивов]


Последний раз редактировалось K.A.V., 27-03-2012 в 14:58.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:42, 27-03-2012 | #2450