Цитата wolkow70:
по какой причине может не компилироваться »
|
вы в одной секции, вызываете макрос несколько раз, получается вставка кода макроса в секцию и в макросе есть безусловный переход по метке - это противоречит синтаксису NSIS:
совпадение безусловных переходов по имени не допускается! (Error: label "RestoreProgid:" already declared in section)
Здесь нужно применять условные переходы или логическую конструкцию.
Код:

!include logiclib.nsh
--
--
StrCpy $ClassName "FastStone.${extenstion}"
ReadRegStr $1 HKLM "SOFTWARE\Classes\.${extenstion}" ""
${If} $1 == "$ClassName"
DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" ""
DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "PerceivedType"
---
---
${Else}
ReadRegStr $2 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "FastStone.bak"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "Progid" $2
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "FastStone.bak"
${EndIf}
---
---