func()

in packages/wua_windows.go [274:350]


func (c *IUpdateCollection) extractPkg(item int) (*WUAPackage, error) {
	updt, err := c.Item(item)
	if err != nil {
		return nil, err
	}
	defer updt.Release()

	title, err := updt.GetProperty("Title")
	if err != nil {
		return nil, fmt.Errorf(`updt.GetProperty("Title"): %v`, err)
	}

	description, err := updt.GetProperty("Description")
	if err != nil {
		return nil, fmt.Errorf(`updt.GetProperty("Description"): %v`, err)
	}

	kbArticleIDs, err := updt.kbaIDs()
	if err != nil {
		return nil, err
	}

	categories, categoryIDs, err := updt.categories()
	if err != nil {
		return nil, err
	}

	moreInfoURLs, err := updt.moreInfoURLs()
	if err != nil {
		return nil, err
	}

	supportURL, err := updt.GetProperty("SupportURL")
	if err != nil {
		return nil, fmt.Errorf(`updt.GetProperty("SupportURL"): %v`, err)
	}

	lastDeploymentChangeTimeRaw, err := updt.GetProperty("LastDeploymentChangeTime")
	if err != nil {
		return nil, fmt.Errorf(`updt.GetProperty("LastDeploymentChangeTime"): %v`, err)
	}

	lastDeploymentChangeTime, err := ole.GetVariantDate(uint64(lastDeploymentChangeTimeRaw.Val))
	if err != nil {
		return nil, fmt.Errorf(`ole.GetVariantDate(uint64(lastDeploymentChangeTimeRaw.Val)): %v`, err)
	}

	identityRaw, err := updt.GetProperty("Identity")
	if err != nil {
		return nil, fmt.Errorf(`updt.GetProperty("Identity"): %v`, err)
	}
	identity := identityRaw.ToIDispatch()
	defer identity.Release()

	revisionNumber, err := identity.GetProperty("RevisionNumber")
	if err != nil {
		return nil, fmt.Errorf(`identity.GetProperty("RevisionNumber"): %v`, err)
	}

	updateID, err := identity.GetProperty("UpdateID")
	if err != nil {
		return nil, fmt.Errorf(`identity.GetProperty("UpdateID"): %v`, err)
	}

	return &WUAPackage{
		Title:                    title.ToString(),
		Description:              description.ToString(),
		SupportURL:               supportURL.ToString(),
		KBArticleIDs:             kbArticleIDs,
		UpdateID:                 updateID.ToString(),
		Categories:               categories,
		CategoryIDs:              categoryIDs,
		MoreInfoURLs:             moreInfoURLs,
		RevisionNumber:           int32(revisionNumber.Val),
		LastDeploymentChangeTime: lastDeploymentChangeTime,
	}, nil
}