Итак, дистрибутив «все в одном, ничего нажимать не надо» мы сделали. Теперь нужно довести автоматизацию до абсурда, то есть до такого состояния, когда при установке диска в привод все происходит полностью автоматически. Здесь уже не обойтись без программирования, зато предложенное решение будет не только устанавливать Office, Project и Visio, но и проверять их наличие на компьютере и не предпринимать лишних телодвижений, если что-то уже установлено. Для создания такого чудо-решения нужны только прямые руки и текстовый редактор
-
Все в той же папке c:\OfficeDis создаем файл setup.vbs следующего содержания:
const msiInstallStateAbsent = 2 const msiInstallStateAdvertised = 1 const msiInstallStateBadConfig = -6 const msiInstallStateBroken = 0 const msiInstallStateDefault = 5 const msiInstallStateIncomplete = -5 const msiInstallStateInvalidArg = -2 const msiInstallStateLocal = 3 const msiInstallStateNotUsed = -7 const msiInstallStateRemoved = 1 const msiInstallStateSource = 4 const msiInstallStateSourceAbsent = -4 const msiInstallStateUnknown = -1 bInstallOfficeEnt = false bInstallOfficePro = false bInstallVisioPro = false bInstallProjectPro = false Set oWI = CreateObject("WindowsInstaller.Installer") if oWI.ProductState("{90120000-0012-0000-0000-0000000FF1CE}") <> msiInstallStateDefault and _ oWI.ProductState("{90120000-0011-0000-0000-0000000FF1CE}") <> msiInstallStateDefault and _ oWI.ProductState("{90120000-0030-0000-0000-0000000FF1CE}") <> msiInstallStateDefault then ' WScript.Echo "Office 2007 not installed" bInstallOfficePro = true end if if oWI.ProductState("{90120000-0053-0000-0000-0000000FF1CE}") <> msiInstallStateDefault and _ oWI.ProductState("{90120000-0051-0000-0000-0000000FF1CE}") <> msiInstallStateDefault then ' WScript.Echo "Visio 2007 not installed" bInstallVisioPro = true end if if oWI.ProductState("{90120000-003A-0000-0000-0000000FF1CE}") <> msiInstallStateDefault and _ oWI.ProductState("{90120000-003B-0000-0000-0000000FF1CE}") <> msiInstallStateDefault then ' WScript.Echo "Project 2007 not installed" bInstallProjectPro = true end if set wShell = CreateObject("WScript.Shell") sSetupFolder = Replace(Wscript.ScriptFullName, Wscript.ScriptName, "") sSetupCmd = "" if bInstallOfficePro then WScript.Echo "Installing Office Professional Plus 2007..." sSetupCmd = sSetupFolder & "setup.exe /config """ & sSetupFolder & _ "ProPlus.WW\config.xml"" /adminfile """ & sSetupFolder & "Customize\OfficePro.MSP""" wShell.Run sSetupCmd, 1, True elseif bInstallOfficeEnt then WScript.Echo "Installing Office Enterprise 2007..." sSetupCmd = sSetupFolder & "setup.exe /config """ & sSetupFolder & _ "Enterprise.WW\config.xml"" /adminfile """ & sSetupFolder & "Customize\OfficeEnt.MSP""" wShell.Run sSetupCmd, 1, True end if if bInstallVisioPro then WScript.Echo "Installing Visio Professional 2007..." sSetupCmd = sSetupFolder & "setup.exe /config """ & sSetupFolder & _ "VisPro.WW\config.xml"" /adminfile """ & sSetupFolder & "Customize\Visio.MSP""" wShell.Run sSetupCmd, 1, True end if if bInstallProjectPro then WScript.Echo "Installing Project Professional 2007..." sSetupCmd = sSetupFolder & "setup.exe /config """ & sSetupFolder & _ "PrjPro.WW\config.xml"" /adminfile """ & sSetupFolder & "Customize\Project.MSP""" wShell.Run sSetupCmd, 1, True end if WScript.Echo "Complete."
Приведенный скрипт предполагает, что все кастомизированные msp файлы находятся в папке c:\OfficeDis\Customize и называются в соответствии с названиями продуктов: OfficePro.msp для Office Professional Plus, OfficeEnt.msp для Office Enterprise, Visio.msp для Visio Professional, Project.msp для Project Professional.
-
В папке c:\OfficeDis открываем файл autorun.inf и модифицируем его следующим образом (измененная строка выделена красным):
[autorun] OPEN=%systemroot%\system32\cscript.exe setup.vbs /B ICON=SETUP.EXE,0 shell\configure=&Configure... shell\configure\command=SETUP.EXE shell\install=&Install... shell\install\command=SETUP.EXE
-
Теперь содержимое папки можно записать на DVD и наслаждаться благами цивилизации