Skip to content

Commit ff1e68e

Browse files
authored
Merge branch 'master' into uninstall-scope-check
2 parents 27e60bb + 5c88b96 commit ff1e68e

113 files changed

Lines changed: 2884 additions & 2717 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
---
2+
applyTo: "src/AppInstallerCLIE2ETests/Helpers/TestSetup.cs"
3+
---
4+
5+
# E2E test setup parameter documentation
6+
7+
When adding a new test parameter in `src/AppInstallerCLIE2ETests/Helpers/TestSetup.cs`, also update:
8+
9+
- `src/AppInstallerCLIE2ETests/README.md` to document that parameter.
10+
- `src/AppInstallerCLIE2ETests/Test.runsettings` to keep default run parameters and parameter names in sync.

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -288,6 +288,10 @@ node_modules/
288288
**/*.Server/ModelManifest.xml
289289
_Pvt_Extensions
290290

291+
# Local E2E test settings (developer-specific), keep the example one tracked
292+
*.runsettings
293+
!src/AppInstallerCLIE2ETests/Test.runsettings
294+
291295
# Paket dependency manager
292296
.paket/paket.exe
293297
paket-files/

azure-pipelines.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -348,7 +348,7 @@ jobs:
348348
- powershell: |
349349
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
350350
Install-Module Microsoft.WinGet.Client -Repository PSGallery -Force
351-
try { Repair-WingetPackageManager -Latest -Verbose } catch { $_.Exception }
351+
try { Repair-WingetPackageManager -Version 1.28.240 -Verbose } catch { $_.Exception }
352352
Install-WinGetPackage -Id Microsoft.Sysinternals.PsTools -Source winget
353353
displayName: Install Sysinternals PsTools Using Winget
354354
condition: succeededOrFailed()

doc/ReleaseNotes.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
## New in v1.29
1+
## New in v1.30
22

33
Nothing yet.
44

55
## Bug Fixes
66

7+
* Updated NUnit to v4
78
* Fixed a crash (`0x8000ffff`) when using `--disable-interactivity` with the Resume experimental feature enabled during install operations.

src/AppInstallerCLI/AppInstallerCLI.vcxproj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" />
3+
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.props')" />
44
<PropertyGroup Label="Globals">
55
<CppWinRTOptimized>true</CppWinRTOptimized>
66
<CppWinRTRootNamespaceAutoMerge>true</CppWinRTRootNamespaceAutoMerge>
@@ -247,13 +247,13 @@
247247
</ItemGroup>
248248
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
249249
<ImportGroup Label="ExtensionTargets">
250-
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets')" />
250+
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.targets')" />
251251
</ImportGroup>
252252
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
253253
<PropertyGroup>
254254
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
255255
</PropertyGroup>
256-
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props'))" />
257-
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets'))" />
256+
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.props'))" />
257+
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorText)', '$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.targets'))" />
258258
</Target>
259-
</Project>
259+
</Project>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" />
3+
<package id="Microsoft.Windows.CppWinRT" version="3.0.260520.1" targetFramework="native" />
44
</packages>

src/AppInstallerCLICore/AppInstallerCLICore.vcxproj

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<Project DefaultTargets="Build" ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
3-
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" />
3+
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.props" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.props')" />
44
<PropertyGroup Label="Globals">
55
<CppWinRTOptimized>true</CppWinRTOptimized>
66
<CppWinRTRootNamespaceAutoMerge>true</CppWinRTRootNamespaceAutoMerge>
@@ -480,15 +480,14 @@
480480
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
481481
<ImportGroup Label="ExtensionTargets">
482482
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.250325.1\build\native\Microsoft.Windows.ImplementationLibrary.targets" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.250325.1\build\native\Microsoft.Windows.ImplementationLibrary.targets')" />
483-
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets')" />
483+
<Import Project="$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.targets" Condition="Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.targets')" />
484484
</ImportGroup>
485485
<Target Name="EnsureBuildImports" BeforeTargets="PrepareForBuild">
486486
<PropertyGroup>
487487
<ErrorTextNuget>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorTextNuget>
488488
</PropertyGroup>
489489
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.250325.1\build\native\Microsoft.Windows.ImplementationLibrary.targets')" Text="$([System.String]::Format('$(ErrorTextNuget)', '$(SolutionDir)\packages\Microsoft.Windows.ImplementationLibrary.1.0.250325.1\build\native\Microsoft.Windows.ImplementationLibrary.targets'))" />
490-
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorTextNuget)', '$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.props'))" />
491-
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorTextNuget)', '$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.2.0.250303.1\build\native\Microsoft.Windows.CppWinRT.targets'))" />
490+
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.props')" Text="$([System.String]::Format('$(ErrorTextNuget)', '$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.props'))" />
491+
<Error Condition="!Exists('$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.targets')" Text="$([System.String]::Format('$(ErrorTextNuget)', '$(SolutionDir)\packages\Microsoft.Windows.CppWinRT.3.0.260520.1\build\native\Microsoft.Windows.CppWinRT.targets'))" />
492492
</Target>
493-
</Project>
494-
493+
</Project>

src/AppInstallerCLICore/PortableInstaller.cpp

Lines changed: 35 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -216,10 +216,27 @@ namespace AppInstaller::CLI::Portable
216216
{
217217
PortableIndex existingIndex = PortableIndex::Open(existingIndexPath.u8string(), SQLiteStorageBase::OpenDisposition::ReadWrite);
218218

219+
std::exception_ptr firstRemoveException;
219220
for (auto expectedEntry : m_expectedEntries)
220221
{
221-
RemoveFile(expectedEntry);
222-
existingIndex.RemovePortableFile(expectedEntry);
222+
try
223+
{
224+
RemoveFile(expectedEntry);
225+
existingIndex.RemovePortableFile(expectedEntry);
226+
}
227+
catch (...)
228+
{
229+
// Capture first failure but continue so that all entries (especially symlinks)
230+
// are cleaned up, preventing cascade failures in shared state like PATH.
231+
if (!firstRemoveException)
232+
{
233+
firstRemoveException = std::current_exception();
234+
}
235+
}
236+
}
237+
if (firstRemoveException)
238+
{
239+
std::rethrow_exception(firstRemoveException);
223240
}
224241

225242
deleteIndex = existingIndex.IsEmpty();
@@ -233,9 +250,24 @@ namespace AppInstaller::CLI::Portable
233250
}
234251
else
235252
{
253+
std::exception_ptr firstRemoveException;
236254
for (auto expectedEntry : m_expectedEntries)
237255
{
238-
RemoveFile(expectedEntry);
256+
try
257+
{
258+
RemoveFile(expectedEntry);
259+
}
260+
catch (...)
261+
{
262+
if (!firstRemoveException)
263+
{
264+
firstRemoveException = std::current_exception();
265+
}
266+
}
267+
}
268+
if (firstRemoveException)
269+
{
270+
std::rethrow_exception(firstRemoveException);
239271
}
240272
}
241273

src/AppInstallerCLICore/Workflows/InstallFlow.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -571,6 +571,17 @@ namespace AppInstaller::CLI::Workflow
571571
}
572572
else
573573
{
574+
if (context.Contains(Execution::Data::PackageVersion))
575+
{
576+
const auto& packageVersion = context.Get<Execution::Data::PackageVersion>();
577+
578+
if (packageVersion && packageVersion->GetSource().IsWellKnownSource(WellKnownSource::MicrosoftStore))
579+
{
580+
const auto& manifest = context.Get<Execution::Data::Manifest>();
581+
Logging::Telemetry().LogStoreInstall(manifest.Id);
582+
}
583+
}
584+
574585
if (isRepair)
575586
{
576587
context.Reporter.Info() << Resource::String::RepairFlowRepairSuccess << std::endl;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<packages>
3-
<package id="Microsoft.Windows.CppWinRT" version="2.0.250303.1" targetFramework="native" />
3+
<package id="Microsoft.Windows.CppWinRT" version="3.0.260520.1" targetFramework="native" />
44
<package id="Microsoft.Windows.ImplementationLibrary" version="1.0.250325.1" targetFramework="native" />
55
</packages>

0 commit comments

Comments
 (0)