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