• Развёртывание АСКОН КОМПАС-3D-Viewer v13 (13.0)

    imageПриложение КОМПАС-3D Viewer V13 от компании Аскон предназначено для просмотра и печати документов и шаблонов документов, разработанных в системах КОМПАС-3D/ КОМПАС-3D LT, также с его помощью возможен просмотр и печать документов форматов DXF и DWG. Лицензионное соглашение поставляемое с дистрибутивом текущей версии (13.0) разрешает использование этого вьюера в корпоративной среде.

    Если в организации возникает потребность в централизованном развёртывании этого пакета на определённое количество рабочих станций то вы можете столкнуться с ситуацией когда устанавливаемая новая версия вьюера не производит при установке удаления старых версий, так как это например реализовано в программе установки Adobe Reader. В итоге это может привести к зоопарку разных версий в рамках одного компьютера, то есть фактически получается что на одном компьютере вы будете использовать 2, 3 и более экземпляров ПО что само себе уже противоречит упомянутому лицензионному соглашению. Чтобы избежать этой ситуации, в процессе развертывания новой версии вам потребуется предварительно выполнить удаление всех установленных экземпляров этого ПО. В независимости от способа реализации этой задачи (GPO/SCCM и т.п.) вам может пригодиться пакетный файл содержащий команды последовательного удаления всех ранее установленных версий (вплоть до текущей):

    rem Kompas-3D-Viewer v13 (13.0)

    MsiExec.exe /x {2110889E-9850-4BD6-A3B6-C031B3F656C3} /qn

    rem Kompas-3D-Viewer v12 (12.0.1)

    MsiExec.exe /x {17D7EA7D-DDFA-44FF-A367-12E3D9D95688} /qn

    rem Kompas-3D-Viewer v11 (11.0.1)

    MsiExec.exe /x {4BBE7146-2DE7-4E0B-B6A7-8FCEC2D7DA79} /qn

    rem Kompas-3D-Viewer v11 (11.0)

    MsiExec.exe /x {4F20BA62-58DB-4B58-941C-BC9362339E00} /qn

    rem Kompas-3D-Viewer v9 (9.0.1)

    MsiExec.exe /x {5EA2B7F0-F558-4FF8-9B51-CA8AAA628E93} /qn

  • SCCM 2007 R2 – развёртывание Java Runtime Environment (JRE)

    Просматривая отчет SCCM ‘Count of all instances of software registered with Add or Remove Programs’ обратил внимание на огромный букет разных версий Java Runtime Environment (JRE), установленных на разных клиентских системах. Выяснилось, что на некоторых клиентах установлено по несколько экземпляров JRE, как разных веток, так и их подверсий. Погуглив, почитав гневные выплески в адрес разработчиков и поигравшись с дистрибутивами JRE, стало понятно, что развернуть актуальную версию JRE параллельно удалив при этом все старые версии – задача не совсем тривиальная. Дополнительно нужно решить проблему отключения механизма обновления, который приводит в замешательство пользователей, периодически выбрасывая окно UAC при попытке произвести авто-обновление JRE.

    Для начала нам необходимо скачать последнюю версию (на момент написания заметки это версия 6 Update 23) offline-инсталлятора с адреса Java Runtime Environment Download

    Итак, у нас имеются два файла:
    jre-6u23-windows-i586.exe – для 32-битных версий Windows
    jre-6u23-windows-x64.exe – для 64-битных версий Windows

    Для развёртывания через SCCM, так же как и через другие механизмы типа GPO, нам понадобиться файлы MSI инсталлятора. О том, как их извлечь описано в статье How do I deploy Java using Active Directory across a network?
    Запускаем полученный *.exe дистрибутив (сам процесс установки при этом выполнять не нужно)…

    image

    …переходим в служебный каталог, куда после запуска дистрибутив JRE распаковывает свои файлы (в зависимости от используемой ОС каталог может различаться):

    для Windows Vista/7 - C:Users<user>AppDataLocalLowSunJavajre1.6.0_23
    для Windows XP - C:Documents and Settings<user>Local SettingsApplication DataSunJava jre1.6.0_23

    Копируем из этого каталога файлы jre1.6.0_23.msi и Data1.cab и после этого запущенное приложение программы установки JRE можно закрывать (оно нам больше не понадобиться).

    Так как *.cab файл в составе дистрибутива имеет цифровую подпись, перед началом развёртывания необходимо удостовериться в том, что на целевых клиентских системах обновлено хранилище корневых сертификатов. В противном случае, мы можем столкнуться с проблемой, описанной в заметке SCCM – Обновление корневых сертификатов.

    Файлы необходимые для установки новой версии мы получили, но как быть с множеством уже установленных экземпляров старых версий? Для того чтобы произвести их удаление перед установкой новой версии создадим отдельный пакетный файл jre1.6.0_23_UninstallAll.bat следующего содержания:

    rem Java(TM) 6 Update 23
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216023FF} /qn
    rem Java(TM) 6 Update 23 (64-bit)
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F86416023FF} /qn
    rem Java(TM) 6 Update 22
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216022FF} /qn
    rem Java(TM) 6 Update 21
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216021FF} /qn
    rem Java(TM) 6 Update 20
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216020FF} /qn
    rem Java(TM) 6 Update 19
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216019FF} /qn
    rem Java(TM) 6 Update 18
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216018F0} /qn
    rem Java(TM) 6 Update 17
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216017FF} /qn
    rem Java(TM) 6 Update 17 (64-bit)
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F86416017FF} /qn
    rem Java(TM) 6 Update 16
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216016FF} /qn
    rem Java(TM) 6 Update 15
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216015FF} /qn
    rem Java(TM) 6 Update 14
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216014FF} /qn
    rem Java(TM) 6 Update 13
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216013FF} /qn
    rem Java(TM) 6 Update 12
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216012FF} /qn
    rem Java(TM) 6 Update 11
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216011FF} /qn
    rem Java(TM) 6 Update 10
    msiexec.exe /x {26A24AE4-039D-4CA4-87B4-2F83216010FF} /qn

    rem =====================================
    rem Java(TM) 6 Update 7
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160070} /qn
    rem Java(TM) 6 Update 6
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160060} /qn
    rem Java(TM) 6 Update 5
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160050} /qn
    rem Java(TM) 6 Update 4
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160040} /qn
    rem Java(TM) 6 Update 3
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160030} /qn
    rem Java(TM) 6 Update 2
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160020} /qn
    rem Java(TM) SE Runtime Environment 6 Update 1
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160010} /qn
    rem Java(TM) SE Runtime Environment 6
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0160000} /qn

    rem =====================================
    rem JRE Runtime Environment 5.0 Update 21
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150210} /qn
    rem JRE Runtime Environment 5.0 Update 20
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150200} /qn
    rem JRE Runtime Environment 5.0 Update 19
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150190} /qn
    rem JRE Runtime Environment 5.0 Update 18
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150180} /qn
    rem JRE Runtime Environment 5.0 Update 17
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150170} /qn
    rem JRE Runtime Environment 5.0 Update 16
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150160} /qn
    rem J2SE Runtime Environment 5.0 Update 15
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150150} /qn
    rem JRE Runtime Environment 5.0 Update 14
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150140} /qn
    rem JRE Runtime Environment 5.0 Update 13
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150130} /qn
    rem J2SE Runtime Environment 5.0 Update 12
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150120} /qn
    rem JRE Runtime Environment 5.0 Update 11
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150110} /qn
    rem JRE Runtime Environment 5.0 Update 10
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150100} /qn
    rem JRE Runtime Environment 5.0 Update 9
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150090} /qn
    rem JRE Runtime Environment 5.0 Update 8
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150080} /qn
    rem JRE Runtime Environment 5.0 Update 7
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150070} /qn
    rem J2SE Runtime Environment 5.0 Update 6
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150060} /qn
    rem JRE Runtime Environment 5.0 Update 5
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150050} /qn
    rem JRE Runtime Environment 5.0 Update 4
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150040} /qn
    rem J2SE Runtime Environment 5.0 Update 3
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150030} /qn
    rem J2SE Runtime Environment 5.0 Update 2
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150020} /qn
    rem JRE Runtime Environment 5.0 Update 1
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150010} /qn
    rem JRE Runtime Environment 5.0
    msiexec.exe /x {3248F0A8-6813-11D6-A77B-00B0D0150000} /qn

    rem =====================================
    rem Java 2 Runtime Environment, SE v1.4.2_19
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142190} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_18
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142180} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_17
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142170} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_16
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142160} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_15
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142150} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_14
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142140} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_13
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142130} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_12
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142120} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_11
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142110} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_10
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142100} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_09
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142090} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_08
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142080} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_07
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142070} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_06
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142060} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_05
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142050} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_04
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142040} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_03
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142030} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_02
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142020} /qn
    rem Java 2 Runtime Environment, SE v1.4.2_01
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142010} /qn
    rem Java 2 Runtime Environment, SE v1.4.2
    msiexec.exe /x {7148F0A8-6813-11D6-A77B-00B0D0142000} /qn

    rem =====================================
    rem Java 2 Runtime Environment Standard Edition v1.3.1_25
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_25Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_24
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_24Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_23
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_23Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_22
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_22Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_21
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_21Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_20
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_20Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_19
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_19Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_18
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_18Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_17
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_17Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_16
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_16Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_15
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_15Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_14
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_14Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_13
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_13Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_12
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_12Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_11
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_11Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_10
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_10Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_09
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_09Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_08
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_08Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_07
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_07Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_06
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_06Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_05
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_05Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_04
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_04Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_03
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_03Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_02
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_02Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3.1_01
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3.1_01Uninst.isu" –a
    rem Java 2 Runtime Environment Standard Edition v1.3
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.3Uninst.isu" -a

    rem =====================================
    rem Java 2 Runtime Environment Standard Edition v1.2
    %systemroot%IsUninst.exe -f"%SystemDrive%Program FilesJavaSoftJRE1.2Uninst.isu" -a

    rem =====================================
    rem Java Auto Updater 2.0.2.1 / 2.0.2.4
    MsiExec.exe /x {4A03706F-666A-4037-7777-5F2748764D10} /qn

    В начале файла удаление уже установленного экземпляра текущей версии фигурирует не случайно. Эксперименты показали что если текущая версия была ранее установлена в ручную то выкорчевать из неё логику механизма авто-обновления сложней чем просто удалить и установить заново с нужными параметрами. В конце файла строка удаления Java Auto Updater добавлена больше для перестраховки, так как, при удалении JRE в штатном режиме, этот модуль удаляется тоже.

    Для информации: если нет желания удалять текущую версию JRE с установленным модулем авто-обновления, механизм авто-обновления можно попытаться отключить в реестре:

    [HKEY_LOCAL_MACHINESoftwareJavaSoftJava UpdatePolicy]
    "EnableJavaUpdate"=dword:00000000
    "EnableAutoUpdateCheck"=dword:00000000

    Разместив полученные из дистрибутива файлы jre1.6.0_23.msi , Data1.cab и пакетный файл удаления старых версий jre1.6.0_23_UninstallAll.bat в одном сетевом каталоге, в SCCM создаем пакет распространения JRE.

    image

    Пакет будет иметь две основные программы, которые мы будем использовать. Первая программа «Uninstall all old versions» будет запускать созданный нами пакетный файл для удаления старых версий

    image

    Вторая программа «Per-system unattended» будет запускать процедуру установки новой версии с необходимыми нам ключами, отвечающими за отключение механизма авто-обновления JRE

    image

    Команда установки может быть следующей:

    msiexec /i jre1.6.0_23.msi /qn REBOOT=Suppress JAVAUPDATE=0 AUTOUPDATECHECK=0

    ключи ADDLOCAL=ALL IEXPLORER=1 MOZILLA=1 можно не использовать, так как, начиная с версии JRE 6 update 10, они считаются устаревшими.

    Обратите внимание на то, что текущая версия JRE имеет два разных дистрибутива для платформ 32 и 64 бита, поэтому на закладке предварительных требований для запуска программы установки необходимо ограничить список соответствующих платформ, на которые может быть установлен данный пакет.

    image

    После того, как на SCCM пакет распространения готов, создадим коллекцию компьютеров на которую в последствие будет назначено объявление развёртывания этого пакета, с членством основанном на SQL запросе

    image

    Запрос должен выбирать из БД SCCM все компьютеры, у которых в составе установленных приложений присутствуют старые версии JRE разных веток, например, так:

    select

    SMS_R_SYSTEM.ResourceID,

    SMS_R_SYSTEM.ResourceType,

    SMS_R_SYSTEM.Name,

    SMS_R_SYSTEM.SMSUniqueIdentifier,

    SMS_R_SYSTEM.ResourceDomainORWorkgroup,

    SMS_R_SYSTEM.Client

    from SMS_R_System

    inner join SMS_G_System_ADD_REMOVE_PROGRAMS

    on SMS_G_System_ADD_REMOVE_PROGRAMS.ResourceID = SMS_R_System.ResourceId

    where  

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'Java(TM) 6%' OR

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'Java(TM) SE Runtime Environment 6%' OR

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'J2SE Runtime Environment 5%' OR

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'Java 2 Runtime Environment, SE v1.4%' OR

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'Java 2 Runtime Environment Standard Edition v1.3%' OR

    SMS_G_System_ADD_REMOVE_PROGRAMS.DisplayName

    like 'Java 2 Runtime Environment Standard Edition v1.2%'

    После того как коллекция будет обновлена и заполнена компьютерами, создаем последовательность задач (Task Sequences) состоящую из двух действий. Первым действием будет запуск программы выполняющей пакетный файл удаления всех старых версий:

    image

    При этом в опциях данного шага необходимо обозначить то, что в случае возврата ошибок, последовательность будет продолжать выполняться. В ходе выполнения пакетного файла для тех продуктов, которые не установлены, будет возвращаться код ошибки инсталлятора MSI 1605, что может приводить к прерыванию последовательности. По этой же причине процедуру установки пакета предлагается выполнять не в виде обычного объявления на коллекцию, а через выполнение последовательности задач.

    image

    Вторым действием последовательности будет уже сама установка новой версии с необходимыми нам параметрами

    image

    После этого нам остаётся только объявить последовательность задач на созданную ранее коллекцию компьютеров и следить за ходом развёртывания на консоли SCCM

    image

    Дополнительные источники информации:

    Java SE Online Documentation - Java Runtime Environment Configuration
    Java SE Online Documentation - JRE Installer Options
    AppDeploy Package Knowledgebase - Java Runtime Environment
    camie.dyndns.org - J2SE & JRE Mass Uninstallation Script (Bat)
    Brad's JumpBag Blog - Java 6 Update 22 partial installs

  • SCCM - Обновление корневых сертификатов

    При попытке развернуть последнюю версию JRE на Windows 7 столкнулся с ситуацией, когда программа установки завершается с ошибкой:

    Имя журнала: Application
    Источник: MsiInstaller
    Дата: 26.01.2011 8:37:12
    Код события: 11330
    Категория задачи: Отсутствует
    Уровень: Ошибка
    Ключевые слова: Классический
    Пользователь: mydomuser
    Компьютер: WS001.mydom.com
    Описание:
    Product: Java(TM) 6 Update 23 -- Error 1330.A file that is required cannot be installed because the cabinet file \sccm-serverSourcesJRE_1.6.0_23x86Data1.cab has an invalid digital signature. This may indicate that the cabinet file is corrupt. Error 266 was returned by WinVerifyTrust.

    Проблема в данном случае заключается в отсутствии доверия к корневому сертификату в цепочке корневых сертификатов того сертификата, с помощью которого подписан *.cab файл в составе дистрибутива.

    При этом на компьютерах с Windows XP данной проблемы нет, так как эти ОС получают с WSUS соответствующее обновление - Update for Root Certificates [October 2010] (KB931125)

    clip_image001

    Для того чтобы обеспечить обновление корневых сертификатов на всех клиентских системах Windows можно скачать файл rootsupd.exe и форсированного распространить его. В моём случае, для этой цели я воспользовался SCCM, создав новый пакет распространения:

    clip_image002

    Для пакета сделана соответствующая программа, которая в скрытом режиме будет запускать исполняемый файл rootsupd.exe.

    clip_image001[4]

    После распространения созданного пакета на все точки распространения SCCM и объявления на коллекцию клиентских ПК, проблема с развёртыванием JRE будет исчерпана.

    Для тех, у кого нет возможности использовать SCCM, распространить это обновление можно и другими доступными способами, например через GPO.

  • SCCM 2007 R2 – Использование Remote Tools для клиентов в рабочей группе

    imageЭта заметка о том, как организовать возможность механизма удалённого управления SCCM Remote Tools для клиентов не входящих в домен (являющихся членами рабочей группы). Всё нижеописанное относиться только к Смешанному режиму работы сайта SCCM (Mixed mode).

    Как обычно бывает на практике с SCCM, несмотря на довольно обширный объём доступной онлайн документации, мне нигде не удалось найти исчерпывающей информации обо всех подводных камнях этой задачи, поэтому решил написать для себя на будущее небольшую шпаргалку.

    Нормальное взаимодействие не доменного клиента SCCM и доменного сервера SCCM во многом зависит от корректной работы механизмов разрешения имён. В интернете можно встретить несколько способов организации разрешения имён для этой задачи. Мы пойдём по самому короткому и надёжному пути,  без всяких танцев с бубном вокруг серверов WINS, ковыряния конфигурационных файлов LMHOSTS и т.п. – то есть будем использовать DNS.. как звучит в гайде“We recommend DNS for workgroup clients”

    Для начала мы включим публикацию точки распространения нашего сайта SCCM в DNS. Сделать это можно в консоли SCCM, открыв свойства сайта на закладке “Advanced

    image

    После включения этой опции мы должны удостовериться в том, что SCCM сервер действительно создал в DNS в нашей основной зоне прямого просмотра в контейнере _tcp необходимую запись Service location resource record (SRV RR). В нашем примере это будет зона mydom.com

    image

    Если же по какой то причине сервисная учетная запись так и не появилась, мы можем создать её в ручную. Процесс создания такой записи описан в статье System Center TechCenter – How to Manually Publish the Default Management Point to DNS.

    Следующим шагом будет установка специальной серверной роли SCCM Server Locator Point (SLP), которая в нашем случае будет нужна для того чтобы не доменные клиенты могли общаться c нашим сервером SCCM внутри домена посредствам протокола HTTP.

    Процедура добавления роли  пошагово описана в статье System Center TechCenter – How to Create a Server Locator Point in Configuration Manager. В консоли SCCM развернём дерево настроек нашего сайта (Site Database > Site Management > SITENAME > Site Settings), перейдём в раздел Site Systems и в меню действий выберем пункт New Roles

    image

    Далее в открывшемся мастере добавления ролей отметим интересующую нас роль – SLP, остальные настройки мастера в большинстве случаев можно оставить неизменными.

    image

    image

    После того как мастер установки роли успешно завершит свою работу, мы можем проверить доступность Application-части добавленной роли, - для этого откроем в браузере специально сформированный URL формата:

    http://<SLPServerName>/sms_slp/slp.dll?site&sc=<SiteName>

    В нашем примере эта ссылка будет выглядеть так:
    http://kom-sccm01.mydom.com/sms_slp/slp.dll?site&sc=KOM

    Как минимум, мы не должны получать никаких ошибок веб-сервера, запросов авторизации и т.п. вещей. В качестве ответа SLP мы должны получить XML примерно такого содержания:

       <?xml version=”1.0” ?>

       <SiteAssignment>

         <Site Sitecode=”KOM BuildNumber=”6487 Version=”4.00.6487.2000 DefaultMP=”KOM-SCCM01.MYDOM.COM”>

            <Capabilities SchemaVersion=”1.0” />

      </Site>

    </SiteAssignment>

     

    Далее переходим непосредственно к настройке не доменного клиента. В первую очередь мы должны обеспечить адекватную работу DNS клиента. Для этого мы убеждаемся в том, что в качестве DNS серверов для клиента используется сервера обслуживающие нашу доменную зону, а в свойствах системы на клиенте задан Основной DNS-суффикс указывающий имя домена:

    image

    После этого с клиента проверяем доступность SCCM сервера по короткому имени (без указания DNS суффикса) и по полному FQDN имени:

    Ping KOM-SCCM01
    Ping KOM-SCCM01.mydom.com

    Затем регистрируем в DNS имя нашего не доменного клиента и затем проверяем его доступность по имени с SCCM сервера.

    Следующим шагом копируем дистрибутив SCCM клиента из подкаталога Client каталога установки серверных компонент SCCM на наш не доменный компьютер, например в папку «C:SCCMClientDistr»:

    image

    Необходимо чтобы  файлы установки клиента располагались именно на локальном ресурсе и оставались доступными в той же папке после установки клиента, так как они могут потребоваться в дальнейшем для процедур обновления/реконфигурации клиентского ПО.

    Открываем командную строку, переходим в каталог с указанными файлами и выполняем запуск программы установки с передачей ей всех необходимых параметров командой:

    CCMSetup.exe /Source:C:SCCMClientDistr” CCMHTTPPORT=80  SMSSITECODE=KOM” SMSMP=KOM-SCCM01.mydom.com” SMSSLP=KOM-SCCM01.mydom.com” DNSSUFFIX=mydom.com”

    Примечание: Полный список используемых ключей и их описания можно найти по ссылке на первоисточник в конце заметки. 

    Дожидаемся когда в системном журнале «Приложение» будет зафиксировано событие успешного окончания установки клиента:

    image

    Проверяем доступность дополнительных апплетов SCCM в Панели управления, которые должны появиться после окончания установки клиента:

    image

    После этого переходим на консоль SCCM, убеждаемся в том, что наш клиент там появился, и выполняем для него процедуру одобрения (Approve)

    image

    Всё теперь наш клиент «в строю». Для того чтобы успешно работал механизм Remote Tools в составе клиента SCCM, на клиентской системе в свойствах проводника необходимо отключить Использование простого общего доступа к файлам (simple file sharing)

    image

    После этого мы сможем подключаться к нашему не доменному клиенту через Remote Tools, указывая при запросе авторизации локальные учетные данные этого клиента (без указания имени домена):

    image

    И ещё один момент, если мы планируем использовать распространение ПО на таких клиентов , то на сервере SCCM обязательно должна быть сконфигурирована учетная запись Network Access Account, в противном случае не доменные компьютеры не смогут получить доступ к контенту точки распространения (distribution point).

    Дополнительные источники информации:

    System Center TechCenter Configuration Manager 2007 General Supported Configurations (Computers in Workgroups)

    System Center TechCenter - How to Install Configuration Manager Clients on Workgroup Computers

    System Center TechCenter - How to Specify the Server Locator Point for Configuration Manager Client Computers

    System Center TechCenter - About Configuration Manager Client Installation Properties

  • SCCM & Double UUID

    imageРабота с SCCM продолжает приносить нам сюрпризы. В ходе того как мы начали использовать функционал OS Deployment вскрылись новые подробности.

    При очередном развертывании целевой компьютер (HP DX7400) упорно отказывался начинать процесс установки ОС.

    Для изучения проблемы пришлось в загружаемом образе WinPE включить возможность отладки, после чего мы получили доступ к логам WinPE клиента и обнаружили что на этапе когда загруженный WinPE клиент обращается на SCCM сервер для получения задания развертывания ОС – происходит коллизия. А именно, SCCM сервер почему то определяет этого клиента как уже существующий в БД SCCM компьютер (совершенно другой но такой же модели - HP DX7400)…Далее  путём долгих мытарств выяснилось что эти два компьютера имеют одинаковый аппаратный UUID, который прошит в DMI области BIOS материнской платы на заводе производителе.
    Выяснилось что если SCCM находит в своей базе данных совпадающий UUID то он как принимает два разных компьютера за один и тот же…что и является причиной отказа в развертывании… По доступной в интернете информации - дублирующимися UUID отличаются некоторые производители оборудования, дочерние предприятия DELL и HP. Сначала мы попробовали решить эту проблему «софтверно», то есть я открывал кейс в тех.поддержке MS…но как и следовало ожидать их ответ был неутешительным- «Обращайтесь к разработчику оборудования». Пока изучал проблему узнал интересную вещь -  в свое время компания Microsoft для получения производителями статуса «Сертифицировано для Microsoft Windows» одним из условий выдвигала наличие у производителя поддержки RFC определяющего наличие и уникальность аппаратного UUID…но как оказалось наши «славянские братья» (если не путаю страна-производитель этих рабочих станций HP была Румыния) забили на все эти глупости )))
    Потом была долгая переписка с тех.поддержкой HP…и пока она длилась было найдено обходное решение по сносу с таких компьютеров всех данных BIOS из области DMI. Но при этом из BIOS, как следствие, вытирался не только UUID но и S/N и P/N девайса, что уже само по себе не очень красиво получалось…хотя при желании эти данные можно было вернуть назад с помощью ещё одной немецкой хакерской тулзы … но все эти операции выглядели очень муторно и неудобно...
    Совсем недавно наша переписка с инженером HP из !!!Индии!!! закончилась. Мы получили и успешно провели испытания утилиты SMBCFG от Phoenix Technologies. Данная тулза позволяет в режиме MS-DOS выполнить команду по регенерации аппаратного UUID не теряя при этом прочих данных их DMI области BIOS.

    Делается это одной командой:

    SMBCFG.EXE /UUID

    Столкнувшиеся с подобной проблемой могу стянуть утилиту отсюда

    PS: Обращаю ваше внимание на то что корректность работы утилиты проверена только на рабочих станциях HP DX7400 (Bios AWARD-Phoenix)