Pull to refresh

Обновление расширений Mozilla Thunderbird через GPO на примере Lighting 1.02b

Reading time3 min
Views5K

Не так давно я столкнулся с проблемой и(или) неудобством при обновлении расширения Lighting 1.02b для Mozilla Thunderbird.
1. При обновлении Thunderbird с версии 2.х.х до 3.х.х, версия Lighting, установленная в 2.х.х не совместима с 3.х.х
2. При обновлении Thunderbird с версии 2.х.х до 3.х.х, Lighting пытается обновиться через интернет
3. При обновлении Thunderbird с версии 2.х.х до 3.х.х, Lighting не всегда автоматически обновляется (проблемы с сайтом, откуда скачивается обновление)

Руками устанавливать данное расширение неудобно, особенно, когда у вас пользователей более 100.
Писать инструкцию пользователю, как и что сделать — тоже не выход.
Была поставлена задача обновлять Lighting у пользователей через GPO.
Задача была с успехом реализована.

Оказывается, все расширения Thunderbird можно было устанавливать с помощью ключа -install-global-extension, но в Thunderbird, начиная с версии 3, данная функция «убрана». Долгие поиски вывели на оригинальное решение.

Итак, по пунктам:
1. Скачиваем расширение Lighting
2. Распаковываем его, к примеру, winrar'ом
3. Смотрим в файл install.rdf (который распаковали недавно) и в секции 'Description about=«urn:mozilla:install-manifest»' ищем строчку 'em:id'
4. Копируем номер ID с кавычками — у нас это {e2fda1a4-762b-4020-b5ad-a41df1933103}
5. Создаем директорию и даем ей название скопированного ID — {e2fda1a4-762b-4020-b5ad-a41df1933103}
6. Копируем в эту директорию все файлы, которые были распакованы ранее из расширения
7. Создаем в этой директории пустой файл с названием update_light102b.txt для проверки установленной версии Lighting
8. Размещаем директорию на сервере, который будет доступен для клиентов при обновлении

Теперь нам нужно скопировать эту папку в папку extensions программы Thunderbird в профиле пользователя.
Здесь требуется определить профиль Thunderbird по умолчанию и скопировать нашу папку с расширением, при этом не забыть проверить, было ли оно уже установлено.
Пришлось немного помучиться, но скрипт был благополучно написан, применен в GPO на вход пользователя.
Скрипт не претендует на оригинальность — можете его дописывать и корректировать как вам захочется.
Скрипт находит профиль Thunderbird по умолчанию, далее копирует расширение, если ранее оно не было ранее скопировано.

Сам скрипт:
================================================================================
Dim Profiles,Thunderbird,fileprefs,profile_ini
Dim ProfDirs, OldProfileFolder
Dim strSource, strSource3
Dim fso
Dim numprof
Const ForReading = 1

Set fso = CreateObject("Scripting.FileSystemObject")

Profiles = "Profiles\"
Thunderbird="Thunderbird\"
fileprefs = "prefs.js"
profiles_ini = "profiles.ini"
Set un = WScript.CreateObject ( "WScript.Shell" )
UserName = un.ExpandEnvironmentStrings ( "%USERNAME%" )
PathApps = un.ExpandEnvironmentStrings ( "%APPDATA%" ) & "\"
PathLocal = un.ExpandEnvironmentStrings ( "%USERPROFILE%" ) & "\Local Settings\Thunderbird\"

Public Function Find_profile
numprof = 0
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(PathApps & Thunderbird & profiles_ini, ForReading)
i = 0
Do Until objFile.AtEndOfStream
strLine1 = objFile.ReadLine
If InStr(strLine1, "Name=default") Then
i = i + 1
strLine1 = objFile.ReadLine
strLine1 = objFile.ReadLine
ProfDirs = Replace(strLine1,"Path=Profiles/","" )
OldProfileFolder = PathApps & Thunderbird & Profiles & ProfDirs & "\"
End If
Loop
numprof = i
objFile.Close
If numprof = 1 Then
Find_profile = OldProfileFolder
Else
Find_profile = ""
End If
End function

strSource = Find_profile + "extensions\{e2fda1a4-762b-4020-b5ad-a41df1933103}"
strSource2 = strSource + "\update_light102b.txt"

If fso.FileExists(strSource2) Then
else
fso.CopyFolder "\\server\distr$\Update_GPO\Lighting\{e2fda1a4-762b-4020-b5ad-a41df1933103}", strSource, true
end if

=================================================================================

Таким образом можно обновлять любое расширение в Thunderbird, при этом:
1. нет лишнего траффика
2. нет головной боли (обновились или нет)
3. нет неудобства для пользователя

Материалы, использованные при нахождении решения:
1. http://wpkg.org/Thunderbird#Silent_installation_of_Thunderbird_extensions
2. http://wpkg.org/Mozilla_Calendar/Lightning_for_Thunderbird_(global)#Lightning_1.0_Beta_2_for_Thunderbird_3.1
Tags:
Hubs:
+4
Comments8

Articles

Change theme settings