Skip to content

Project installer ReleaseDate in COM PackageInstallerInfo - #6627

Open
Disha Patel (dishahpatel) wants to merge 3 commits into
microsoft:masterfrom
dishahpatel:fix/release-date-projection
Open

Disha Patel (dishahpatel) wants to merge 3 commits into
microsoft:masterfrom
dishahpatel:fix/release-date-projection

Conversation

@dishahpatel

@dishahpatel Disha Patel (dishahpatel) commented Oct 27, 2026 •

Copy link
Copy Markdown

📖 Description

Exposes the installer manifest's optional ReleaseDate through the COM API. winget show already displays it, but COM callers had no way to read it.

  • Adds ReleaseDate to PackageInstallerInfo as Windows.Foundation.IReference<Windows.Foundation.DateTime>. The WindowsPackageManagerContract version is being incremented from 30 to 31 following this change.
  • A valid ISO 8601 date (YYYY-MM-DD) is returned as midnight UTC of that day. An ISO 8601 date and time (such as 2024-06-15T12:00:00Z), which some REST sources return, is also accepted, and the time is ignored.
  • The property is null when the manifest has no release date or the value isn't a valid date, instead of returning a placeholder DateTime. IReference matches existing optional properties such as CatalogPriority, and DateTime matches other date properties such as LastUpdateTime.
  • Adds a Utility::TryGetTimePointFromDate helper in AppInstallerSharedLib that parses the date with std::get_time and rejects years outside 1970–3000 and days that don't exist (such as 2023-02-29).

Limitation: the value is a date only, with no time of day or time zone, matching the manifest field.

🔗 References

Resolves #6626

🔍 Validation

  • Built AppInstallerCLI.sln (x64 Release) with no errors and no new warnings.
  • Unit tests: AppInstallerCLITests.exe [datetime] passes, including new TryGetTimePointFromDate cases for valid and leap-year dates, out-of-range year/month/day, malformed strings, and a trailing time portion.
  • Checked the generated C# projection: ReleaseDate is DateTimeOffset? under contract 31.
  • In-process interop E2E tests pass locally: GetApplicableInstaller returns 2024-06-15T00:00:00Z for a test manifest that declares ReleaseDate: 2024-06-15. These ran before the std::get_time review change; the COM getter is unchanged, and the unit tests cover the new parsing.

✅ Checklist

🤖 AI Assistance

  • AI assistance was used and has been disclosed in this PR
  • No AI assistance was used

📋 Issue Type

  • Bug fix
  • Feature
  • Task
Microsoft Reviewers: Open in CodeFlow

@dishahpatel
Disha Patel (dishahpatel) requested a review from a team as a code owner October 27, 2026 03:11
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

Comment thread src/AppInstallerSharedLib/DateTime.cpp
Comment thread src/AppInstallerSharedLib/Public/AppInstallerDateTime.h
@github-actions

This comment has been minimized.

@JohnMcPMS

Copy link
Copy Markdown
Member

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

COM API: PackageInstallerInfo does not expose the installer ReleaseDate

2 participants