Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
На первую страницук этому сообщениюк последнему сообщению

Открыть новую тему     Написать ответ в эту тему

5peciali5t



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Dim oMsi,oFso,oWShell
 
Dim Patches,SumInfo
 
Dim patch,record,msp
 
Dim qView
 
Dim sTargetFolder,sMessage
 
Const OFFICEID = "000-0000000FF1CE}"
 
Const PRODUCTCODE_EMPTY = ""
 
Const MACHINESID = ""
 
Const MSIINSTALLCONTEXT_MACHINE = 4
 
Const MSIPATCHSTATE_APPLIED = 1
 
Const MSIOPENDATABASEMODE_PATCHFILE = 32
 
Const PID_SUBJECT = 3 'Displayname
 
Const PID_TEMPLATES = 7 'PatchTargets
 
Set oMsi = CreateObject("WindowsInstaller.Installer")
 
Set oFso = CreateObject("Scripting.FileSystemObject")
 
Set oWShell = CreateObject("Wscript.Shell")
 
'Create the target folder
 
sTargetFolder = oWShell.ExpandEnvironmentStrings("%TEMP%")&"\Updates"
 
If Not oFso.FolderExists(sTargetFolder) Then oFso.CreateFolder sTargetFolder
 
sMessage = "Patches are being copied to the %Temp%\Updates folder." & vbCrLf & "A Windows Explorer window will open after the script has run."
 
oWShell.Popup sMessage,20,"Office Patch Collector"
 
'Get all applied patches
 
Set Patches = oMsi.PatchesEx(PRODUCTCODE_EMPTY,MACHINESID,MSIINSTALLCONTEXT_MACHINE,MSIPATCHSTATE_APPLIED)
 
On Error Resume Next
 
'Enum the patches
 
For Each patch in Patches
 
   If Not Err = 0 Then Err.Clear
 
    'Connect to the patch file
 
    Set msp = oMsi.OpenDatabase(patch.PatchProperty("LocalPackage"),MSIOPENDATABASEMODE_PATCHFILE)
 
    Set SumInfo = msp.SummaryInformation
 
    If Err = 0 Then
 
        If InStr(SumInfo.Property(PID_TEMPLATES),OFFICEID)>0 Then
 
            'Get the original patch name
 
           Set qView = msp.OpenView("SELECT `Property`,`Value` FROM MsiPatchMetadata WHERE `Property`='StdPackageName'")
 
            qView.Execute : Set record = qView.Fetch()
 
            'Copy and rename the patch to the original file name
 
            oFso.CopyFile patch.PatchProperty("LocalPackage"),sTargetFolder&"\"&record.StringData(2),TRUE
 
        End If
 
    End If 'Err = 0
 
Next 'patch
 
oWShell.Run "explorer /e,"&chr(34)&sTargetFolder&chr(34)  

Всего записей: 1472 | Зарегистр. 17-07-2009 | Отправлено: 10:57 01-04-2018 | Исправлено: 5peciali5t, 11:17 01-04-2018
Открыть новую тему     Написать ответ в эту тему

На первую страницук этому сообщениюк последнему сообщению

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Программирование "удобняшек" на VBScript (Часть 2)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru