diff --git a/win-linux/package/windows/associate_page.iss b/win-linux/package/windows/associate_page.iss index 208793ec1..f733e5f22 100644 --- a/win-linux/package/windows/associate_page.iss +++ b/win-linux/package/windows/associate_page.iss @@ -1807,61 +1807,46 @@ end; procedure AddContextMenuNewItems; var - langs: TArrayOfValues; - args, regpath: String; - progpath, oldValue: String; - argsArray: TArrayOfString; + dir, regpath, progpath, oldValue: String; + langs, args, values: TArrayOfString; version: TWindowsVersion; + i: Integer; begin - AddKeyValue(langs, 'cs', 'cs-CZ:new.docx:new.pptx:new.xlsx'); - AddKeyValue(langs, 'de', 'de-DE:new.docx:new.pptx:new.xlsx'); - AddKeyValue(langs, 'es', 'es-ES:new.docx:new.pptx:new.xlsx'); - AddKeyValue(langs, 'fr', 'fr-FR:new.docx:new.pptx:new.xlsx'); - AddKeyValue(langs, 'it_IT', 'it-IT:new.docx:new.pptx:new.xlsx'); - AddKeyValue(langs, 'pt_BR', 'pt-BR:new.docx:new.pptx:new.xlsx'); - AddKeyValue(langs, 'ru', 'ru-RU:new.docx:new.pptx:new.xlsx'); + langs := ['az-Latn-AZ', 'bg-BG', 'cs-CZ', 'de-DE', 'el-GR', 'en-GB', 'en-US', 'es-ES', + 'eu-ES', 'fr-FR', 'gl-ES', 'hy-AM', 'it-IT', 'ja-JP', 'ko-KR', 'lv-LV', + 'ms-MY', 'nl-NL', 'pl-PL', 'pt-BR', 'pt-PT', 'ru-RU', 'sk-SK', 'sv-SE', + 'tr-TR', 'uk-UA', 'vi-VN', 'zh-CN', 'zh-TW']; - if not TryGetValue(langs, ExpandConstant('{language}'), args) then - args := '.:mm_new.docx:mm_new.pptx:mm_new.xlsx'; - - Explode(argsArray, args, ':'); - - if argsArray[0] = '.' then - progpath := ExpandConstant('{app}\converter\empty') - else progpath := ExpandConstant('{app}\converter\empty\' + argsArray[0]); - - regpath := ExpandConstant('Software\Classes\.docx\{#ASCC_REG_PREFIX}.Document.12\ShellNew'); - if not RegKeyExists(HKEY_LOCAL_MACHINE, regpath) then - begin - RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'IconPath', ExpandConstant('{app}\{#iconsExe},7')); - RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'FileName', progpath + '\' + argsArray[1]); - end; - - regpath := ExpandConstant('Software\Classes\.pptx\{#ASCC_REG_PREFIX}.Show.12\ShellNew'); - if not RegKeyExists(HKEY_LOCAL_MACHINE, regpath) then - begin - RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'IconPath', ExpandConstant('{app}\{#iconsExe},9')); - RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'FileName', progpath + '\' + argsArray[2]); - end; - - regpath := ExpandConstant('Software\Classes\.xlsx\{#ASCC_REG_PREFIX}.Sheet.12\ShellNew'); - if not RegKeyExists(HKEY_LOCAL_MACHINE, regpath) then - begin - RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'IconPath', ExpandConstant('{app}\{#iconsExe},10')); - RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'FileName', progpath + '\' + argsArray[3]); + dir := 'en-US'; + for i := 0 to GetArrayLength(langs) - 1 do begin + if langs[i] = ExpandConstant('{language}') then begin + dir := langs[i]; + break; + end; end; + + args := ['new.docx:.docx:.Document.12:7', + 'new.pptx:.pptx:.Show.12:9', + 'new.xlsx:.xlsx:.Sheet.12:10' +#ifdef _ONLYOFFICE + ,'new.docxf:.docxf:.Docxf:13' +#endif + ]; GetWindowsVersionEx(version); - if version.Major = 10 then begin - RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docx', '', oldValue); - RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docx', '{#ASCC_REG_PREFIX}', oldValue); - RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.xlsx', '', oldValue); - RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.xlsx', '{#ASCC_REG_PREFIX}', oldValue); - RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '', oldValue); - RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '{#ASCC_REG_PREFIX}', oldValue); - RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docx', '', '{#ASCC_REG_PREFIX}.Document.12') - RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.xlsx', '', '{#ASCC_REG_PREFIX}.Sheet.12') - RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '', '{#ASCC_REG_PREFIX}.Show.12') + progpath := ExpandConstant('{app}\converter\empty\' + dir); + for i := 0 to GetArrayLength(args) - 1 do begin + Explode(values, args[i],':'); + regpath := ExpandConstant('Software\Classes\' + values[1] + '\{#ASCC_REG_PREFIX}' + values[2] + '\ShellNew'); + if not RegKeyExists(HKEY_LOCAL_MACHINE, regpath) then begin + RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'IconPath', ExpandConstant('{app}\{#iconsExe},' + values[3])); + RegWriteStringValue(HKEY_LOCAL_MACHINE, regpath, 'FileName', progpath + '\' + values[0]); + end; + if version.Major = 10 then begin + RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\' + values[1], '', oldValue); + RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\' + values[1], '{#ASCC_REG_PREFIX}', oldValue); + RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\' + values[1], '', '{#ASCC_REG_PREFIX}' + values[2]); + end; end; end; @@ -2012,6 +1997,9 @@ begin RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, ExpandConstant('Software\Classes\.docx\{#ASCC_REG_PREFIX}.Document.12')); RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, ExpandConstant('Software\Classes\.pptx\{#ASCC_REG_PREFIX}.Show.12')); RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, ExpandConstant('Software\Classes\.xlsx\{#ASCC_REG_PREFIX}.Sheet.12')); +#ifdef _ONLYOFFICE + RegDeleteKeyIncludingSubkeys(HKEY_LOCAL_MACHINE, ExpandConstant('Software\Classes\.docxf\{#ASCC_REG_PREFIX}.Docxf')); +#endif GetWindowsVersionEx(version); if version.Major = 10 then begin @@ -2021,6 +2009,11 @@ begin RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.xlsx', '', oldValue); if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '{#ASCC_REG_PREFIX}', oldValue) then RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '', oldValue); +#ifdef _ONLYOFFICE + if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docxf', '{#ASCC_REG_PREFIX}', oldValue) then + RegWriteStringValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docxf', '', oldValue); + RegDeleteValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docxf', '{#ASCC_REG_PREFIX}'); +#endif RegDeleteValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.docx', '{#ASCC_REG_PREFIX}'); RegDeleteValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.xlsx', '{#ASCC_REG_PREFIX}'); RegDeleteValue(HKEY_LOCAL_MACHINE, 'Software\Classes\.pptx', '{#ASCC_REG_PREFIX}');