From db37029362421f29b4174f1f458271169214bdde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=C5=99=C3=ADk?= Date: Fri, 2 May 2025 13:15:15 +0200 Subject: [PATCH] Added: Localized "Open with FFDec" context menu (switch association off/on to apply if already installed) Fixed: Cleaner associations, putting association back to installer. --- CHANGELOG.md | 2 + installer.nsi | 94 ++++++++++++- openwith.rc | 125 ++++++++++++++++++ resources/ffdec.exe | Bin 433166 -> 434702 bytes .../flash/console/ContextMenuTools.java | 83 +++++------- 5 files changed, 254 insertions(+), 50 deletions(-) create mode 100644 openwith.rc diff --git a/CHANGELOG.md b/CHANGELOG.md index 65bcf7fba..b4cda264a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to this project will be documented in this file. (Can be turned on in advanced settings) - Icons for Simple editor library folders - [#2448] Simple editor - Option to turn off half transparent parent layers +- Localized "Open with FFDec" context menu (switch association off/on to apply if already installed) ### Fixed - [#2424] DefineEditText handling of letterSpacing, font size on incorrect values @@ -47,6 +48,7 @@ All notable changes to this project will be documented in this file. - [#2419] AS3 - There should be empty line after class header - AS 1/2/3 - Fast switching of scripts causing incorrect caret position remembered - AS 1/2 - Remembering caret position for frames +- Cleaner file association ## [22.0.2] - 2025-01-17 ### Added diff --git a/installer.nsi b/installer.nsi index af650b18a..946bfeb35 100644 --- a/installer.nsi +++ b/installer.nsi @@ -25,7 +25,7 @@ Unicode true SetCompressor /SOLID lzma !include "StrFunc.nsh" !include x64.nsh - +!include Integration.nsh !define APP_SHORTVERNAME "JPEXS FFDec v. ${APP_VER}" @@ -362,10 +362,63 @@ var SMDir Exch $R2 !macroend +var clsname +!define VERB "ffdec" +!define VERBNAME "Open with FFDec" +!define MUIVERB_ID "1001" +var ext !define REG_CLASSES_HKEY HKLM +Function un.RemoveExtContextMenu + pop $ext + ; ----------- Remove "Open With" + DeleteRegKey ${REG_CLASSES_HKEY} "Software\Classes\Applications\${APP_EXENAME}" + ReadRegStr $clsname ${REG_CLASSES_HKEY} "Software\Classes\.$ext" "" + IfErrors step2 + DeleteRegKey ${REG_CLASSES_HKEY} "Software\Classes\$clsname\shell\${VERB}" + step2: + DeleteRegKey ${REG_CLASSES_HKEY} "Software\Classes\SystemFileAssociations\.$ext\Shell\${VERB}" +FunctionEnd + +Function AddToExtContextMenu + pop $ext + + ; ------------ Register "Open With" + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\Applications\${APP_EXENAME}\shell\open" "" ${VERB} + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\Applications\${APP_EXENAME}\shell\open\command" "" '"$INSTDIR\${APP_EXENAME}" "%1"' + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\.$ext\OpenWithList\${APP_EXENAME}" "" "" + + ; ------------ Associate file extension + !insertmacro IfKeyExists ${REG_CLASSES_HKEY} "Software\Classes" ".$ext" + Pop $R0 + ${If} $R0 == 0 + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\.$ext" "" "ShockwaveFlash.ShockwaveFlash" + ${EndIf} + + ReadRegStr $clsname ${REG_CLASSES_HKEY} "Software\Classes\.$ext" "" + !insertmacro IfKeyExists ${REG_CLASSES_HKEY} "Software\Classes" $clsname + Pop $R0 + ${If} $R0 == 0 + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\$clsname" "" "Flash Movie" + ${EndIf} + + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\$clsname\shell\${VERB}" "" "${VERBNAME}" + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\$clsname\shell\${VERB}\command" "" '"$INSTDIR\${APP_EXENAME}" "%1"' + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\$clsname\shell\${VERB}" "MUIVerb" '@$INSTDIR\${APP_EXENAME},-${MUIVERB_ID}' + + + ; ----------- Associate global verb - if anybody changes default app, it won't remove the verbs + !insertmacro IfKeyExists ${REG_CLASSES_HKEY} "Software\Classes" "SystemFileAssociations" + Pop $R0 + ${If} $R0 == 1 + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\SystemFileAssociations\.$ext\Shell\${VERB}" "" "${VERBNAME}" + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\SystemFileAssociations\.$ext\Shell\${VERB}\Command" "" '"$INSTDIR\${APP_EXENAME}" "%1"' + WriteRegStr ${REG_CLASSES_HKEY} "Software\Classes\SystemFileAssociations\.$ext\Shell\${VERB}" "MUIVerb" '@$INSTDIR\${APP_EXENAME},-${MUIVERB_ID}' + ${EndIf} +FunctionEnd + Section "FFDec" SecDummy SetShellVarContext all @@ -443,13 +496,33 @@ Function .onInit SectionSetFlags ${SecDummy} $0 FunctionEnd +Section "$(STRING_ADD_CONTEXT_MENU)" SecContextMenu + SetRegView 64 + Push "swf" + Call AddToExtContextMenu + Push "spl" + Call AddToExtContextMenu + Push "gfx" + Call AddToExtContextMenu + + SetRegView 32 + Push "swf" + Call AddToExtContextMenu + Push "spl" + Call AddToExtContextMenu + Push "gfx" + Call AddToExtContextMenu + + ${NotifyShell_AssocChanged} +SectionEnd + ;-------------------------------- ;Descriptions ;Assign language strings to sections !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecDummy} "$(STRING_SECTION_APP)" - ; !insertmacro MUI_DESCRIPTION_TEXT ${SecContextMenu} "$(STRING_SECTION_CONTEXT_MENU)" + !insertmacro MUI_DESCRIPTION_TEXT ${SecContextMenu} "$(STRING_SECTION_CONTEXT_MENU)" !insertmacro MUI_DESCRIPTION_TEXT ${SecShortcut} "$(STRING_SECTION_SHORTCUT)" !insertmacro MUI_FUNCTION_DESCRIPTION_END @@ -498,6 +571,23 @@ Section "Uninstall" RmDir /r "$SMPROGRAMS\$SMDir\*.*" RmDir "$SMPROGRAMS\$SMDir" + SetRegView 64 + Push "swf" + Call un.RemoveExtContextMenu + Push "spl" + Call un.RemoveExtContextMenu + Push "gfx" + Call un.RemoveExtContextMenu + + SetRegView 32 + Push "swf" + Call un.RemoveExtContextMenu + Push "spl" + Call un.RemoveExtContextMenu + Push "gfx" + Call un.RemoveExtContextMenu + + ${NotifyShell_AssocChanged} StrCmp $uninstlocal 1 0 +5 SetShellVarContext current diff --git a/openwith.rc b/openwith.rc new file mode 100644 index 000000000..7120783e0 --- /dev/null +++ b/openwith.rc @@ -0,0 +1,125 @@ +// English (en-US) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +STRINGTABLE +BEGIN + 1001 "Open in FFDec" +END + +// Catalan (ca-ES) +LANGUAGE 0x03, 0x01 // LANG_CATALAN +STRINGTABLE +BEGIN + 1001 "Obre amb FFDec" +END + +// Czech (cs-CZ) +LANGUAGE LANG_CZECH, SUBLANG_DEFAULT +STRINGTABLE +BEGIN + 1001 "Otevřít v FFDec" +END + +// Chinese (zh-CN) +LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED +STRINGTABLE +BEGIN + 1001 "在 FFDec 中打开" +END + +// Dutch (nl-NL) +LANGUAGE LANG_DUTCH, SUBLANG_DUTCH +STRINGTABLE +BEGIN + 1001 "Openen in FFDec" +END + +// French (fr-FR) +LANGUAGE LANG_FRENCH, SUBLANG_FRENCH +STRINGTABLE +BEGIN + 1001 "Ouvrir avec FFDec" +END + +// German (de-DE) +LANGUAGE LANG_GERMAN, SUBLANG_GERMAN +STRINGTABLE +BEGIN + 1001 "In FFDec öffnen" +END + +// Hungarian (hu-HU) +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT +STRINGTABLE +BEGIN + 1001 "Megnyitás FFDec-kel" +END + +// Italian (it-IT) +LANGUAGE LANG_ITALIAN, SUBLANG_ITALIAN +STRINGTABLE +BEGIN + 1001 "Apri con FFDec" +END + +// Japanese (ja-JP) +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT +STRINGTABLE +BEGIN + 1001 "FFDec で開く" +END + +// Polish (pl-PL) +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT +STRINGTABLE +BEGIN + 1001 "Otwórz w FFDec" +END + +// Portuguese - Portugal (pt-PT) +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE +STRINGTABLE +BEGIN + 1001 "Abrir com o FFDec" +END + +// Portuguese - Brazil (pt-BR) +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN +STRINGTABLE +BEGIN + 1001 "Abrir no FFDec" +END + +// Russian (ru-RU) +LANGUAGE LANG_RUSSIAN, SUBLANG_DEFAULT +STRINGTABLE +BEGIN + 1001 "Открыть в FFDec" +END + +// Spanish (es-ES) +LANGUAGE LANG_SPANISH, SUBLANG_SPANISH +STRINGTABLE +BEGIN + 1001 "Abrir con FFDec" +END + +// Swedish (sv-SE) +LANGUAGE LANG_SWEDISH, SUBLANG_DEFAULT +STRINGTABLE +BEGIN + 1001 "Öppna med FFDec" +END + +// Turkish (tr-TR) +LANGUAGE LANG_TURKISH, SUBLANG_DEFAULT +STRINGTABLE +BEGIN + 1001 "FFDec ile aç" +END + +// Ukrainian (uk-UA) +LANGUAGE 0x22, 0x01 // LANG_UKRAINIAN +STRINGTABLE +BEGIN + 1001 "Відкрити у FFDec" +END \ No newline at end of file diff --git a/resources/ffdec.exe b/resources/ffdec.exe index b7f76d5144ff1a69277325d223def8a80892513a..8c4030fce49b58090865c454ae890ffa63ed12ce 100644 GIT binary patch delta 2177 zcmZ{kU1*zC7{{NydGj{?T-t7FTAfX-V1yMnEfU0!Oh@U^xq+Zj1noXtift{m+cFUn zoh%W{Sco6F7*dB|5C+vwn^YR{YL32%Pq|D5MM zALl*EnexDy&j-%F?|CnO{?4{Qi-;{U`k|A*yvuv{Rwp0nwOb@)=OY6b)sZga;~x6VE7(`oL_WGkz{Ys}vQMh& zHa5oO_dbcLTiO_J{os??i48@;dmSm=yr~zDpw;bbjKr*ymZZ7|jdAIi<4RCUIj#iD zCkddgcVnbpb0n#L292?rWnJCg#>f>N$*G?~V+77S_0!(al~S4jn+?j&3+@6!i|zvA zAG-^ve(EmZz-R6PYG1nx$b9E6AeLTr7qD=}k&tnu<)0k6Z=+oJ7dmd}k)Pdq4sH4` zHm$Ft_Za)rBWsR~8HQKTW`Ht!#8|(IjvIOhx774cHt7%0rvDYUPRnh-I1)1gK7%$l zoNHSD25oi_`qh!Ajs0`zyy`HSgiEc)UFJk~QyJ|2w}U zu)Rz6^Y=I_My=DUO;`@ei#PfVbra(l`DclsyvCVRCo{9=$nCwd z5BpIfoWyfZew3F?9~qVxSf5mRIf32Or6T@!*1_J^&FJ_X-TCI*``_L5iKR;3Xz733 zsvq#2oRDjzc$w`d%tF)w*9%auK({na2&@9%m8Iy delta 1056 zcmZXTKWGzC9LIn6?=?+qy=qOu;Sg~NE~ZOys1gvgf`Es2+~FH``){>clw3(uXj#aJ7vXD(xOX%PNqLnPtW2d@iCh_zt!dS zg_1&!iSjy_2W|g+GuLRLLJ?Dz6jWWbtKb0Cz%ht0Gyx5eRC4&_c@R0N1g5}Ma2BkB zX|N7vKo2|uZi92+5S%BvNPGBk6b&KBsME*Re0UtESFJDMi2S=G3z8|8%ozMWQNUOE?mqL|39GF_aif z1QMZuLjDgora8Gzwcu)9H_*i(rT@SJSzUMAB_~Dx0h#vpq z2P5_Ttw9sM-bfGM8&u@y8R^vrgKpoNRz&5?jJ8i6){~p4`8h@MY{qx|K>K&tbpD2D z4AxlU1F1SD;1?lM54WTyE{tr*H}RgIbEM%WqZYp~kyg8m2K-`8^$6n+*GIJ{(*W}O zRC$^VP=A&TP{3^Q0Ie6v0HxQ-0E0Kl0QSdZfW1%n&+#3-5+w{jGrBQN3ts)gXf0On u{!_1fWwa98()wh5)OJU01&@kH!=v{{Z6o~Cw>