Показать полную графическую версию : [архив].: NSIS - все вопросы :.
silione, впринципе, во всех плагинах есть файлик под назавием Example.nsi, в котором есть примеры...
С использованием плагина Registry (http://nsis.sourceforge.net/Registry_plug-in)
В начале кода:
!include Registry.nsh
!include FileFunc.nsh
Сам поиск:
Section "Поиск"
${registry::Open} "HKEY_LOCAL_MACHINE" "/K=0 /V=1 /S=0 /B=1" $0
StrCmp $0 0 0 loop
MessageBox MB_OK "Error" IDOK close
loop:
${registry::Find} "$0" $1 $2 $3 $4
${GetFileName} "$3" $R0
; Из значения параметра отсекаем полный путь к файлу
StrCmp $R0 "mynsistest.exe" 0 loop
; ЗДЕСЬ прописываем код, при котором ключ НАШЛИ!
; Можем назначить сразу же переменную $INSTDIR вот так:
${GetParent} "$3" $R0
; Получаем путь из значения параметра, отсекая имя файла
StrCpy $INSTDIR "$R0"
; Назначаем переменной путь, который хранится в ключе реестра
MessageBox MB_OKCANCEL '$$1 "path" =[$1]$\n\
$$2 "value" =[$2]$\n\
$$3 "string" =[$3]$\n\
$$4 "type" =[$4]$\n\
$\n\
Искать дальше?' IDOK loop
close:
${registry::Close} "$0"
${registry::Unload}
SectionEnd
kotkovets
04-09-2011, 00:13
но с наскока так и не разобрался »
Оно и закономерно!!! Я впервые когда столкнулся с Registry - неделю разбирал плагин...
Ведь разобраться в чем нибудь, изучить или создавать - нужно пахать, причем жестко!
А ни кто этого не хочет делать - желания и времени...
Ведь разобраться в чем нибудь, изучить или создавать - нужно пахать, причем жестко! »
Вот что такого сложного в представленном мной коде? Скажите мне? Если учесть то, что ВСЕ команды уже переведены в файле справки, да и тот же плагин Registry переведён, просто прочитать и подставить ключи это уже такое сложное дело? Люди просто думать не умеют, хотят Ctrl+C, Ctrl+V и чтобы всё было готово...
Об этом не раз был разговор в данной теме, я его начинал (год назад), там я про всё написал...
Гм... что-то не работает, не пойму в чем дело. Компилируется без ошибок, но запускаемый инсталлятор как будто не содержит секции с поиском. Даже окошко с запросом продолжать ли поиск не выдает :(
что-то не работает »
:o
а вы код прочитайте повнимательней, я вам дал пример поиска исполняемого файла mynsistest.exe в ветке HKEY_LOCAL_MACHINE, а запрос будет только после того, как параметр со значением в строке mynsistest.exe будет найден :read:
Либо у вас прописаны ещё какие-то ключи к запуску игры...Вот поэтому может и не находить
kotkovets
04-09-2011, 11:17
Задача сводится к тому, чтобы при поиске по ВСЕМУ реестру »
Как мы уже выяснили, провести поиск этого файла по локальным дискам можно, но это процесс долгий »
По всему реестру затея провальная - в реестре более 700000 тысяч ключей и параметров. поиск затянется на n...
1 Определитесь с корневым ключом - HKLM, HKCU
2. Поиск, очевидно, только по строковым параметрам, и скорее всего начинать нужно:
c НKLM/Software
3 Если найден нужный ключ - выход из цикла. и тд
silione, вот стройте такую логику на поиск, а не по всему реестру беспорядочно. И по этой логике не трудно написать код.
Инструменты есть, справка есть - во тока опыта, правильно использовать у вас нет.
И не факт, что поиск по реестру будет быстрее, чем поиск по локалям.
Да уже и так не по всему реестру, а только по HKEY_LOCAL_MACHINE, да и то можно потом действителньо будет сократить.
Файл для поиска естественно прописывал другой, причем для проверки прописывал заведомо известный. Естественно старые ключи к запуску убрал, он собственно один был, installdir. Специально ждал несколько минут, думал может действительно поиск время занимает, но так ничего и не дождался.
Сейчас вот попробовал прописать explorer.exe. При поиске в редакторе реестра за пару секунд находит, а в nsis глухо.
wolkow70
05-09-2011, 16:48
kotkovets,
Может подскажите технологичный путь решения такой задачи?
Имеем секцию:
Section /o "Хранить настройки программы в INI файле" INI
${GetSecWriteSucces} INI
${If} $SUCCES_SECTION = 1
IfFileExists "$EXEDIR\PotPlayerMini.ini" 0 NoThere
IfSilent +2
MessageBox MB_OK "Файл настроек найден, он будет скопирован в директорию установки"
CopyFiles /silent "$EXEDIR\PotPlayerMini.ini" "$INSTDIR\PotPlayerMini.ini"
Goto Done
NoThere:
IfSilent +2
MessageBox MB_OK "Файла настроек нет, он будет создан в минимальной конфигурации"
SetOutPath "$INSTDIR"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "CheckAutoUpdate" "0"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "DVDAudioLang" "1049"
---бла
---бла
Done:
${EndIf}
SectionEnd
Файл это нужен в $INSTDIR только, если система XP.
На Vista и выше его нужно переместить в $APPDATA
Хотел сделать логической конструкцией через ${If} ${AtLeastWinVista}, но смущает, что в секции уже есть одна логическая конструкция, заканчивающаяся ${EndIf}
kotkovets
05-09-2011, 17:32
Хотел сделать логической конструкцией через ${If} ${AtLeastWinVista}, но смущает, что в секции уже есть одна логическая конструкция, заканчивающаяся ${EndIf} »
Вложенные конструкции и ветвления типа If - еще никто не отменял.
Извращение в логических конструкциях применять безусловные метки, так что убирайте метку Done
${GetSecWriteSucces} INI
${If} $SUCCES_SECTION = 1
${If} ${FileExists} "$EXEDIR\PotPlayerMini.ini"
MessageBox MB_OK "Файл настроек найден, он будет скопирован в директорию установки" /SD IDOK
CopyFiles /silent "$EXEDIR\PotPlayerMini.ini" "$INSTDIR\PotPlayerMini.ini"
${Else} ;если нету файла PotPlayerMini.ini
MessageBox MB_OK "Файла настроек нет, он будет создан в минимальной конфигурации" /SD IDOK
SetOutPath "$INSTDIR"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "CheckAutoUpdate" "0"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "DVDAudioLang" "1049"
${EndIf}
${If} ${AtLeastWinVista}
;bla bla
${Else}
;здесь код неудовлетворяещему условию AtLeastWinVista
${EndIf}
${EndIf}
wolkow70
05-09-2011, 17:45
${Else}
;здесь код неудовлетворяющее условию AtLeastWinVista »
А если не нужно ничего в этом случае делать?
(то есть просто не перемещать файл PotPlayerMini.ini)
kotkovets
05-09-2011, 17:55
А если не нужно ничего в этом случае делать? »
${Else} - под этим ветвлением будут команды выполняться до Vist'ы не включая Vist'у
если не нужно - да не писать просто!
конструкции дают без головняка великолепную универсальность
и любую сложную логику типа, что хочет моя левая нога.
И конечно нельзя забывать о последовательности действий.
И значительно быстрей работают, чем обычные безусловные переадресации.
wolkow70
05-09-2011, 18:21
kotkovets,
${If} ${AtLeastWinVista}
SetShellVarContext current
CreateDirectory "$APPDATA\PotPlayerMini\"
MoveFile /silent "$INSTDIR\PotPlayerMini.ini" "$APPDATA\PotPlayerMini\PotPlayerMini.ini"
${Else}
${EndIf}
${EndIf}
Так пойдет?
Где можно почитать про перемещение файлов (не нашел в справке)?
kotkovets
05-09-2011, 18:29
Где можно почитать про перемещение файлов (не нашел в справке)? »
Rename "$INSTDIR\PotPlayerMini.ini" "$APPDATA\PotPlayerMini\PotPlayerMini.ini"
В новом справочнике есть...
wolkow70
05-09-2011, 19:29
kotkovets,
ЗЫ: Протестировал на Win7. В таком виде секция работает:
Section /o "Хранить настройки программы в INI файле" INI
${GetSecWriteSucces} INI
${If} $SUCCES_SECTION = 1
${If} ${FileExists} "$EXEDIR\PotPlayerMini.ini"
IfSilent +2
MessageBox MB_OK "Файл настроек найден, он будет скопирован в директорию установки"
CopyFiles /silent "$EXEDIR\PotPlayerMini.ini" "$INSTDIR\PotPlayerMini.ini"
${Else}
IfSilent +2
MessageBox MB_OK "Файла настроек нет, он будет создан в минимальной конфигурации"
SetOutPath "$INSTDIR"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "CheckAutoUpdate" "0"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "DVDAudioLang" "1049"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "DVDCaptionLang" "1049"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "DVDMenuLang" "1049"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "IntDXVAMPEG1" "0"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "IntDXVAMPEG2" "0"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "IntDXVAUseMode" "2"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "IntDXVAWMV3" "0"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "LastConfigPage" "382"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "LastLogoName" "PotPlayer.png"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "LastPlayListName" "PotPlayerMini.dpl"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "LastSkinXmlName" "VideoSkin.xml"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "LastSkinName" ""
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "MouseLeftDClick" "1"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "MouseLeftSClick" "4"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "MouseWheelDown" "19"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "MouseWheelUp" "18"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "PlaybackMode" "1"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "RememberPosition" "1"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "UserIDList" ""
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "VisualMajor" "1"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "VisualUse" "1"
WriteINIStr "$INSTDIR\PotPlayerMini.ini" "Settings" "Win7WorkTool" "1"
${EndIf}
${If} ${AtLeastWinVista}
SetShellVarContext current
CreateDirectory "$APPDATA\PotPlayerMini\"
Rename "$INSTDIR\PotPlayerMini.ini" "$APPDATA\PotPlayerMini\PotPlayerMini.ini"
${Else}
${EndIf}
${EndIf}
SectionEnd
kotkovets
05-09-2011, 20:44
wolkow70, Может так логичнее будет...
Section /o "Хранить настройки программы в INI файле" INI
${GetSecWriteSucces} INI
${If} $SUCCES_SECTION = 1
${If} ${FileExists} "$EXEDIR\PotPlayerMini.ini"
${If} ${AtLeastWinVista}
ExpandEnvStrings $R9 "%USERNAME%" ; копируем в $R9 имя пользователя
MessageBox MB_OK 'Файл настроек найден, он будет скопирован в папку учётной записи пользователя: "$R9"' /SD IDOK
SetShellVarContext current
CreateDirectory "$APPDATA\PotPlayerMini"
CopyFiles /silent "$EXEDIR\PotPlayerMini.ini" "$APPDATA\PotPlayerMini\PotPlayerMini.ini"
${Else}
MessageBox MB_OK "Файл настроек найден, он будет скопирован в директорию установки" /SD IDOK
CopyFiles /silent "$EXEDIR\PotPlayerMini.ini" "$INSTDIR\PotPlayerMini.ini"
${EndIf}
${Else}
MessageBox MB_OK "Файла настроек нет, он будет создан в минимальной конфигурации" /SD IDOK
${If} ${AtLeastWinVista}
SetShellVarContext current
SetOutPath "$APPDATA\PotPlayerMini"
${Else}
SetOutPath "$INSTDIR"
${EndIf}
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "CheckAutoUpdate" "0"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "DVDAudioLang" "1049"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "DVDCaptionLang" "1049"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "DVDMenuLang" "1049"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "IntDXVAMPEG1" "0"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "IntDXVAMPEG2" "0"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "IntDXVAUseMode" "2"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "IntDXVAWMV3" "0"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "LastConfigPage" "382"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "LastLogoName" "PotPlayer.png"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "LastPlayListName" "PotPlayerMini.dpl"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "LastSkinXmlName" "VideoSkin.xml"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "LastSkinName" ""
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "MouseLeftDClick" "1"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "MouseLeftSClick" "4"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "MouseWheelDown" "19"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "MouseWheelUp" "18"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "PlaybackMode" "1"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "RememberPosition" "1"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "UserIDList" ""
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "VisualMajor" "1"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "VisualUse" "1"
WriteINIStr "$OUTDIR\PotPlayerMini.ini" "Settings" "Win7WorkTool" "1"
${EndIf}
${EndIf}
SectionEnd
wolkow70
06-09-2011, 10:31
wolkow70, Может так логичнее будет... »
Так оно конечно логичнее, просто я еще не умею работать с деревом логических конструкций...
kotkovets
06-09-2011, 10:53
wolkow70 вот вы потестируйте пример..
я еще не умею работать с деревом логических конструкций... »
тут дело опыта писать конструкции, сначала определяете глобальные условия,
затем внутри глобальных условий - пишем местные условия и т.д, пока не исчерпаются заданные условия.
wolkow70
06-09-2011, 13:21
kotkovets,
Продолжаю работу над усовершенствованием макросов регистрации ассоциаций.
В настоящее время они приняли такой вид:
!macro RegisterExtension extenstion
Push $1
Push $2
StrCpy $ClassName "PotPlayerMini.${extenstion}"
;
ReadRegStr $1 HKLM "SOFTWARE\Classes\.${extenstion}" ""
StrCmp "$1" "" NoClassNameBackup
StrCmp "$1" "$ClassName" NoClassNameBackup
WriteRegStr HKLM "SOFTWARE\Classes\.${extenstion}" "DaumLiveBackup.bak" "$1"
NoClassNameBackup:
;
WriteRegStr HKLM "SOFTWARE\Classes\.${extenstion}" "" "$ClassName"
;
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "Progid"
WriteRegBin HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\OpenWithProgids" "$ClassName" ""
;
ReadRegStr $2 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid"
StrCmp "$2" "" NoProgidBackup
StrCmp "$2" "$ClassName" NoProgidBackup
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "DaumLiveBackup.bak" "$2"
NoProgidBackup:
;
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice"
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid" "$ClassName"
;
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell" "" "Enqueue"
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\Enqueue" "" "До&бавить в список воспроизведения PotPlayer"
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\Enqueue\command" "" "$QueneCommand"
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\Enqueue\DropTarget" "Clsid" "{CB4EC897-07F7-4ECD-A15E-BBBE23A46EFF}"
;
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell" "" "open"
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\open" "" ""
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\open\command" "" "$OpenCommand"
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\open\DropTarget" "Clsid" "{A64C68BB-8F33-4F4B-BAA8-07D6319D30B4}"
;
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell" "" "play"
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\play" "" "&Воспроизвести в PotPlayer"
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\play\command" "" "$PlayCommand"
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\shell\play\DropTarget" "Clsid" "{A64C68BB-8F33-4F4B-BAA8-07D6319D30B4}"
;
${Switch} ${extenstion}
${Case} "AAC"
StrCpy $IconIndex 63
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName" "" "AAC - Advanced Audio Coding file"
${Break}
--бла---
--бла--
${EndSwitch}
WriteRegStr HKLM "SOFTWARE\Classes\$ClassName\DefaultIcon" "" "$IconFile,$IconIndex"
Pop $1
Pop $2
!macroend
;
!macro UnRegisterExtension extenstion
Push $1
Push $2
Push $3
Push $4
Push $5
Push $6
;
StrCpy $ClassName "PotPlayerMini.${extenstion}"
;
ReadRegStr $1 HKLM "SOFTWARE\Classes\.${extenstion}" ""
StrCmp "$1" "$ClassName" 0 +2
DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" ""
DeleteRegKey HKLM "SOFTWARE\Classes\$ClassName"
;
StrCmp "$1" "$ClassName" 0 +2
ReadRegStr $2 HKLM "SOFTWARE\Classes\.${extenstion}" "DaumLiveBackup.bak"
DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "DaumLiveBackup.bak"
WriteRegStr HKLM "SOFTWARE\Classes\.${extenstion}" "" "$2"
StrCmp "$2" "$ClassName" 0 +2
DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" ""
;
ReadRegStr $3 HKCU "Software\Classes\.${extenstion}" ""
StrCmp "$3" "$ClassName" 0 +2
DeleteRegValue HKCU "Software\Classes\.${extenstion}" ""
DeleteRegKey HKCU "Software\Classes\$ClassName"
;
StrCmp "$3" "$ClassName" 0 +2
ReadRegStr $4 HKCU "Software\Classes\.${extenstion}" "DaumLiveBackup.bak"
DeleteRegValue HKCU "Software\Classes\.${extenstion}" "DaumLiveBackup.bak"
WriteRegStr HKCU "Software\Classes\.${extenstion}" "" "$4"
StrCmp "$4" "$ClassName" 0 +2
DeleteRegValue HKCU "Software\Classes\.${extenstion}" ""
;
DeleteRegKey /ifempty HKCU "Software\Classes\.${extenstion}"
;
ReadRegStr $5 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "DaumLiveBackup.bak"
ReadRegStr $6 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid"
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "DaumLiveBackup.bak"
StrCmp "$6" "$ClassName" 0 +5
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice"
StrCmp "$5" "" +3
StrCmp "$5" "$ClassName" +2
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid" "$5"
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\OpenWithProgids" "$ClassName"
${DelRegValue} HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\OpenWithList" "PotPlayerMini.exe"
;
Pop $1
Pop $2
Pop $3
Pop $4
Pop $5
Pop $6
!macroend
Интересно, наделал ли я каких-либо очевидных глупостей?
kotkovets
06-09-2011, 15:00
wolkow70,
Навскидку, принципиально, зачем такое нерациональное использование большого количества переменных?
Первоначальные значения переменных макросе не используются, а значит достаточно двух переменных..
!macro UnRegisterExtension extenstion
Push $1
Push $2
;
StrCpy $ClassName "PotPlayerMini.${extenstion}"
;
ReadRegStr $1 HKLM "SOFTWARE\Classes\.${extenstion}" ""
StrCmp "$1" "$ClassName" 0 +2
DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" ""
DeleteRegKey HKLM "SOFTWARE\Classes\$ClassName"
;
StrCmp "$1" "$ClassName" 0 +2
ReadRegStr $2 HKLM "SOFTWARE\Classes\.${extenstion}" "DaumLiveBackup.bak"
DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" "DaumLiveBackup.bak"
WriteRegStr HKLM "SOFTWARE\Classes\.${extenstion}" "" "$2"
StrCmp "$2" "$ClassName" 0 +2
DeleteRegValue HKLM "SOFTWARE\Classes\.${extenstion}" ""
;
ReadRegStr $1 HKCU "Software\Classes\.${extenstion}" ""
StrCmp "$1" "$ClassName" 0 +2
DeleteRegValue HKCU "Software\Classes\.${extenstion}" ""
DeleteRegKey HKCU "Software\Classes\$ClassName"
;
StrCmp "$1" "$ClassName" 0 +2
ReadRegStr $2 HKCU "Software\Classes\.${extenstion}" "DaumLiveBackup.bak"
DeleteRegValue HKCU "Software\Classes\.${extenstion}" "DaumLiveBackup.bak"
WriteRegStr HKCU "Software\Classes\.${extenstion}" "" "$2"
StrCmp "$2" "$ClassName" 0 +2
DeleteRegValue HKCU "Software\Classes\.${extenstion}" ""
;
DeleteRegKey /ifempty HKCU "Software\Classes\.${extenstion}"
;
ReadRegStr $1 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "DaumLiveBackup.bak"
ReadRegStr $2 HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid"
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}" "DaumLiveBackup.bak"
StrCmp "$2" "$ClassName" 0 +5
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice"
StrCmp "$1" "" +3
StrCmp "$1" "$ClassName" +2
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\UserChoice" "Progid" "$1"
DeleteRegValue HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\OpenWithProgids" "$ClassName"
${DelRegValue} HKCU "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.${extenstion}\OpenWithList" "PotPlayerMini.exe"
;
Pop $1
Pop $2
!macroend
А не кажится вам команда StrCmp "$1" "$ClassName" 0 +2 слишком часто пишется?
Почему бы вам не объединить под этим условием нужные команды?
Кликабельный BrandingText
сделал по мануалу
все получилось,
но вот когда хочу вместо урла вставить адрес электронной почты, что бы нажав на нее открывался почтовик по умолчанию, то при нажатии на такой урл ничего не происходит
подскажите как добавить урл с email в диалог ,что бы при нажатии открывался почтовик как в браузере
PS сам дурак :)
используйте вместо Linker::link /NOUNLOAD $0 "contact@test.com"
Linker::link /NOUNLOAD $0 "mailto:contact@test.com"
PPS как BrandingText показать на первой странице? MUI_PAGE_WELCOME
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC