Опять по той же задаче пишу... Пытался разобраться, но из-за плохих знаний ничего не получается.
Смотрел пример, но как реализовать до конца не понял
Вот такое пытался писать..
Код:

Section
SetOutPath "$INSTDIR"
;нужен поиск по файлу 1.cfg на предмет наличия записи "aaaaaaaaaaaaaa.*=$INSTDIR\xxx\yyy". Если запись есть, ничего делать не нужно.
StrCpy $0 0
loop:
ReadINIStr $1 "$INSTDIR\1.cfg" "main" "aaaaaaaaaaaaaa"
StrCmp $1 "" Done
StrCmp $1 "xxx\yyy" 0 +3
StrCpy $0 1
Goto Done
IntOp $0 $0 + 1
Goto Loop
Done:
StrCmp $0 1 Next
; если записи нет, то нужно ее вставить "aaaaaaaaaaaaaa.*=$INSTDIR\xxx\yyy", где * - порядковый номер.
GetFullPathName $6 ..
${FileReadFromEnd} "$INSTDIR\1.cfg" "Find" ;читает строку за строкой? и записывает в $9?
WriteINIStr $INSTDIR\1.cfg main "aaaaaaaaaaaaaa.$3" "$6\xxx\yyy"
Next:
SectionEnd
Function Find
StrCpy $2 $9 14 ;Эту строку нужно обрезать до 14 первых символов (SimObjectPaths)
${if} $2 == "aaaaaaaaaaaaaa"
Intop $3 $3 + 1
${endif}
FunctionEnd