angle-left

Проблема с разворачиванием MSI пакета через SCCM

Данная заметка может быть полезна людям столкнувшимся с проблемой разворачивания приложений через MS SCCM (в моем случае ошибка при msiexec TRANSFORCE 0x658(1624)). 
 

Предистория

Одним нашим заказчиком была поставлена задача разворачивания одного MSI пакета в инфраструктуре обслуживаемого нами MS SCCM.
После успешного разворачивания пакета на 100% целевых машин, заказчик предоставил нам обновленные требования в виде необходимости инсталляции данного пакета с определенным списком преобразований (TRANSFORMS=”transformfile.mst”).
Файл преобразований transformfile.mst  был помещен в директорию с исходными файлами находящимися на сетевой шаре. 
Попытки разворачивания приводили к ошибкам  0x658(1624).
В логах AppEnforce.log на клиенте значилось :
<![LOG[    Prepared working directory: C:\Windows\ccmcache\j]LOG]!><time="10:33:30.276-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appcontext.cpp:189">
<![LOG[Found executable file msiexec with complete path C:\Windows\system32\msiexec.exe]LOG]!><time="10:33:30.279-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="executility.cpp:188">
<![LOG[    Prepared command line: "C:\Windows\system32\msiexec.exe" /i "DocsVisionClient2559.msi" TRANSFORMS="transformfile.mst" /qn]LOG]!><time="10:33:30.280-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appcontext.cpp:338">
<![LOG[Valid MSI Package path = C:\Windows\ccmcache\j\DocsVisionClient2559.msi]LOG]!><time="10:33:30.284-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appcontext.cpp:765">
<![LOG[    Advertising MSI package [C:\Windows\ccmcache\j\DocsVisionClient2559.msi] to the system.]LOG]!><time="10:33:30.286-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appcommon.cpp:125">
<![LOG[AdvertisePackage - MsiAdvertiseProduct Failed : 0x80070658]LOG]!><time="10:33:33.792-240" date="12-22-2014" component="AppEnforce" context="" type="3" thread="5140" file="appcommon.cpp:151">
<![LOG[AdvertisePackage failed (0x80070658).]LOG]!><time="10:33:33.793-240" date="12-22-2014" component="AppEnforce" context="" type="3" thread="5140" file="appcommon.cpp:207">
<![LOG[Lowright users might fail to install this application if it requires higher privileges]LOG]!><time="10:33:33.793-240" date="12-22-2014" component="AppEnforce" context="" type="2" thread="5140" file="appcontext.cpp:391">
<![LOG[    Executing Command line: "C:\Windows\system32\msiexec.exe" /i "DocsVisionClient2559.msi" TRANSFORMS="transformfile.mst" /qn with user context]LOG]!><time="10:33:33.794-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appexcnlib.cpp:201">
<![LOG[    Working directory C:\Windows\ccmcache\j]LOG]!><time="10:33:33.795-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appexcnlib.cpp:215">
<![LOG[    Post install behavior is BasedOnExitCode]LOG]!><time="10:33:33.811-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appcommon.cpp:1094">
<![LOG[    Waiting for process 5168 to finish.  Timeout = 25 minutes.]LOG]!><time="10:33:33.815-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appexcnlib.cpp:1958">
<![LOG[    Process 5168 terminated with exitcode: 1624]LOG]!><time="10:33:35.387-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appexcnlib.cpp:1967">
<![LOG[    Looking for exit code 1624 in exit codes table...]LOG]!><time="10:33:35.388-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appexcnlib.cpp:505">
<![LOG[    Unmatched exit code (1624) is considered an execution failure.]LOG]!><time="10:33:35.389-240" date="12-22-2014" component="AppEnforce" context="" type="2" thread="5140" file="appexcnlib.cpp:591">

 

Обращаю внимание на строчку

<![LOG[    Process 5168 terminated with exitcode: 1624]LOG]!><time="10:33:35.387-240" date="12-22-2014" component="AppEnforce" context="" type="1" thread="5140" file="appexcnlib.cpp:1967">

 

Код 1624(ERROR_INSTALL_TRANSFORM_FAILURE) сигнализирует об ошибке выполнения TRANSFORMS. При этом Microsoft рекомендует проверить путь к файлу:
 

ERROR_INSTALL_TRANSFORM_FAILURE 1624 There was an error applying transforms. Verify that the specified transform paths are valid.

 

Были предприняты попытки указания TRANSFORMS=”\\servarshare\path\transformfile.mst”, не давшие положительного результата.

Решение

SCCM после добавления пакета добавляет его окружение на точку распростанения (соответственно после создания приложения происходит копирование необходимых файлов).
Ввиду того, что на точке распространения содержится информация не в исходном виде а в виде метаинформации (примеры показаны на рисунках ниже), решением проблемы было повторное добавление приложение.
При повторном добавлении пакета из директории содержащей необходимый файл преобразований, все необходимые файлы из директории(и субдиректорий) автоматически были добавлены на точку распространения.
 

Вывод

Таким образом решить проблему ошибки 0x658(1624) разворачивания MSI пакета с файлом преобразований через SCCM удалось путем пересоздания приложения в SCCM.
Так же рекомендую использовать System Center 2012 R2 Configuration Manager Toolkit ,позволяющий эфективно диагностировать различные проблемы с SCCM.