Installshield, SCAD Office и SCCM 2012 R2

20
16583

Это ответ на топик на форуме social.technet.microsoft.com для пользователя elizarov. )

Есть приложение SCAD Office, которое упаковано через Installshield. При добавлении в SCCM приложение не устанавливается и поэтому я решил выяснить в чем причина, но из обычного топика получился целый пост. )

В Installshield есть возможность создания файла ответов, с расширением *.iss. Этот файл создается, если установщик запускается с ключом /r. Внутри файла ответов последовательность действий, по которой проходит установка.

Перед этим необходимо скачать сам дистрибутив, это один исполняемый файл. Разработчики в своей документации советуют распаковать его, выполнив SCADOffice.exe /extract_all:<path>, но эксперименты с установщиком setup.exe не увенчались успехом.

installshield_sccm2012r2_scad_15

installshield_sccm2012r2_scad_1

Возможно другие версии работают нормально, но именно со SCAD Office 21.1.1 пришлось работать с файлом SCADOffice.exe, так что про распаковку можно забыть.

Теперь создадим файл ответов. Для этого откроем командную строку и выполним: SCADOffice.exe /r /f1C:\setup.iss

  • /r — включить запись файла ответа
  • /f1C:\setup.iss — куда сохранить файл ответа

Запускается установщик. Здесь все просто, проходим по этапам, выбираем язык, компоненты, каталог и т.д. На диске C:\ появился файл ответа setup.iss

[xml]

[InstallShield Silent]
Version=v7.00
File=Response File
[File Transfer]
OverwrittenReadOnly=NoToAll
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-DlgOrder]
Dlg0={D0785A9A-5360-439F-ABD1-6AF157160F05}-SdWelcome-0
Count=12
Dlg1={D0785A9A-5360-439F-ABD1-6AF157160F05}-SdLicense2Rtf-0
Dlg2={D0785A9A-5360-439F-ABD1-6AF157160F05}-SdAskDestPath2-0
Dlg3={D0785A9A-5360-439F-ABD1-6AF157160F05}-SdSelectFolder-0
Dlg4={D0785A9A-5360-439F-ABD1-6AF157160F05}-SdComponentTree-0
Dlg5={D0785A9A-5360-439F-ABD1-6AF157160F05}-AskPath-0
Dlg6={D0785A9A-5360-439F-ABD1-6AF157160F05}-AskYesNo-0
Dlg7={D0785A9A-5360-439F-ABD1-6AF157160F05}-AskPath-1
Dlg8={D0785A9A-5360-439F-ABD1-6AF157160F05}-AskYesNo-1
Dlg9={D0785A9A-5360-439F-ABD1-6AF157160F05}-AskOptions-0
Dlg10={D0785A9A-5360-439F-ABD1-6AF157160F05}-SdStartCopy2-0
Dlg11={D0785A9A-5360-439F-ABD1-6AF157160F05}-SdFinish-0
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-SdWelcome-0]
Result=1
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-SdLicense2Rtf-0]
Result=1
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-SdAskDestPath2-0]
szDir=C:\Program Files\SCAD
Result=1
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-SdSelectFolder-0]
szFolder=SCAD Office 21.1
Result=1
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-SdComponentTree-0]
szDir=C:\Program Files\SCAD
HASP-type=string
HASP-count=1
HASP-0=HASP\Sentinel HASP
SCADOffice32bit\FEM-type=string
SCADOffice32bit\FEM-count=3
SCADOffice32bit\FEM-0=SCADOffice32bit\FEM\SCADApp
SCADOffice32bit\FEM-1=SCADOffice32bit\FEM\AccelEdit
SCADOffice32bit\FEM-2=SCADOffice32bit\FEM\BetaEdit
SCADOffice32bit\SectionSet-type=string
SCADOffice32bit\SectionSet-count=4
SCADOffice32bit\SectionSet-0=SCADOffice32bit\SectionSet\Section
SCADOffice32bit\SectionSet-1=SCADOffice32bit\SectionSet\Consul
SCADOffice32bit\SectionSet-2=SCADOffice32bit\SectionSet\Tonus
SCADOffice32bit\SectionSet-3=SCADOffice32bit\SectionSet\Sezam
SCADOffice32bit\Cross-type=string
SCADOffice32bit\Cross-count=1
SCADOffice32bit\Cross-0=SCADOffice32bit\Cross\Pasternak
SCADOffice32bit\Utilities-type=string
SCADOffice32bit\Utilities-count=4
SCADOffice32bit\Utilities-0=SCADOffice32bit\Utilities\SCalc
SCADOffice32bit\Utilities-1=SCADOffice32bit\Utilities\Ucalc
SCADOffice32bit\Utilities-2=SCADOffice32bit\Utilities\ViewProf
SCADOffice32bit\Utilities-3=SCADOffice32bit\Utilities\Rebar
SCADOffice32bit\MonolitGroup-type=string
SCADOffice32bit\MonolitGroup-count=2
SCADOffice32bit\MonolitGroup-0=SCADOffice32bit\MonolitGroup\MonolitApp
SCADOffice32bit\MonolitGroup-1=SCADOffice32bit\MonolitGroup\Examples
SCADOffice32bit\HandBooks-type=string
SCADOffice32bit\HandBooks-count=3
SCADOffice32bit\HandBooks-0=SCADOffice32bit\HandBooks\Kust
SCADOffice32bit\HandBooks-1=SCADOffice32bit\HandBooks\CoCon
SCADOffice32bit\HandBooks-2=SCADOffice32bit\HandBooks\MaterialEdit
SCADOffice32bit-type=string
SCADOffice32bit-count=17
SCADOffice32bit-0=SCADOffice32bit\FEM
SCADOffice32bit-1=SCADOffice32bit\SectionSet
SCADOffice32bit-2=SCADOffice32bit\Cross
SCADOffice32bit-3=SCADOffice32bit\Kristall
SCADOffice32bit-4=SCADOffice32bit\Comet
SCADOffice32bit-5=SCADOffice32bit\Arbat
SCADOffice32bit-6=SCADOffice32bit\ComeIn
SCADOffice32bit-7=SCADOffice32bit\Decor
SCADOffice32bit-8=SCADOffice32bit\Underground
SCADOffice32bit-9=SCADOffice32bit\Slope
SCADOffice32bit-10=SCADOffice32bit\West
SCADOffice32bit-11=SCADOffice32bit\Utilities
SCADOffice32bit-12=SCADOffice32bit\MonolitGroup
SCADOffice32bit-13=SCADOffice32bit\HandBooks
SCADOffice32bit-14=SCADOffice32bit\GlobalSettings
SCADOffice32bit-15=SCADOffice32bit\FireBird
SCADOffice32bit-16=SCADOffice32bit\ConfigProtection
Visual C++ 9.0-type=string
Visual C++ 9.0-count=1
Visual C++ 9.0-0=Visual C++ 9.0\Visual C++
Add-ins\Revit-type=string
Add-ins\Revit-count=3
Add-ins\Revit-0=Add-ins\Revit\Revit2015
Add-ins\Revit-1=Add-ins\Revit\Revit2014
Add-ins\Revit-2=Add-ins\Revit\Revit2013
Add-ins\Tekla-type=string
Add-ins\Tekla-count=3
Add-ins\Tekla-0=Add-ins\Tekla\Tekla 20
Add-ins\Tekla-1=Add-ins\Tekla\Tekla 19
Add-ins\Tekla-2=Add-ins\Tekla\Tekla 18
Add-ins\ArchiCAD-type=string
Add-ins\ArchiCAD-count=4
Add-ins\ArchiCAD-0=Add-ins\ArchiCAD\ArchiCAD 18
Add-ins\ArchiCAD-1=Add-ins\ArchiCAD\ArchiCAD 17
Add-ins\ArchiCAD-2=Add-ins\ArchiCAD\ArchiCAD16x32
Add-ins\ArchiCAD-3=Add-ins\ArchiCAD\ArchiCAD16x64
Add-ins-type=string
Add-ins-count=3
Add-ins-0=Add-ins\Revit
Add-ins-1=Add-ins\Tekla
Add-ins-2=Add-ins\ArchiCAD
Component-type=string
Component-count=6
Component-0=HASP
Component-1=SCADOffice32bit
Component-2=Visual C++ 9.0
Component-3=DirectX
Component-4=Add-ins
Component-5=RUS
Result=1
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-AskPath-0]
szPath=C:\Program Files\SCAD\SDATA\
Result=1
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-AskYesNo-0]
Result=1
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-AskPath-1]
szPath=C:\Program Files\SCAD\SWORK\
Result=1
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-AskYesNo-1]
Result=1
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-AskOptions-0]
Result=1
Sel-0=0
Sel-1=0
Sel-2=0
Sel-3=1
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-SdStartCopy2-0]
Result=1
[Application]
Name=SCAD Office
Version=21.1.1.1
Company=SCAD Soft
Lang=0419
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-SdFinish-0]
Result=1
bOpt1=0
bOpt2=0
[{F843A7CF-17A6-47BD-AA97-3DA9CFD2CB31}-DlgOrder]
Count=0
[{5AAA09A1-3298-4B8A-B0C9-2EF6259E7F54}-DlgOrder]
Count=0

[/xml]

Кроме этого, Installshield поддерживает запись файла ответа на удаление, но в данном случае со SCAD Office не все так просто, об этом в самом конце.

Создаем файл ответа на удаление: SCADOffice.exe /r /f1C:\uninstall.iss

Запускается мастер, выбираем продукт.

installshield_sccm2012r2_scad_2

И удаляем.

installshield_sccm2012r2_scad_3

После окончания удаления, видим файл C:\uninstall.iss

[xml]

[InstallShield Silent]
Version=v7.00
File=Response File
[File Transfer]
OverwrittenReadOnly=NoToAll
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-DlgOrder]
Dlg0={D0785A9A-5360-439F-ABD1-6AF157160F05}-SdWelcomeMaint-0
Count=3
Dlg1={D0785A9A-5360-439F-ABD1-6AF157160F05}-MessageBox-0
Dlg2={D0785A9A-5360-439F-ABD1-6AF157160F05}-SdFinish-0
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-SdWelcomeMaint-0]
Result=303
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-MessageBox-0]
Result=6
[Application]
Name=SCAD Office
Version=21.1.1.1
Company=SCAD Soft
Lang=0419
[{D0785A9A-5360-439F-ABD1-6AF157160F05}-SdFinish-0]
Result=1
bOpt1=0
bOpt2=0
[{616CD9AA-EDAF-4837-BCC6-79C6C8B981B0}-DlgOrder]
Count=0
[{AD0351DB-9DC0-4F95-96CC-60A946BD4086}-DlgOrder]
Count=0

[/xml]

Теперь собираем все в одной папке — SCADOffice.exe, 2 файла ответов setup.iss, uninstall.iss и копируем в сетевую папку для создания приложения в SCCM 2012 R2.

Создаем новое приложение Application — Manually specify the application information.

installshield_sccm2012r2_scad_4

Заполняем имя.

installshield_sccm2012r2_scad_5

Нажимаем Add.

installshield_sccm2012r2_scad_6

Инсталятор будем определять в ручном режиме, т.к. msi пакета у нас нет. Выбираем Manually specify the deployment type information.

installshield_sccm2012r2_scad_7

Опять имя.

installshield_sccm2012r2_scad_8

  • Content Location: ваш UNC путь до всех файлов
  • Установка: SCADOffice.exe /s /f1.\setup.iss
  • Удаление: SCADOffice.exe /s /f1.\uninstall.iss

/s — тихая установка, /f1 — путь до файла ответа

installshield_sccm2012r2_scad_20

После того как нажали Next, нам необходимо настроить правило определения, чтобы SCCM 2012 знал, что это приложение было установлено на устройстве, иначе AppEnforce.log нам выдаст ошибку. Здесь несколько способов, можно настроить записи реестре или проверку файловой системы.

installshield_sccm2012r2_scad_10

Нажимаем Browse и переходим в каталог, где у нас установлен SCAD Office. Определять будем по наличию исполняемого файла SCADX.exe. Если он есть, значит приложение установлено.

installshield_sccm2012r2_scad_11

Вы можете не выбирать каталог, а просто заполнить поля:

  • Type: File
  • Path: %ProgramFiles%\SCAD Office\32
  • File or folder name: SCADX.exe

Нажимаем OK.

installshield_sccm2012r2_scad_12

Установку производим на уровне системы.

installshield_sccm2012r2_scad_13

Ну вот наше приложение готово. Выполняем Distribute Content, чтобы доставить пакет на точку распространения и Deploy на коллекцию устройств.

Этот способ добавления подходит и для остальных приложений, т.е. вы можете добавлять *.exe пакеты в приложения (application) в SCCM 2012. Главное не забывать про метод определения.

installshield_sccm2012r2_scad_14

Переходим на клиента, открываем «Центр программного обеспечения» и видим наше приложение.

installshield_sccm2012r2_scad_21

Нажимаем установить и смотрим на клиенте AppEnforce.log

installshield_sccm2012r2_scad_22

installshield_sccm2012r2_scad_23

А вот с удалением все оказалось сложнее. Исполнение файла на клиенте из командной строки SCADOffice.exe /s /f1.\uninstall.iss не приводит к упеху, лог удаления содержит следующую ошибку: ResultCode = -3. Это говорит нам о том, что файл ответа не верный. Тогда я решил посмотреть, что находится в UninstallString в реестре по адресу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall. Находим поиском SCAD и видим значение UninstallString — «C:\Program Files\InstallShield Installation Information\{84FBB9B6-F13D-46C9-808F-517CB2AD513C}\setup.exe» -runfromtemp -l0x0419  -removeonly

Я подумал «бинго» и в свойствах приложения в SCCM, в поле удаления добавил %programfiles%\InstallShield Installation Information\{84FBB9B6-F13D-46C9-808F-517CB2AD513C}\setup.exe -runfromtemp -l0x0419  -removeonly -s /f1″\\sccm\soft\MSI_2014\scad final\uninstall.iss″

Удаление прошло успешно, но чтобы все закрепить, повторил процедуру установки/удаления, но удаление выдало ошибку. Каково же было мое удивление, когда я посмотрел UninstallString в реестре, он оказался другим, то есть при каждой установке InstallShield с пакетом SCAD Office генерирует новое значение UninstallString.

installshield_sccm2012r2_scad_25 installshield_sccm2012r2_scad_24

Можно использовать ключ /uninst, но он требует участие пользователя. Так что в этом случае, я бы обратился к разработчикам.

Все тесты проходили на Windows 8.1 x86, SCCM 2012 R2 CU2, SCAD Office 21.1.1.

20 КОММЕНТАРИИ

  1. Спасибо Антон. сейчас проделываю это в своей виртуальной среде.
    Вопрос : я так понял у вас возникли проблемы с распаковкой файла через команду extract_all
    странно сегодня проделал данную процедуру все прошло без ошибок.
    Скажите при каких обстоятельствах у вас выдается сообщение об ошибке 0х1001ab47
    Я сейчас хочу передать данную информацию разработчикам. Так же я понял что строка удаления всегда новая.

    • extract_all распаковывает нормально, даже setup.exe делает файлы ответа установки/удаления, но если мы поместим все это хозяйство в SCCM, то при установке из Software Center выдает такую ошибку, а вот если все тоже самое проделаем не распаковывая, а напрямую с OfficeScad.exe, то все ок.

  2. Антон,подскажите для чего вы меняли путь установки SCAD по умолчанию?
    Изначально программы ставится в корень диска С Scad Soft\Scad Office
    Сейчас пытаюсь установить все равно ошибка 255 программа создает папки и даже запускается но информации в реестре о ней нету.

  3. Сегодня целый день посветил данному вопросу. Но так ничего и не добился,единственно отличие я ставлю ПО на windows 7. Но сдвиг определенный есть конечно ПО ставится с ошибкой 255. в Установке Удаления программ его нету и в реестре тоже. Мне кажется что корявость установщика играет злую шутку с пользователями SCCM.

  4. Вот кое какая информация по установке.Это видео с ошибкой + лог
    Proccess Monitor
    http://1drv.ms/1vLN4gP
    Складывается впечатление что не хватает каких то обновление или компонентов для корректной установки. Моя тестовая система не обновлялась с августа месяца.
    Завтра продолжу тест в рабочей среде.

  5. Вот с теплотой, я вспоминаю, installshield, незаменимая вещь в работе ConfMan администратора, особенно, когда очень многт внутренних приложений. Хоть цена и космическая, но вполне оправданная.

  6. Вообще какая то мистика.
    Никак не получается через SCCM развернуть
    Поставил галку запускать процесс как 32 битный на 64 битных системах.
    Все равно ошибка
    При запуске команды из cmd под админом Scad ставится.
    Если вам интересно то вот ссылка с информацией http://1drv.ms/1IZG2tN
    Такое впечатление что Scad не хочет ставится под system account

  7. Тоже бился с данным ПО, размышлял насчет удаления. Наваял вот на ПОШе. Все базируется на свойстве приложения ContentID, благо он постоянный. И от него пляшем, чтобы не доставать uninstall.iss с шары а из кэша локально, попутно узнаем клятый рандомный guid по содержимому файла setup.ini

    $SCADContentID = " "
    $GetUninstall = New-Object -COM UIResource.UIResourceMgr
    $CacheList = $GetUninstall.GetCacheInfo().getcacheelements()
    foreach ($Cache in $CacheList) {
    if ($Cache.ContentId -like $SCADContentID) {
    $UninstalliSS = $Cache.location
    }
    }
    $GetSetupINI = Get-ChildItem 'C:\Program Files (x86)\InstallShield Installation Information\setup.ini' -Recurse
    foreach ($GetSetup in $GetSetupINI) {
    if ((Get-Content $GetSetup.fullname) -match 'Product=SCAD Office') {
    Start-Process "$($GetSetup.directory)\setup.exe" `
    -ArgumentList "-runfromtemp -l0x0419 -removeonly -s /f1'$Uninstalliss\uninstall.iss'"
    }
    }

  8. Засада всплыла: на машине где готовился файл-ответов *.iss был directx9 который идет в инсталляторе и во время прохождения инсталла вопроса про него не было, соотв. в файл ответов он не попал. На одной из тестовых машин сетап фэйлился с ошибкой «-3». Прогон в гуи выявил что идет вопрос о directx9 и понятно что его на машине нет. Видимо такое дело не устроило сетап и он фейлился не найдя в ответах нужный пункт а по факту prerequisites не позволяют ставить без directx судя по всему… =/

  9. У меня вообще мистика… Батник отрабатывает збс, через сццм все это дело как то плывет. Ставится долго, минут десять, выдает ошибку, то 255 то еще какую. Делал и с распаковкой и без нее… Чернуха… Куда копнуть можно??

Добавить комментарий для Alexandr Отменить ответ