From f62117582cddef9f64ea76a37248348e75619903 Mon Sep 17 00:00:00 2001 From: Merrie McGaw Date: Tue, 7 Oct 2025 16:04:43 -0700 Subject: [PATCH 1/7] Adopt WiX v5 installer with deterministic upgrades --- Build.proj | 3 +- Directory.Build.props | 83 +++- Directory.Packages.props | 9 + WindowsDesktop.sln | 61 +++ azure-pipelines-PR.yml | 2 +- azure-pipelines.yml | 2 +- build-all-architectures.ps1 | 45 ++ build-sequential.cmd | 17 + build-sequential.ps1 | 72 ++++ eng/Versions.props | 15 + eng/pipelines/README.md | 28 ++ eng/pipelines/jobs/windows-build-PR.yml | 7 + eng/pipelines/jobs/windows-build.yml | 23 +- .../restore-runtime-prereqs.ps1 | 64 +++ global.json | 4 +- src/windowsdesktop/src/Directory.Build.props | 13 +- .../src/bundle/DotNetLogo_256x.png | Bin 0 -> 2154 bytes ...osoft.WindowsDesktop.App.Bundle.bundleproj | 58 --- src/windowsdesktop/src/bundle/Product.targets | 100 +++++ src/windowsdesktop/src/bundle/Wix.props | 38 ++ src/windowsdesktop/src/bundle/Wix.targets | 383 ++++++++++++++++++ src/windowsdesktop/src/bundle/bundle.thm | 222 +++++----- src/windowsdesktop/src/bundle/bundle.wixproj | 109 +++++ src/windowsdesktop/src/bundle/bundle.wxs | 241 +++++++++++ .../src/bundle/dotnet-packages.wxs | 106 +++++ src/windowsdesktop/src/bundle/dotnet.ico | Bin 0 -> 45150 bytes src/windowsdesktop/src/bundle/dummyeula.rtf | 7 + .../src/bundle/theme/1028/bundle.wxl | 151 ++++--- .../src/bundle/theme/1029/bundle.wxl | 150 ++++--- .../src/bundle/theme/1031/bundle.wxl | 151 ++++--- .../src/bundle/theme/1033/bundle.wxl | 150 +++---- .../src/bundle/theme/1036/bundle.wxl | 150 ++++--- .../src/bundle/theme/1040/bundle.wxl | 150 ++++--- .../src/bundle/theme/1041/bundle.wxl | 150 ++++--- .../src/bundle/theme/1042/bundle.wxl | 150 ++++--- .../src/bundle/theme/1045/bundle.wxl | 150 ++++--- .../src/bundle/theme/1046/bundle.wxl | 150 ++++--- .../src/bundle/theme/1049/bundle.wxl | 150 ++++--- .../src/bundle/theme/1055/bundle.wxl | 150 ++++--- .../src/bundle/theme/2052/bundle.wxl | 150 ++++--- .../src/bundle/theme/3082/bundle.wxl | 150 ++++--- ...crosoft.WindowsDesktop.App.Runtime.sfxproj | 18 + src/windowsdesktop/tests/scripts/README.md | 124 ++++++ .../tests/scripts/acquire-runtime-msis.ps1 | 48 +++ .../tests/scripts/make-dummy-runtime-msis.ps1 | 24 ++ 45 files changed, 2950 insertions(+), 1078 deletions(-) create mode 100644 WindowsDesktop.sln create mode 100644 build-all-architectures.ps1 create mode 100644 build-sequential.cmd create mode 100644 build-sequential.ps1 create mode 100644 eng/pipelines/README.md create mode 100644 eng/scripts/runtime-prereqs/restore-runtime-prereqs.ps1 create mode 100644 src/windowsdesktop/src/bundle/DotNetLogo_256x.png delete mode 100644 src/windowsdesktop/src/bundle/Microsoft.WindowsDesktop.App.Bundle.bundleproj create mode 100644 src/windowsdesktop/src/bundle/Product.targets create mode 100644 src/windowsdesktop/src/bundle/Wix.props create mode 100644 src/windowsdesktop/src/bundle/Wix.targets create mode 100644 src/windowsdesktop/src/bundle/bundle.wixproj create mode 100644 src/windowsdesktop/src/bundle/bundle.wxs create mode 100644 src/windowsdesktop/src/bundle/dotnet-packages.wxs create mode 100644 src/windowsdesktop/src/bundle/dotnet.ico create mode 100644 src/windowsdesktop/src/bundle/dummyeula.rtf create mode 100644 src/windowsdesktop/tests/scripts/README.md create mode 100644 src/windowsdesktop/tests/scripts/acquire-runtime-msis.ps1 create mode 100644 src/windowsdesktop/tests/scripts/make-dummy-runtime-msis.ps1 diff --git a/Build.proj b/Build.proj index 3e40bdb2f..f09a1e166 100644 --- a/Build.proj +++ b/Build.proj @@ -7,7 +7,8 @@ - + + diff --git a/Directory.Build.props b/Directory.Build.props index c695c0ace..a5edba5c3 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -1,8 +1,51 @@ - + + true + + + full + full + + + + false + 1 + + + true + false + + + true + + + true + true + + + true + false + 1 + 1 + + + false + 1 + + + + + + false + + + 600000 + 600000 + 600 + https://github.com/dotnet/windowsdesktop https://dot.net @@ -15,12 +58,16 @@ $(MSBuildThisFileDirectory)THIRD-PARTY-NOTICES.TXT https://go.microsoft.com/fwlink/?LinkID=799421 + + 4 true - x64 + + $(Platform) + x64 $(WarningsNotAsErrors);NU1901;NU1902;NU1903;NU1904 @@ -29,4 +76,36 @@ true + + https://builds.dotnet.microsoft.com/dotnet/ + + https://ci.dot.net/public/ + https://ci.dot.net/internal/ + + true + $(ArtifactsShippingPackagesDir) + + + + + + + + + $(DotnetRuntimeSourceFeedKey) + + + + + + + + + + diff --git a/Directory.Packages.props b/Directory.Packages.props index 693c34765..4b573c5b8 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -71,6 +71,15 @@ + + + + + + + + + diff --git a/WindowsDesktop.sln b/WindowsDesktop.sln new file mode 100644 index 000000000..6eb3d2233 --- /dev/null +++ b/WindowsDesktop.sln @@ -0,0 +1,61 @@ +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.5.2.0 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "eng", "eng", "{7525B257-249C-EE79-B10A-65D0BC27ABA9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "common", "common", "{C3C130B5-2C3F-D4B2-E3F3-EC385075C7AB}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tools", "eng\common\internal\Tools.csproj", "{4F21FD48-C11F-D5EF-ADE2-1691A92E45C5}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Microsoft.Windows.Compatibility", "Microsoft.Windows.Compatibility", "{292A50E1-7820-1638-6BA6-14FBE6B99F15}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "runtime.native.System.IO.Ports", "src\Microsoft.Windows.Compatibility\package\runtime.native.System.IO.Ports.csproj", "{E47F785E-FA7A-58A1-D296-8C8F02432E6F}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.Windows.Compatibility", "src\Microsoft.Windows.Compatibility\src\Microsoft.Windows.Compatibility.csproj", "{B4E26156-D23F-346E-920D-DB46A8C16C8E}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "windowsdesktop", "windowsdesktop", "{B1DEBE5E-C067-B350-5F22-0DD39AD9FFE8}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Microsoft.WindowsDesktop.App.Tests", "src\windowsdesktop\tests\Microsoft.WindowsDesktop.App.Tests.csproj", "{DDF86961-3AF2-FBA0-E08B-F367E1ABC517}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {4F21FD48-C11F-D5EF-ADE2-1691A92E45C5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {4F21FD48-C11F-D5EF-ADE2-1691A92E45C5}.Debug|Any CPU.Build.0 = Debug|Any CPU + {4F21FD48-C11F-D5EF-ADE2-1691A92E45C5}.Release|Any CPU.ActiveCfg = Release|Any CPU + {4F21FD48-C11F-D5EF-ADE2-1691A92E45C5}.Release|Any CPU.Build.0 = Release|Any CPU + {E47F785E-FA7A-58A1-D296-8C8F02432E6F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {E47F785E-FA7A-58A1-D296-8C8F02432E6F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {E47F785E-FA7A-58A1-D296-8C8F02432E6F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {E47F785E-FA7A-58A1-D296-8C8F02432E6F}.Release|Any CPU.Build.0 = Release|Any CPU + {B4E26156-D23F-346E-920D-DB46A8C16C8E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B4E26156-D23F-346E-920D-DB46A8C16C8E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B4E26156-D23F-346E-920D-DB46A8C16C8E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B4E26156-D23F-346E-920D-DB46A8C16C8E}.Release|Any CPU.Build.0 = Release|Any CPU + {DDF86961-3AF2-FBA0-E08B-F367E1ABC517}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DDF86961-3AF2-FBA0-E08B-F367E1ABC517}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DDF86961-3AF2-FBA0-E08B-F367E1ABC517}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DDF86961-3AF2-FBA0-E08B-F367E1ABC517}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {C3C130B5-2C3F-D4B2-E3F3-EC385075C7AB} = {7525B257-249C-EE79-B10A-65D0BC27ABA9} + {4F21FD48-C11F-D5EF-ADE2-1691A92E45C5} = {C3C130B5-2C3F-D4B2-E3F3-EC385075C7AB} + {292A50E1-7820-1638-6BA6-14FBE6B99F15} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} + {E47F785E-FA7A-58A1-D296-8C8F02432E6F} = {292A50E1-7820-1638-6BA6-14FBE6B99F15} + {B4E26156-D23F-346E-920D-DB46A8C16C8E} = {292A50E1-7820-1638-6BA6-14FBE6B99F15} + {B1DEBE5E-C067-B350-5F22-0DD39AD9FFE8} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B} + {DDF86961-3AF2-FBA0-E08B-F367E1ABC517} = {B1DEBE5E-C067-B350-5F22-0DD39AD9FFE8} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {B96CF507-B5D5-4809-9C1C-7948C55C80FB} + EndGlobalSection +EndGlobal diff --git a/azure-pipelines-PR.yml b/azure-pipelines-PR.yml index 98ae82ca1..277c14c38 100644 --- a/azure-pipelines-PR.yml +++ b/azure-pipelines-PR.yml @@ -28,7 +28,7 @@ variables: value: .NETCoreValidation # Produce test-signed build for PR and Public builds - - name: SignType + - name: _SignType value: test stages: diff --git a/azure-pipelines.yml b/azure-pipelines.yml index ee71b5f5b..ea81a703d 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -32,7 +32,7 @@ variables: value: .NETCoreValidation # Produce test-signed build for PR and Public builds -- name: SignType +- name: _SignType value: $[ coalesce(variables.OfficialSignType, 'real') ] resources: diff --git a/build-all-architectures.ps1 b/build-all-architectures.ps1 new file mode 100644 index 000000000..06cb46f76 --- /dev/null +++ b/build-all-architectures.ps1 @@ -0,0 +1,45 @@ +#!/usr/bin/env pwsh + +param( + [string]$target = "Build", + [Parameter(ValueFromRemainingArguments = $true)] + [string[]]$args +) + +Write-Host "Building Windows Desktop Runtime for all architectures..." + +$architectures = @("x86", "x64", "arm64") +$failed = @() + +if ($target -eq "pack") { + $target = "Build" # The 'Pack' target is part of the 'Build' target in Build.proj +} + +$extraArgs = $args -join " " + +foreach ($arch in $architectures) { + Write-Host "Building for architecture: $arch" -ForegroundColor Green + + # Build the main projects with specific architecture + $command = "dotnet build Build.proj -t:$target -c Release -p:Platform=$arch -p:TargetArchitecture=$arch $extraArgs" + Write-Host "Executing: $command" + Invoke-Expression -Command $command + + if ($LASTEXITCODE -ne 0) { + $failed += $arch + Write-Host "Failed to build $arch architecture" -ForegroundColor Red + } else { + Write-Host "Successfully built $arch architecture" -ForegroundColor Green + } +} + +if ($failed.Count -gt 0) { + Write-Host "Failed architectures: $($failed -join ', ')" -ForegroundColor Red + exit 1 +} else { + Write-Host "All architectures built successfully!" -ForegroundColor Green + + # Show the results + Write-Host "`nGenerated installers:" -ForegroundColor Yellow + Get-ChildItem -Path artifacts -Recurse -Filter "windowsdesktop-runtime-*-win-*.exe" -ErrorAction SilentlyContinue | Select-Object Name, FullName +} \ No newline at end of file diff --git a/build-sequential.cmd b/build-sequential.cmd new file mode 100644 index 000000000..d715f885c --- /dev/null +++ b/build-sequential.cmd @@ -0,0 +1,17 @@ +@echo off +setlocal + +echo Cleaning up any existing build processes... +for /f "tokens=2" %%i in ('tasklist /fi "imagename eq dotnet.exe" /fo table /nh 2^>nul ^| findstr /i "WindowsDesktop"') do ( + echo Killing process %%i + taskkill /f /pid %%i >nul 2>&1 +) + +echo Starting sequential build... +powershell -ExecutionPolicy ByPass -NoProfile -command "& """%~dp0eng\common\Build.ps1""" -nodeReuse:$false -maxCpuCount:1 -restore -build %*" + +echo Build completed. Cleaning up any remaining processes... +for /f "tokens=2" %%i in ('tasklist /fi "imagename eq dotnet.exe" /fo table /nh 2^>nul ^| findstr /i "WindowsDesktop"') do ( + echo Killing remaining process %%i + taskkill /f /pid %%i >nul 2>&1 +) \ No newline at end of file diff --git a/build-sequential.ps1 b/build-sequential.ps1 new file mode 100644 index 000000000..578a817ae --- /dev/null +++ b/build-sequential.ps1 @@ -0,0 +1,72 @@ +[CmdletBinding()] +param( + [switch]$restore, + [switch]$build, + [switch]$clean, + [string]$configuration = "Debug", + [Parameter(ValueFromRemainingArguments=$true)] + [string[]]$RemainingArgs = @() +) + +function Stop-WindowsDesktopProcesses { + Write-Host "Cleaning up WindowsDesktop build processes..." -ForegroundColor Yellow + + $processes = Get-Process | Where-Object { + $_.ProcessName -eq "dotnet" -and + $_.Path -like "*WindowsDesktop*" + } + + if ($processes) { + $processes | ForEach-Object { + Write-Host " Stopping process $($_.Id) ($($_.ProcessName))" -ForegroundColor Gray + try { + Stop-Process -Id $_.Id -Force -ErrorAction SilentlyContinue + } catch { + Write-Warning "Failed to stop process $($_.Id): $_" + } + } + Start-Sleep -Seconds 2 + } else { + Write-Host " No WindowsDesktop processes found." -ForegroundColor Gray + } +} + + + +# Main execution +try { + # Clean up any existing processes + Stop-WindowsDesktopProcesses + + # Prepare arguments for Build.ps1 + $buildArguments = @() + if ($restore) { $buildArguments += '-restore' } + if ($build) { $buildArguments += '-build' } + if ($clean) { $buildArguments += '-clean' } + if ($configuration) { + $buildArguments += '-configuration' + $buildArguments += $configuration + } + $buildArguments += $RemainingArgs + + Write-Host "Starting sequential build with single CPU..." -ForegroundColor Green + Write-Host "Arguments: $($buildArguments -join ' ')" -ForegroundColor Gray + + # Run the build with sequential settings + try { + & "$PSScriptRoot\eng\common\Build.ps1" -nodeReuse $false @buildArguments "/maxcpucount:1" + $exitCode = $LASTEXITCODE + } catch { + Write-Error "Build failed: $_" + $exitCode = 1 + } + + Write-Host "`nBuild completed with exit code: $exitCode" -ForegroundColor $(if ($exitCode -eq 0) { 'Green' } else { 'Red' }) + +} finally { + # Always clean up processes after build + Write-Host "`nCleaning up processes after build..." -ForegroundColor Yellow + Stop-WindowsDesktopProcesses +} + +exit $exitCode \ No newline at end of file diff --git a/eng/Versions.props b/eng/Versions.props index cd627b7ba..6592b3dbc 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -32,5 +32,20 @@ 5.0.0 8.1.2 + + 5.0.2-dotnet.2737382 + + + 5.0.2-dotnet.2737382 + 5.0.2-dotnet.2737382 + 5.0.2-dotnet.2737382 + 5.0.2-dotnet.2737382 + 5.0.2-dotnet.2737382 + 5.0.2-dotnet.2737382 + + + $(MicrosoftNETCoreAppRefVersion) + $(MicrosoftNETCoreAppRefVersion) + diff --git a/eng/pipelines/README.md b/eng/pipelines/README.md new file mode 100644 index 000000000..5f3e891c9 --- /dev/null +++ b/eng/pipelines/README.md @@ -0,0 +1,28 @@ +# Pipeline Notes + +This directory contains templates that compose the main Azure DevOps pipeline for WindowsDesktop. + +## Runtime MSI Acquisition + +The WiX bundle build depends on three runtime prerequisite MSIs being present under `artifacts/prereqs/`. Historically these were staged manually, but the CI pipeline now prepares them automatically before MSBuild executes. + +Each architecture job defined in `jobs/windows-build.yml` performs the following steps prior to invoking `eng/common/cibuild.cmd`: + +1. Import the internal runtime feed credentials via the `enable-internal-runtimes.yml` template, which retrieves the `dotnetbuilds-internal-container-read-token` SAS secret. +2. Pass the runtime source feed and token to Arcade (`-RuntimeSourceFeed` / `-RuntimeSourceFeedKey` and their MSBuild equivalents) so that `eng/common/build.ps1` downloads the required runtime packs on-demand. +3. Allow the bundle build to normalize the host/hostfxr/runtime MSIs into `artifacts/prereqs/` as part of the existing `StagePrereqRuntimeMsis` target execution. + +During the WiX build, the `StagePrereqRuntimeMsis` target (in `src/windowsdesktop/src/bundle/Wix.targets`) detects these staged files and sets `IncludeRuntimeMSIs=true`, ensuring the bundle carries the latest runtime from Maestro. + +### Local Repro + +To emulate the CI behavior locally: + +```powershell +$token = '' +pwsh eng/common/build.ps1 -restore -build -pack -runtimeSourceFeed "https://ci.dot.net/internal" -runtimeSourceFeedKey $token +``` + +The command above mirrors the CI configuration by pointing Arcade at the internal runtime feed. Provide a base64-encoded SAS token with read permissions (matching the `dotnetbuilds-internal` secret) and repeat per architecture if needed using `/p:TargetArchitecture=`. + +Maintain this document if additional preparatory stages are introduced so build orchestration remains discoverable. diff --git a/eng/pipelines/jobs/windows-build-PR.yml b/eng/pipelines/jobs/windows-build-PR.yml index 42b44f4a1..e0c01efbe 100644 --- a/eng/pipelines/jobs/windows-build-PR.yml +++ b/eng/pipelines/jobs/windows-build-PR.yml @@ -42,6 +42,13 @@ jobs: steps: - template: /eng/common/templates/steps/enable-internal-sources.yml + - pwsh: >- + $(Build.SourcesDirectory)\eng\scripts\runtime-prereqs\restore-runtime-prereqs.ps1 + -Architectures $(TargetArchitecture) + -CI + displayName: Restore runtime prerequisite MSIs + condition: ne(variables['TargetArchitecture'], '') + - ${{ if ne(variables['System.TeamProject'], 'public') }}: - task: MicroBuildSigningPlugin@4 displayName: Install MicroBuild plugin for Signing diff --git a/eng/pipelines/jobs/windows-build.yml b/eng/pipelines/jobs/windows-build.yml index 90563d970..5371618b6 100644 --- a/eng/pipelines/jobs/windows-build.yml +++ b/eng/pipelines/jobs/windows-build.yml @@ -24,9 +24,15 @@ jobs: /p:TargetArchitecture=${{ parameters.targetArchitecture }} /p:SkipTests=${{ parameters.skipTests }} - name: MsbuildSigningArguments - value: /p:DotNetSignType=$(SignType) + value: /p:DotNetSignType=$(_SignType) - name: TargetArchitecture value: ${{ parameters.targetArchitecture }} + - name: InternalRuntimeDownloadArgs + value: >- + -RuntimeSourceFeed https://ci.dot.net/internal + -RuntimeSourceFeedKey $(dotnetbuilds-internal-container-read-token-base64) + /p:DotNetRuntimeSourceFeed=https://ci.dot.net/internal + /p:DotNetRuntimeSourceFeedKey=$(dotnetbuilds-internal-container-read-token-base64) templateContext: outputs: @@ -37,6 +43,14 @@ jobs: artifactName: Logs-${{ parameters.name }}-$(_BuildConfig) steps: - template: /eng/common/templates-official/steps/enable-internal-sources.yml + - template: /eng/common/templates-official/steps/enable-internal-runtimes.yml + + - pwsh: >- + $(Build.SourcesDirectory)\eng\scripts\runtime-prereqs\restore-runtime-prereqs.ps1 + -Architectures $(TargetArchitecture) + -CI + displayName: Restore runtime prerequisite MSIs + condition: ne(variables['TargetArchitecture'], '') - task: MicroBuildSigningPlugin@4 displayName: Install MicroBuild plugin for Signing @@ -47,10 +61,17 @@ jobs: continueOnError: false condition: and(succeeded(), in(variables['SignType'], 'real', 'test')) + - template: /eng/common/core-templates/steps/install-microbuild.yml + parameters: + enableMicrobuild: true + microbuildUseESRP: true + continueOnError: false + - script: >- eng/common/cibuild.cmd $(CommonMSBuildArgs) $(MsbuildSigningArguments) + $(InternalRuntimeDownloadArgs) displayName: Build # Generate SBOM diff --git a/eng/scripts/runtime-prereqs/restore-runtime-prereqs.ps1 b/eng/scripts/runtime-prereqs/restore-runtime-prereqs.ps1 new file mode 100644 index 000000000..5125cee47 --- /dev/null +++ b/eng/scripts/runtime-prereqs/restore-runtime-prereqs.ps1 @@ -0,0 +1,64 @@ +[CmdletBinding(PositionalBinding=$false)] +param( + [string[]]$Architectures = @('x64', 'x86', 'arm64'), + [string]$Configuration, + [string[]]$MsbuildArgs = @(), + [switch]$VerboseLogging, + [switch]$CI +) + +$ErrorActionPreference = 'Stop' +$repoRoot = Resolve-Path (Join-Path $PSScriptRoot '..' '..' '..') +$msbuildScript = Join-Path $repoRoot 'eng' 'common' 'msbuild.ps1' +$bundleProject = Join-Path $repoRoot 'src' 'windowsdesktop' 'src' 'bundle' 'bundle.wixproj' + +if (-not (Test-Path $msbuildScript)) { + throw "Unable to locate msbuild.ps1 at '$msbuildScript'" +} + +if (-not (Test-Path $bundleProject)) { + throw "Unable to locate bundle project at '$bundleProject'" +} + +$architectures = $Architectures | Where-Object { $_ -and $_.Trim() } | ForEach-Object { $_.Trim().ToLowerInvariant() } | Select-Object -Unique +if (-not $architectures) { + throw 'At least one architecture must be supplied.' +} + +foreach ($arch in $architectures) { + Write-Host "[restore-runtime-prereqs] Staging runtime MSIs for architecture '$arch'" + + $msbuildArguments = @('-restore', '/t:RestoreRuntimePrereqs', "/p:TargetArchitecture=$arch") + if ($Configuration) { + $msbuildArguments += "/p:Configuration=$Configuration" + } + if ($VerboseLogging) { + $msbuildArguments += '/v:normal' + } + if ($MsbuildArgs) { + $msbuildArguments += $MsbuildArgs + } + $msbuildArguments += $bundleProject + + & $msbuildScript -warnAsError:$false -nodeReuse:$false -ci:$CI @msbuildArguments + if ($LASTEXITCODE -ne 0) { + throw "RestoreRuntimePrereqs failed for architecture '$arch'" + } + + $prereqDir = Join-Path $repoRoot "artifacts/prereqs/$arch" + if (Test-Path $prereqDir) { + Write-Host "[restore-runtime-prereqs] Contents of ${prereqDir}:" -ForegroundColor Cyan + $msis = Get-ChildItem -Path $prereqDir -Filter "dotnet-*-win-$arch*.msi" -ErrorAction SilentlyContinue | Sort-Object Name + if ($msis) { + $msis | ForEach-Object { Write-Host " $_" } + } + else { + Write-Host " (no runtime MSI files were found in the staging directory)" + } + + $resolved = Join-Path $prereqDir 'resolved-runtime-version.txt' + if (Test-Path $resolved) { + Write-Host " $(Get-Content $resolved -ErrorAction SilentlyContinue)" + } + } +} diff --git a/global.json b/global.json index b857fda8a..38fd172eb 100644 --- a/global.json +++ b/global.json @@ -19,8 +19,10 @@ }, "msbuild-sdks": { "Microsoft.DotNet.Arcade.Sdk": "10.0.0-beta.25507.103", + "Microsoft.DotNet.Helix.Sdk": "10.0.0-beta.25507.103", "Microsoft.DotNet.SharedFramework.Sdk": "10.0.0-beta.25507.103", "Microsoft.Build.NoTargets": "3.7.0", - "Microsoft.Build.Traversal": "3.4.0" + "Microsoft.Build.Traversal": "3.4.0", + "Microsoft.WixToolset.Sdk": "5.0.2-dotnet.2737382" } } diff --git a/src/windowsdesktop/src/Directory.Build.props b/src/windowsdesktop/src/Directory.Build.props index ea1aa10d0..0a6fdf943 100644 --- a/src/windowsdesktop/src/Directory.Build.props +++ b/src/windowsdesktop/src/Directory.Build.props @@ -8,11 +8,22 @@ - win-$(TargetArchitecture) + + + win-$(TargetArchitecture) + + true + + + + + + diff --git a/src/windowsdesktop/src/bundle/DotNetLogo_256x.png b/src/windowsdesktop/src/bundle/DotNetLogo_256x.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff052f8302a4b7f87cd646c4534d7559e282574 GIT binary patch literal 2154 zcmeHJ>pL4*8b66hgl465N~FZO1uiLq z5s%!A(qL)#>XOdO_GgD#HYQlQRjDrDV@MNSoYQ*ZSpf)RbP%vB0p1u0iwp%K82B0q zVCKNc0ic8bNc>KTHsv*&(^QzWU6_BKA>j&j+9%mBpRYNPR`c0X!XrEqSfXmERz!}+*5Y^>L&&8P~qpc2t;rhxNkat zL%8#--ne!@iyp^Z3HZEg?H)7`Ca*k|o4fa_Y~(b7E^aDn+a z*(y#QUw6ZslDy2$zqV?~x{2Yg$8&?Rrh& z`VL;$I7J1U^RlM0v)BsM)FE7lU4Ur`tf$^aXCa-V>aKGj8#lmgJ=1QHiy|N?Se6%> zTTPJZX%>H9>}{UDsIkiN2`MzADsf5;S_^P?XUe(M7~X(6prUUIW3#) z{9CcJwe})APa>KzR*OIG^P0JXoa6v~&07HPBRFs_o1+n%3RZd96vY2Kp zxKfm+Z`O=;Q%Ut6b5-amM-@Y9EYLoBHF$~&)S=*fLt_6X>S5S(NPD}x6{c&UcU-Qh z&cw?9WnmijKAcq3<<|8wqgi1|vx+*l=6R?B?5n}}&s>Cb!W6D8|>w$RC22TwIY zqzdDMH5o`uUMH!5jUvY(`|c|1yvOG9BydbCj2zG`&b##Ip(AFj{q2X$TSx`dI9B#i zaFmy>8qo{x1hEV+a~^yS$E3l?`(|z<={=TeUocdA2Z=k&MRV+a#-mxTsr2JyEGyd% zB#!?#aA0c$?(zPxB@SYFR8Pe>;C6JGt72{%SS7nTLNSm_l^!uJhVw2ME4`zUw`z^B z;TEtr&BPKzNXgw3_OmoBNcIB`4U&TwFedJE=vVUo8zTFuh$Q_R&y7$RoU9+nTq@x? zN)`*b!^z^bq7^B;{IksVK7463PgjmxN~^A#7A<(3x>Ku&E*l>pvcn?cVUM{zN zbA)Lh264q!^&QvR{ATL%;H5s{^WjO?1kz>qutzqmmFB(so!GPuO5|=o38&Wsrw=AX zZcI+99tcykwFxD)jfjVmP~KV3B;f=nY`A0EXP-l=!{31>*DWM+@XZS6`m - - - Windows Desktop Shared Framework Bundle Installer - win-x64;win-x86;win-arm64 - $(MSBuildProjectDirectory) - windowsdesktop-runtime - Runtime - - - - - - - - - - <_RuntimeIdentifierForNETCoreMsiRestore Include="$(RuntimeIdentifiers)" /> - - - - - - - - - - - - - - - - - - - - - <_BundledComponents - Include="@(NETCoreAppInstallerMsiRID -> '%(CacheDir)%(MsiFileName)')" - Condition="'$(RuntimeIdentifier)' == '%(Identity)'" /> - - - - diff --git a/src/windowsdesktop/src/bundle/Product.targets b/src/windowsdesktop/src/bundle/Product.targets new file mode 100644 index 000000000..890053832 --- /dev/null +++ b/src/windowsdesktop/src/bundle/Product.targets @@ -0,0 +1,100 @@ + + + $(IntermediateOutputPath)d\ + $(BaseIntermediateOutputPath) + $(DefineConstants);DepsPath=$(DepsPath) + $(DefineConstants);InstallersOutputPath=$(InstallersOutputPath) + + + + + DotNetRedistLtsInstaller + + + DotNetRedistHostInstaller + + + DotNetRedistHostfxrInstaller + + + + + + DotNetRedistLtsInstaller + + + DotNetRedistHostInstaller + + + DotNetRedistHostfxrInstaller + + + + + + DotNetRedistLtsInstaller + + + DotNetRedistHostInstaller + + + DotNetRedistHostfxrInstaller + + + + + + + + + dotnet-runtime-$(MicrosoftNETCoreAppRefVersion)-win-$(TargetArchitecture).msi + dotnet-runtime-win-$(TargetArchitecture).msi + + + dotnet-host-$(MicrosoftNETCoreAppRefVersion)-win-$(TargetArchitecture).msi + dotnet-host-win-$(TargetArchitecture).msi + + + dotnet-hostfxr-$(MicrosoftNETCoreAppRefVersion)-win-$(TargetArchitecture).msi + dotnet-hostfxr-win-$(TargetArchitecture).msi + + + + + + + + + + + <_CurrentRemoteAsset>%(RemoteAsset.Identity) + + + + + + + + + + + + + + + + + $(DefineConstants);DotNetRedistLtsInstaller=$(DepsPath)$(DotNetRedistLtsInstaller) + $(DefineConstants);DotNetRedistHostInstaller=$(DepsPath)$(DotNetRedistHostInstaller) + $(DefineConstants);DotNetRedistHostfxrInstaller=$(DepsPath)$(DotNetRedistHostfxrInstaller) + true + + + diff --git a/src/windowsdesktop/src/bundle/Wix.props b/src/windowsdesktop/src/bundle/Wix.props new file mode 100644 index 000000000..8c5af3625 --- /dev/null +++ b/src/windowsdesktop/src/bundle/Wix.props @@ -0,0 +1,38 @@ + + + Release + x64 + ENU + en-US + + + + + ICE61 + 1033 + + full + + + + false + + E1FD1271-E0F0-4B8B-B4BE-01F2EBA58F4E + + + + $(DefineConstants);files=$(MSBuildThisFileDirectory)files + $(DefineConstants);Culture=$(Cultures) + + + + + + $(ArtifactsObjDir)/WixCommandPackages + + $(InstallersOutputPath) + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/Wix.targets b/src/windowsdesktop/src/bundle/Wix.targets new file mode 100644 index 000000000..843199599 --- /dev/null +++ b/src/windowsdesktop/src/bundle/Wix.targets @@ -0,0 +1,383 @@ + + + + + + + + $(ArtifactsRoot)prereqs\$(TargetArchitecture)\ + $(MSBuildThisFileDirectory)..\..\..\..\artifacts\prereqs\$(TargetArchitecture)\ + $(BaseIntermediateOutputPath)runtime-prereqs\$(TargetArchitecture)\ + + + + + dotnet-host-$(MicrosoftNETCoreAppRefVersion)-win-$(TargetArchitecture).msi + dotnet-host-win-$(TargetArchitecture).msi + Host + $(RuntimePrereqDownloadDirectory)%(TargetFilename) + $(RuntimePrereqStageDirectory)%(StageFilename) + + + dotnet-hostfxr-$(MicrosoftNETCoreAppRefVersion)-win-$(TargetArchitecture).msi + dotnet-hostfxr-win-$(TargetArchitecture).msi + HostFxr + $(RuntimePrereqDownloadDirectory)%(TargetFilename) + $(RuntimePrereqStageDirectory)%(StageFilename) + + + dotnet-runtime-$(MicrosoftNETCoreAppRefVersion)-win-$(TargetArchitecture).msi + dotnet-runtime-win-$(TargetArchitecture).msi + Runtime + $(RuntimePrereqDownloadDirectory)%(TargetFilename) + $(RuntimePrereqStageDirectory)%(StageFilename) + + + + + + %(RemoteAsset.TargetFileName) + + + %(RemoteAsset.Filename)%(RemoteAsset.Extension) + + + %(RemoteAsset.TargetFilename) + + + $(RuntimePrereqDownloadDirectory)%(RemoteAsset.TargetFilename) + + + $(RuntimePrereqStageDirectory)%(RemoteAsset.StageFilename) + + + + + + + + + + <_CurrentRemoteAsset>%(RemoteAsset.Identity) + <_CurrentDestination>%(RemoteAsset.DownloadDestination) + + + + + + + + + + + + + + $(ArtifactsRoot)prereqs\$(TargetArchitecture)\ + $(MSBuildThisFileDirectory)..\..\..\..\artifacts\prereqs\$(TargetArchitecture)\ + $(BaseIntermediateOutputPath)runtime-prereqs\$(TargetArchitecture)\ + <_TransportPackageRoot>$(PkgMicrosoft_Internal_Runtime_WindowsDesktop_Transport) + + + + + + <_DownloadedRuntime Include="@(RemoteAsset)" Condition="Exists('%(DownloadDestination)')"> + %(DownloadDestination) + + + + + <_TransportAsset Include="@(RemoteAsset->'$(_TransportPackageRoot)**\%(TargetFilename)')"> + %(RemoteAsset.AssetKind) + %(RemoteAsset.StageDestination) + %(RemoteAsset.DownloadDestination) + %(FullPath) + + <_TransportAsset Remove="@(_TransportAsset)" Condition="!Exists('%(ResolvedSource)')" /> + + + + <_RuntimeSource Include="@(_DownloadedRuntime)" /> + <_RuntimeSource Include="@(_TransportAsset)" Condition="!Exists('%(DownloadDestination)')" /> + + + + + + <_StagedHost Include="$(RuntimePrereqStageDirectory)dotnet-host-win-$(TargetArchitecture).msi" Condition="Exists('$(RuntimePrereqStageDirectory)dotnet-host-win-$(TargetArchitecture).msi')" /> + <_StagedHostFxr Include="$(RuntimePrereqStageDirectory)dotnet-hostfxr-win-$(TargetArchitecture).msi" Condition="Exists('$(RuntimePrereqStageDirectory)dotnet-hostfxr-win-$(TargetArchitecture).msi')" /> + <_StagedRuntime Include="$(RuntimePrereqStageDirectory)dotnet-runtime-win-$(TargetArchitecture).msi" Condition="Exists('$(RuntimePrereqStageDirectory)dotnet-runtime-win-$(TargetArchitecture).msi')" /> + + + + + + + + + + + + + + + + + + + <_PrereqSearchPath1>$(ArtifactsRoot)prereqs\$(TargetArchitecture)\ + <_PrereqSearchPath1 Condition="'$(ArtifactsRoot)'==''">$(MSBuildThisFileDirectory)..\..\..\..\artifacts\prereqs\$(TargetArchitecture)\ + + + <_PrereqSearchPath2>$(ArtifactsPackagesDir)Shipping\ + <_PrereqSearchPath2 Condition="'$(ArtifactsPackagesDir)'==''">$(MSBuildThisFileDirectory)..\..\..\..\artifacts\packages\Shipping\ + + + <_PrereqSearchPath3>$(ArtifactsPackagesDir)Debug\Shipping\ + <_PrereqSearchPath3 Condition="'$(ArtifactsPackagesDir)'==''">$(MSBuildThisFileDirectory)..\..\..\..\artifacts\packages\Debug\Shipping\ + + + <_PrereqSearchPath4>$(ArtifactsRoot)bin\$(TargetArchitecture)\ + <_PrereqSearchPath4 Condition="'$(ArtifactsRoot)'==''">$(MSBuildThisFileDirectory)..\..\..\..\artifacts\bin\$(TargetArchitecture)\ + + + + + + <_PrereqHost Include="$(_PrereqSearchPath1)dotnet-host-win-$(TargetArchitecture).msi" Condition="Exists('$(_PrereqSearchPath1)dotnet-host-win-$(TargetArchitecture).msi')" /> + <_PrereqHost Include="$(_PrereqSearchPath2)dotnet-host-win-$(TargetArchitecture).msi" Condition="'@(_PrereqHost)'=='' AND Exists('$(_PrereqSearchPath2)dotnet-host-win-$(TargetArchitecture).msi')" /> + <_PrereqHost Include="$(_PrereqSearchPath3)dotnet-host-win-$(TargetArchitecture).msi" Condition="'@(_PrereqHost)'=='' AND Exists('$(_PrereqSearchPath3)dotnet-host-win-$(TargetArchitecture).msi')" /> + <_PrereqHost Include="$(_PrereqSearchPath4)dotnet-host-win-$(TargetArchitecture).msi" Condition="'@(_PrereqHost)'=='' AND Exists('$(_PrereqSearchPath4)dotnet-host-win-$(TargetArchitecture).msi')" /> + + <_PrereqHostFxr Include="$(_PrereqSearchPath1)dotnet-hostfxr-win-$(TargetArchitecture).msi" Condition="Exists('$(_PrereqSearchPath1)dotnet-hostfxr-win-$(TargetArchitecture).msi')" /> + <_PrereqHostFxr Include="$(_PrereqSearchPath2)dotnet-hostfxr-win-$(TargetArchitecture).msi" Condition="'@(_PrereqHostFxr)'=='' AND Exists('$(_PrereqSearchPath2)dotnet-hostfxr-win-$(TargetArchitecture).msi')" /> + <_PrereqHostFxr Include="$(_PrereqSearchPath3)dotnet-hostfxr-win-$(TargetArchitecture).msi" Condition="'@(_PrereqHostFxr)'=='' AND Exists('$(_PrereqSearchPath3)dotnet-hostfxr-win-$(TargetArchitecture).msi')" /> + <_PrereqHostFxr Include="$(_PrereqSearchPath4)dotnet-hostfxr-win-$(TargetArchitecture).msi" Condition="'@(_PrereqHostFxr)'=='' AND Exists('$(_PrereqSearchPath4)dotnet-hostfxr-win-$(TargetArchitecture).msi')" /> + + <_PrereqRuntime Include="$(_PrereqSearchPath1)dotnet-runtime-win-$(TargetArchitecture).msi" Condition="Exists('$(_PrereqSearchPath1)dotnet-runtime-win-$(TargetArchitecture).msi')" /> + <_PrereqRuntime Include="$(_PrereqSearchPath2)dotnet-runtime-win-$(TargetArchitecture).msi" Condition="'@(_PrereqRuntime)'=='' AND Exists('$(_PrereqSearchPath2)dotnet-runtime-win-$(TargetArchitecture).msi')" /> + <_PrereqRuntime Include="$(_PrereqSearchPath3)dotnet-runtime-win-$(TargetArchitecture).msi" Condition="'@(_PrereqRuntime)'=='' AND Exists('$(_PrereqSearchPath3)dotnet-runtime-win-$(TargetArchitecture).msi')" /> + <_PrereqRuntime Include="$(_PrereqSearchPath4)dotnet-runtime-win-$(TargetArchitecture).msi" Condition="'@(_PrereqRuntime)'=='' AND Exists('$(_PrereqSearchPath4)dotnet-runtime-win-$(TargetArchitecture).msi')" /> + + + + true + false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + + @(_PrereqHost) + @(_PrereqHostFxr) + @(_PrereqRuntime) + $(DefineConstants);DotNetRedistHostInstaller=$(DotNetRedistHostInstaller);DotNetRedistHostfxrInstaller=$(DotNetRedistHostfxrInstaller);DotNetRedistLtsInstaller=$(DotNetRedistLtsInstaller) + + + false + + + + + + windowsdesktop-runtime-$(Version)-win-$(TargetArchitecture) + $(BundleBaseName) + $(BundleBaseName) + $(TargetName)$(TargetExt) + $(TargetDir)$(TargetFileName) + $(DefineConstants);Version=$(MajorVersion).$(MinorVersion).$(PatchVersion) + <_NormalizedPreReleaseLabel>$([System.String]::Copy('$(PreReleaseVersionLabel)').ToLowerInvariant()) + <_IsPreReleaseBuild Condition="'$(_NormalizedPreReleaseLabel)' != '' AND '$(_NormalizedPreReleaseLabel)' != 'rtm'">true + <_IsPreReleaseBuild Condition="'$(_IsPreReleaseBuild)'==''">false + + $(DefineConstants);BundleVersion=$(MajorVersion).$(MinorVersion).$(PatchVersion).$(VersionSuffixDateStamp) + $(DefineConstants);BundleVersion=$(MajorVersion).$(MinorVersion).$(PatchVersion).50000 + $(DefineConstants);Manufacturer=Microsoft Corporation + $(DefineConstants);SdkBrandName=Microsoft Windows Desktop Runtime + + + x86 + x64 + arm64 + + Windows Desktop Shared Framework Bundle Installer + $(UpgradeCodeSeed) $(TargetArchitecture) $(MajorVersion).$(MinorVersion) + + $(DefineConstants);TargetArchitecture=$(TargetArchitecture) + $(DefineConstants);PlatformToken=$(TargetArchitecture.ToUpper()) + $(DefineConstants);NativeMachine_x64=x64 + $(DefineConstants);NativeMachine_arm64=arm64 + + + yes + no + $(DefineConstants);SuppressDowngradeFailure=$(SuppressDowngradeFailure) + + $(DefineConstants);MajorVersion=$(MajorVersion) + $(DefineConstants);MinorVersion=$(MinorVersion) + $(DefineConstants);WinFormsAndWpfVersion=$(WinFormsAndWpfVersion) + $(DefineConstants);DotNetRuntimeVersion=$(DotNetRuntimeVersion) + $(DefineConstants);AspNetCoreVersion=$(AspNetCoreVersion) + $(DefineConstants);MinimumVSVersion=$(MinimumVSVersion) + + $(ArtifactsPackagesDir)Shipping\windowsdesktop-runtime-$(Version)-win-$(TargetArchitecture).msi + $(DefineConstants);WindowsDesktopRuntimeMsiPath=$(WindowsDesktopRuntimeMsiPath) + + $(DefineConstants);IncludeWorkloadManifests=true + $(DefineConstants);IncludeWorkloadManifests=false + + + false + <_HasIncludeRuntimeConstant>$([System.String]::Copy('$(DefineConstants)')).Contains('IncludeRuntimeMSIs=') + $([System.String]::Copy('$(DefineConstants)').Replace('IncludeRuntimeMSIs=true', 'IncludeRuntimeMSIs=$(IncludeRuntimeMSIs)').Replace('IncludeRuntimeMSIs=false', 'IncludeRuntimeMSIs=$(IncludeRuntimeMSIs)')) + $(DefineConstants);IncludeRuntimeMSIs=$(IncludeRuntimeMSIs) + IncludeRuntimeMSIs=$(IncludeRuntimeMSIs) + + + + + + + + + $(OutputName).exe + $(ArtifactsPackagesDir)Shipping\$(BundleShippingName) + + + + + + + + + $(UpgradeCodeSeed) $(MajorVersion).$(MinorVersion) + + + + + + + + + + + + $(DefineConstants);ProviderKey={$(GeneratedProviderKey)} + $(DefineConstants);UpgradeCode={$(GeneratedUpgradeCode)} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $(IntermediateOutputPath)wixpack + + $(WixCommandPackagesDir) + $(ArtifactsPackagesDir)NonShipping + $(WixpackOutputDir)\$(TargetFileName).wixpack.zip + $(OutputName).exe + + $(WixpackOutputDir)\$(BundleShippingName).wixpack.zip + + <_BundlePdbFile>$(TargetDir)$(TargetName).wixpdb + + + + + + + + + + + <_WixBuildCommandPackageNameOutput Condition="'$(_WixBuildCommandPackageNameOutput)' != '' AND '$(ExpectedBundleWixpackFile)' != ''">$(ExpectedBundleWixpackFile) + + + + diff --git a/src/windowsdesktop/src/bundle/bundle.thm b/src/windowsdesktop/src/bundle/bundle.thm index 845b5cbd2..7577725a5 100644 --- a/src/windowsdesktop/src/bundle/bundle.thm +++ b/src/windowsdesktop/src/bundle/bundle.thm @@ -1,114 +1,146 @@ - - - #(loc.Caption) - Segoe UI - Segoe UI - Segoe UI - Segoe UI - Segoe UI - Segoe UI - - #(loc.Title) + + + + Segoe UI + Segoe UI + Segoe UI + + Segoe UI + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/bundle.wixproj b/src/windowsdesktop/src/bundle/bundle.wixproj new file mode 100644 index 000000000..07e577a43 --- /dev/null +++ b/src/windowsdesktop/src/bundle/bundle.wixproj @@ -0,0 +1,109 @@ + + + + + + + Bundle + + + false + 1 + + + true + + + x86 + x86 + + + $(NoWarn);WIX1098 + + + $(DefaultItemExcludes);LCID\**\*;theme\**\* + + + + + + + + + + + + + + + + + + + + + <_BundleOutputDir>$(TargetDir) + <_BundleShippingDir Condition="'$(ArtifactsPackagesDir)' != ''">$(ArtifactsPackagesDir)Shipping\ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/bundle.wxs b/src/windowsdesktop/src/bundle/bundle.wxs new file mode 100644 index 000000000..5f60fbb84 --- /dev/null +++ b/src/windowsdesktop/src/bundle/bundle.wxs @@ -0,0 +1,241 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/dotnet-packages.wxs b/src/windowsdesktop/src/bundle/dotnet-packages.wxs new file mode 100644 index 000000000..1f4ee1936 --- /dev/null +++ b/src/windowsdesktop/src/bundle/dotnet-packages.wxs @@ -0,0 +1,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/dotnet.ico b/src/windowsdesktop/src/bundle/dotnet.ico new file mode 100644 index 0000000000000000000000000000000000000000..16c9148e8609531b6bde8509f503ec29010985c6 GIT binary patch literal 45150 zcmeHQ3s}`f7M}~4kSme6E181jmtgLS=KF=$bTvzb(liT`G!a&jLLP|%x5p-CXr(L~ zA-bk$3R);CE)SoqXoZFg0*Yn`B3dAVf_Qh%#gpSS_kmmVCE0wi%hvy0TA8qT?r?$T38A9&7NQi?&ZQY|YA)DVJq+7SU{Z@on zE+@psrnVkxK}bR*Assu`*7rU_h|?xQtSBGo^DrZ%VjCgLTqccc|7hn&sp|IQUl{WW z^g=eL{KVB~i#s9aoyLzDHRZjpuAUv~@l|Elw9@Ep4(2tA$xnU$-{li}_I+XF#S{KT zn`d1-V*B$KfjzUoo@dgdYX_4bP8~U%am2!JX`si>t$R8wS`qcKNrdIVHbcf93=8!+ zFvZ-@VSMq?o9p7&?JvCMv?I&Gc0^Uzo9B`X7bX9=u-ZQ$pxtMe?I$`Cj}=7ON1<{v zAqULJ2NuN4nwa+>Ruf3KHGk}=IQVAptzUlrW~qhJ)M>`_>}hGiOH2$Lt5xX3-;tD2 zZc=qRrdPZ0JxOI34*6U!-q<_tQrqP_Catb?TIaq0?6D)KS5)L4yAu0Tai`d_Ymt@F zH>aP@%H9*ZWO$G=0`u_2u7^`p&Sl?L05=372KW z_rM!=T|5FUT$T+{^>6srdD=f5HzjWvm*8cHUN!`eZ zge5`o+k;Qu$@Mt#NJcx83=*#>Z>R7`t;$Il7kaXj+4`qmO#^$%Zp`uxBmK9OSsd6i z)89ck&0P86)N8w*4YT<1L|Cx;#;mxg$@U75*G~7nuxZfd;|E614jS}is++ayEVy1Y~K}Y{XynLQk7a5?G>JT{0*-?ks)(V%qP1$sGQ!V7H^8Nh;|w|*>l*I=SkI= zdGlgU4QjvAdBv`z2=WbOfpz)f?1L_y6h-~0NgFIj`wjc8z^eaNtt9TBtbDCXos5nv`5=Iwx<;b;;DYuS{ zeB|dlL>7>ccVHhDN!%UQG{Pl(1oN+nscBPOU91J@&az`Ivw^ zimce;HGN8sxR{+kzv0{TT+35YepyaA?|dH}*O{vLAt}4OL*lsR%wjt&|4p7-WncEOijRB@DH%804w-rG5Y?gJ$UJ}KUvoG`<4g3ZtY z9Tgs4S62t*|3`hod`b29llI-r4Y54@OlnNu9uo$Y`%!YIn)naT=s$Px?6>Hd0vZ4JNn_%kcl&^zo)9I?Dw^RuLneuUL_jwJ znY~_Cw}z|@h1TFZ_$d7sBOvEruK(5$1LEi>q&4_1_dmJ+%lH=~AlJV<{WpE&&GXWXp|b}3R6q>pN;$S)Lgeg30QJO$qkO?a$DUq!Sb{nr)4E!BS!#?86S z*z@0It)=wK`4=P5Qs!5m zA7bz2`qzhBOX-*MFGirH%&$H_#NNyGuMfAD(l6&A8swBU(UZa z1Z2BJpmiaj?YYwVS{T|&ssZAm$3fdX!|z1UpSB`yG|S(Kpdd8!^st?S@Ni1|8}}W1 ziGSnb&BwRIU*gZlL|y7Keq{XAC0=-589y?9_?W0my*0%Tysyl^vs@Rf8iLnQ{K0Na z=mXY8cCqj1V?Xlqlz*oa`*EBuYN-AA%>=wdteKg1g* z)QNTWU31a9+{lOHbWvm34|ZU}Z=$e{`mxSZ(fi=okK=SvW7rQ^W8A!ozp?omT81|z+j2pBE+qKoPou~XbzMrid z%YObC1UfLGKCJWm|HXx2_kB|);uEcNkZTP4wS5nRcJTINJJQ0?by(C&`ME`z^|2pi zG$obx%j=i=#Gi~G89y?9?yZ9QV9^v~?^#}3Y6=_bqf^>1_a7NQ_f|oDuxN_0_biwD zPjkSZpAT7Y90Y1FJPE0#FRN2Qt!Z7U`tCTS`C8;`;rLJwj!VAVAH-2tu8#dU4(mu! zt~N?Yt)D#A#;>m(?Lg{t*Is_yz2AvKyx~19$SyQL?C)tc#Xe$)P719i8N%BXJkq}U zol8pmBz{e?Zc(RRoLK|&j$%s+dDXEd15ZmhGEf7S(k zyeu5gQeE}|AKC_GkxYC>3w24}5n5c@5ER2oK29 zhac+X?ZbCEz&5}E67m|N+Yp}m*oW_G!2FBsL%X3*G>;8wAFc`1E3yytvk9?93Vk>p z+eEak^9$<%VjmJd9~RlCPdAL$#{>4()jnJc?0(Ul>;u2~cP2#k@%sy`Cw9L7JL?;ijpaYcVZZ(1 z^|SGpGsgY*|8WE3un+G$vo;!vKgeOn^ZKD5leTY+_}BnD4AIZpYwWVrUyFdTaWzz) z#9!hM2pAeK#^#gphX^zsh2w^b-Xds<47%Yyg$>Q{+l5VipTgMjjq<2#nuK*@Qz>8f z{ced*-SL6732}-P%J};U*skfMfAIX9 - - [WixBundleName] 安裝程式 - [BUNDLEMONIKER] - 您只需要殼層、文字編輯器和 10 分鐘的時間。 + + + + 您確定要取消嗎? - 前一版 - 安裝程式說明 - /install | /repair | /uninstall | /layout [directory] - 在目錄中安裝、修復、解除安裝或 +準備好了嗎? 讓我們開始吧!" /> + + + + 關閉(&C) - 我同意授權條款及條件(&A) - 選項(&O) - 安裝(&I) - 關閉(&C) - 安裝選項 - 安裝位置: - 瀏覽(&B) - 確定(&O) - 取消(&C) - 安裝進度 - 處理中: - 正在初始化... - 取消(&C) - 修改安裝 - 修復(&R) - 解除安裝(&U) - 關閉(&C) - 修復已成功完成 - 解除安裝已成功完成 - 安裝成功 - 設定成功 - 啟動(&L) - 必須重新啟動電腦,才能使用此軟體。 - 重新啟動(&R) - 關閉(&C) - 設定失敗 - 安裝程式失敗 - 解除安裝失敗 - 修復失敗 - 有一個或多個問題導致安裝程式失敗。請解決問題,然後重試一次安裝。如需詳細資訊,請參閱<a href="#">記錄檔</a>。 - 必須重新啟動電腦,才能完成軟體的復原。 - 重新啟動(&R) - 關閉(&C) - 此作業系統不支援 [PRODUCT_NAME]。如需詳細資訊,請參閱 [LINK_PREREQ_PAGE]。 - x86 作業系統不支援 [PRODUCT_NAME]。請使用對應的 x86 安裝程式來安裝。 - 使用中的檔案 - 以下應用程式正在使用需要進行更新的檔案: - 關閉應用程式並嘗試重新啟動(&A) - 不關閉應用程式,需要重新啟動(&D) - 確定(&O) - 取消(&C) - Windows Desktop Runtime - .NET Windows Desktop Runtime 可用於在您的電腦上執行 Windows Forms 與 WPF 應用程式。.NET 為開放原始碼形式,且可跨平台運作,同時受到 Microsoft 支援。希望您會喜歡! - 深入了解 .NET Core - 下列項目已安裝在 [DOTNETHOME] - - [BUNDLEMONIKER] - 資源 - <A HREF="https://aka.ms/dotnet-docs">文件</A> - <A HREF="https://aka.ms/20-p2-rel-notes">版本資訊</A> - <A HREF="https://aka.ms/dotnet-tutorials">教學課程</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core 遙測</A> - <A HREF="https://aka.ms/dev-privacy">隱私權聲明</A> - <A HREF="https://aka.ms/dotnet-license-windows">.NET 的授權資訊</A> - 按一下 [\[]安裝[\[] 即表示您同意下列條款。 +/log log.txt - 記錄至特定檔案。預設會在 %TEMP% 建立記錄檔。" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1029/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1029/bundle.wxl index adbc94401..0d28664f5 100644 --- a/src/windowsdesktop/src/bundle/theme/1029/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1029/bundle.wxl @@ -1,75 +1,95 @@ - - Instalační program pro [WixBundleName] - [BUNDLEMONIKER] - Potřebujete jenom prostředí, textový editor a 10 minut času. + + + + Opravdu chcete akci zrušit? - Předchozí verze - Nápověda k instalaci - /install | /repair | /uninstall | /layout [adresář] – Nainstaluje, opraví, odinstaluje nebo +Jste připraveni? Dejme se tedy do toho!" /> + + + + &Zavřít - Souhl&asím s licenčními podmínkami. - M&ožnosti - &Instalovat - &Zavřít - Možnosti instalace - Umístění instalace: - &Procházet - &OK - &Storno - Průběh instalace - Zpracování: - Inicializuje se... - &Storno - Změnit instalaci - Op&ravit - O&dinstalovat - &Zavřít - Oprava se úspěšně dokončila. - Odinstalace se úspěšně dokončila. - Instalace proběhla úspěšně. - Instalace byla úspěšná. - &Spustit - Před použitím tohoto softwaru musíte restartovat počítač. - &Restartovat - &Zavřít - Instalace se nepovedla. - Instalace se nepovedla. - Odinstalace se nepovedla. - Oprava se nepovedla. - Instalace se nepovedla kvůli jednomu nebo více problémům. Opravte prosím tyto problémy a zkuste software nainstalovat znovu. Další informace najdete v <a href="#">souboru protokolu</a>. - Pro dokončení vrácení změn tohoto softwaru je potřeba restartovat počítač. - &Restartovat - &Zavřít - [PRODUCT_NAME] se tomto operačním systému nepodporuje. Další informace: [LINK_PREREQ_PAGE] - [PRODUCT_NAME] se v operačních systémech pro platformu x86 nepodporuje. Použijte prosím k instalaci odpovídající instalační program pro platformu x86. - Používané soubory - Následující aplikace používají soubory, které je potřeba aktualizovat: - Zavřete &aplikace a zkuste je restartovat. - A&plikace nezavírejte. Bude potřeba provést restart. - &OK - &Zrušit - Windows Desktop Runtime - Modul .NET Windows Desktop Runtime se používá ke spouštění aplikací Windows Forms a WPF na počítači. .NET je open source, k dispozici pro více platforem a podporovaný Microsoftem. Doufáme, že se vám bude líbit! - Další informace o .NET Core - Do [DOTNETHOME] se nainstalovaly následující položky. - - [BUNDLEMONIKER] - Prostředky - <A HREF="https://aka.ms/dotnet-docs">Dokumentace</A> - <A HREF="https://aka.ms/20-p2-rel-notes">Zpráva k vydání verze</A> - <A HREF="https://aka.ms/dotnet-tutorials">Kurzy</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">Telemetrie pro platformu .NET Core</A> - <A HREF="https://aka.ms/dev-privacy">Prohlášení o zásadách ochrany osobních údajů</A> - <A HREF="https://aka.ms/dotnet-license-windows">Informace o licencování pro .NET</A> - Kliknutím na Nainstalovat vyjadřujete souhlas s následujícími podmínkami. +/log log.txt – Uloží protokol do konkrétního souboru. Ve výchozím nastavení bude soubor protokolu vytvořen v adresáři %TEMP%." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1031/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1031/bundle.wxl index 7dac56927..f43f4c0d6 100644 --- a/src/windowsdesktop/src/bundle/theme/1031/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1031/bundle.wxl @@ -1,75 +1,96 @@ - - [WixBundleName]-Installer - [BUNDLEMONIKER] - Sie benötigen nur eine Shell, einen Text-Editor und 10 Minuten Zeit. + + + + Möchten Sie den Vorgang wirklich abbrechen? - Vorherige Version - Hilfe zum Setup - /install | /repair | /uninstall | /layout [Verzeichnis] - installiert, repariert, deinstalliert oder +Bereit? Los geht's!" /> + + + + S&chließen - Ich &stimme den Lizenzbedingungen zu. - &Optionen - &Installieren - S&chließen - Setupoptionen - Installationspfad: - &Durchsuchen - &OK - &Abbrechen - Setupstatus - Wird verarbeitet: - Initialisierung... - &Abbrechen - Setup ändern - &Reparieren - &Deinstallieren - S&chließen - Die Reparatur wurde erfolgreich abgeschlossen. - Die Deinstallation wurde erfolgreich abgeschlossen. - Die Installation war erfolgreich. - Setup wurde erfolgreich abgeschlossen - &Starten - Sie müssen den Computer neu starten, bevor Sie die Software verwenden können. - &Neu starten - S&chließen - Setupfehler - Setupfehler - Deinstallationsfehler - Reparaturfehler - Setup ist aufgrund eines oder mehrerer Probleme fehlgeschlagen. Beheben Sie die Probleme, und führen Sie das Setup erneut aus. Weitere Informationen finden Sie in der <a href="#">Protokolldatei</a>. - Sie müssen den Computer neu starten, um das Zurücksetzen der Software abzuschließen. - &Neu starten - &Schließen - [PRODUCT_NAME] wird auf diesem Betriebssystem nicht unterstützt. Weitere Informationen finden Sie unter [LINK_PREREQ_PAGE]. - [PRODUCT_NAME] wird auf x86-Betriebssystemen nicht unterstützt. Installieren Sie das entsprechende x86-Installationsprogramm. - Verwendete Dateien - Die folgenden Anwendungen verwenden Dateien, die aktualisiert werden müssen: - Schließen Sie die &Anwendungen, und versuchen Sie sie erneut zu starten. - &Anwendungen nicht schließen. Ein Neustart ist erforderlich. - &OK - &Abbrechen - Windows Desktop-Runtime - Die .NET Windows Desktop-Runtime wird zum Ausführen von Windows Forms- und WPF-Anwendungen auf Ihrem Computer verwendet. .NET ist ein plattformübergreifendes Open-Source-Framework, das von Microsoft unterstützt wird. Wir wünschen Ihnen viel Spaß damit! - Weitere Informationen zu .NET Core - Folgendes wurde unter [DOTNETHOME] installiert. - - [BUNDLEMONIKER] - Ressourcen - <A HREF="https://aka.ms/dotnet-docs">Dokumentation</A> - <A HREF="https://aka.ms/20-p2-rel-notes">Versionshinweise</A> - <A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core-Telemetrie</A> - <A HREF="https://aka.ms/dev-privacy">Datenschutzerklärung</A> - <A HREF="https://aka.ms/dotnet-license-windows">Lizenzierungsinformationen für .NET</A> - Durch Klicken auf "Installieren" stimmen Sie den nachstehenden Bedingungen zu. +/log log.txt - Erstellt das Protokoll in einer bestimmten Datei. Standardmäßig wird die Protokolldatei in %TEMP% erstellt." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1033/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1033/bundle.wxl index 259b5dcff..f8c7d1d4f 100644 --- a/src/windowsdesktop/src/bundle/theme/1033/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1033/bundle.wxl @@ -1,75 +1,81 @@ - - [WixBundleName] Installer - [BUNDLEMONIKER] - You just need a shell, a text editor and 10 minutes of your time. - -Ready? Set? Let's go! - Are you sure you want to cancel? - Previous version - Setup Help - /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or - creates a complete local copy of the bundle in directory. Install is the default. - -/passive | /quiet - displays minimal UI with no prompts or displays no UI and - no prompts. By default UI and all prompts are displayed. - -/norestart - suppress any attempts to restart. By default UI will prompt before restart. -/log log.txt - logs to a specific file. By default a log file is created in %TEMP%. - &Close - I &agree to the license terms and conditions - &Options - &Install - &Close - Setup Options - Install location: - &Browse - &OK - &Cancel - Setup Progress - Processing: - Initializing... - &Cancel - Modify Setup - &Repair - &Uninstall - &Close - Repair Successfully Completed - Uninstall Successfully Completed - Installation was successful - Setup Successful - &Launch - You must restart your computer before you can use the software. - &Restart - &Close - Setup Failed - Setup Failed - Uninstall Failed - Repair Failed - One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>. - You must restart your computer to complete the rollback of the software. - &Restart - &Close - The [PRODUCT_NAME] is not supported on this operating system. For more information, see [LINK_PREREQ_PAGE]. - The [PRODUCT_NAME] isn't supported on x86 operating systems. Please install using the corresponding x86 installer. - Files In Use - The following applications are using files that need to be updated: - Close the &applications and attempt to restart them. - &Do not close applications. A reboot will be required. - &OK - &Cancel - Windows Desktop Runtime - The .NET Windows Desktop Runtime is used to run Windows Forms and WPF applications, on your computer. .NET is open source, cross platform, and supported by Microsoft. We hope you enjoy it! - Learn more about .NET Core - The following was installed at [DOTNETHOME] - - [BUNDLEMONIKER] - Resources - <A HREF="https://aka.ms/dotnet-docs">Documentation</A> - <A HREF="https://aka.ms/20-p2-rel-notes">Release Notes</A> - <A HREF="https://aka.ms/dotnet-tutorials">Tutorials</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetry</A> - <A HREF="https://aka.ms/dev-privacy">Privacy Statement</A> - <A HREF="https://aka.ms/dotnet-license-windows">Licensing Information for .NET</A> - By clicking Install, you agree to the following terms. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1036/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1036/bundle.wxl index d55154001..e30a11219 100644 --- a/src/windowsdesktop/src/bundle/theme/1036/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1036/bundle.wxl @@ -1,75 +1,95 @@ - - Programme d'installation de [WixBundleName] - [BUNDLEMONIKER] - Vous avez juste besoin d'un interpréteur de commandes, d'un éditeur de texte et de 10 minutes. + + + + Voulez-vous vraiment annuler ? - Version précédente - Aide à l'installation - /install | /repair | /uninstall | /layout [répertoire] - installe, répare, désinstalle ou +À vos marques ? Prêt ? Partez !" /> + + + + &Fermer - J'&accepte les conditions générales de la licence - &Options - &Installer - &Fermer - Options d'installation - Emplacement de l'installation : - &Parcourir - &OK - &Annuler - Progression de l'installation - En cours : - Initialisation... - &Annuler - Modifier l'installation - &Réparer - &Désinstaller - &Fermer - Réparation terminée avec succès - Désinstallation terminée avec succès - Installation réussie - Installation/désinstallation réussie - &Démarrer - Vous devez redémarrer votre ordinateur avant de pouvoir utiliser le logiciel. - &Redémarrer - &Fermer - Échec de l'installation - Échec de l'installation - Échec de la désinstallation - Échec de la réparation - Un ou plusieurs problèmes sont à l'origine de l'échec de l'installation. Corrigez ces problèmes, puis recommencez l'installation. Pour plus d'informations, voir le <a href="#">fichier journal</a>. - Vous devez redémarrer votre ordinateur pour terminer l'opération de restauration du logiciel. - &Redémarrer - &Fermer - [PRODUCT_NAME] n'est pas pris en charge sur ce système d'exploitation. Pour plus d'informations, consultez [LINK_PREREQ_PAGE]. - [PRODUCT_NAME] n'est pas pris en charge sur les systèmes d'exploitation x86. Effectuez l'installation à l'aide du programme d'installation x86 correspondant. - Fichiers en cours d'utilisation - Les applications suivantes utilisent des fichiers nécessitant une mise à jour : - &Fermez les applications, puis essayez de les redémarrer. - &Ne pas fermer les applications. Un redémarrage sera nécessaire. - &OK - &Annuler - Runtime Windows Desktop - Le runtime .NET Windows Desktop vous permet d'exécuter les applications Windows Forms et WPF sur votre ordinateur. .NET est open source, multiplateforme et pris en charge par Microsoft. Nous espérons que vous l'apprécierez ! - En savoir plus sur .NET Core - L'élément suivant a été installé sur [DOTNETHOME] - - [BUNDLEMONIKER] - Ressources - <A HREF="https://aka.ms/dotnet-docs">Documentation</A> - <A HREF="https://aka.ms/20-p2-rel-notes">Notes de publication</A> - <A HREF="https://aka.ms/dotnet-tutorials">Tutoriels</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">Télémétrie .NET Core</A> - <A HREF="https://aka.ms/dev-privacy">Déclaration de confidentialité</A> - <A HREF="https://aka.ms/dotnet-license-windows">Informations de licence pour .NET</A> - En cliquant sur Installer, vous acceptez les conditions suivantes. +/log log.txt - enregistre les informations dans un fichier spécifique. Par défaut, un fichier journal est créé dans %TEMP%." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1040/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1040/bundle.wxl index 41eecb4d4..c5b6c8622 100644 --- a/src/windowsdesktop/src/bundle/theme/1040/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1040/bundle.wxl @@ -1,75 +1,95 @@ - - Programma di installazione di [WixBundleName] - [BUNDLEMONIKER] - Bastano solo una shell, un editor di testo e 10 minuti di tempo. + + + + Annullare? - Versione precedente - Guida alla configurazione - /install | /repair | /uninstall | /layout [directory] - installa, ripara, disinstalla o +Pronti per iniziare?" /> + + + + &Chiudi - &Accetto i termini e le condizioni di licenza - &Opzioni - &Installa - &Chiudi - Opzioni di installazione - Percorso di installazione: - &Sfoglia - &OK - &Annulla - Stato installazione - Elaborazione di: - Inizializzazione in corso... - &Annulla - Modifica installazione - &Ripristina - &Disinstalla - &Chiudi - La riparazione è stata completata - La disinstallazione è stata completata - L'installazione è riuscita - L'installazione è stata completata - &Avvia - Per poter usare il software, è necessario riavviare il computer. - &Riavvia - &Chiudi - L'installazione non è riuscita - L'installazione non è riuscita - La disinstallazione non è riuscita - La riparazione non è riuscita - L'installazione non è riuscita a causa di uno o più problemi. Risolvere i problemi e ripetere l'installazione. Per altre informazioni, vedere il <a href="#">file di log</a>. - Per completare il rollback del software, è necessario riavviare il computer. - &Riavvia - &Chiudi - [PRODUCT_NAME] non è supportato in questo sistema operativo. Per altre informazioni, vedere [LINK_PREREQ_PAGE]. - [PRODUCT_NAME] non è supportato in sistemi operativi x86. Eseguire l'installazione usando il programma di installazione x86 corrispondente. - File in uso - Le applicazioni seguenti usano file che necessitano di aggiornamento: - Chiudere le &applicazioni e provare a riavviarle. - &Non chiudere le applicazioni; sarà necessario riavviare il sistema - &OK - &Annulla - Runtime di Windows Desktop - Runtime di Windows Desktop consente di eseguire applicazioni Windows Forms e WPF nel computer. .NET è open source, multipiattaforma e supportato da Microsoft. - Altre informazioni su .NET Core - I componenti seguenti sono stati installati in [DOTNETHOME] - - [BUNDLEMONIKER] - Risorse - <A HREF="https://aka.ms/dotnet-docs">Documentazione</A> - <A HREF="https://aka.ms/20-p2-rel-notes">Note sulla versione</A> - <A HREF="https://aka.ms/dotnet-tutorials">Esercitazioni</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">Telemetria di .NET Core</A> - <A HREF="https://aka.ms/dev-privacy">Informativa sulla privacy</A> - <A HREF="https://aka.ms/dotnet-license-windows">Informazioni sulla licenza per .NET</A> - Facendo clic su Installa, si accettano le condizioni seguenti. +/log log.txt - registra il log in un file specifico. Per impostazione predefinita, viene creato un file di log in %TEMP%." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1041/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1041/bundle.wxl index ef7c5b253..bbe8ee514 100644 --- a/src/windowsdesktop/src/bundle/theme/1041/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1041/bundle.wxl @@ -1,14 +1,14 @@ - - [WixBundleName] インストーラー - [BUNDLEMONIKER] - 必要なのは、シェル、テキスト エディター、それに時間が 10 分のみです。 + + + + 取り消しますか? - 以前のバージョン - セットアップのヘルプ - /install | /repair | /uninstall | /layout [directory] - バンドルの完全なローカル コピーに対する +では、始めましょう。" /> + + + + 閉じる(&C) - ライセンス条項および使用条件に同意する(&A) - オプション(&O) - インストール(&I) - 閉じる(&C) - セットアップ オプション - インストール場所: - 参照(&B) - OK(&O) - キャンセル(&C) - セットアップの進行状況 - 処理中: - 初期化しています... - キャンセル(&C) - セットアップの変更 - 修復(&R) - アンインストール(&U) - 閉じる(&C) - 修復が正常に完了しました - アンインストールが正常に完了しました - インストールが正常に終了しました - セットアップ完了 - 起動(&L) - ソフトウェアを使用する前にコンピューターを再起動する必要があります。 - 再起動(&R) - 閉じる(&C) - セットアップ失敗 - セットアップに失敗しました - アンインストールに失敗しました - 修復に失敗しました - 1 つまたは複数の問題により、セットアップが失敗しました。問題を解決してからセットアップを再試行してください。詳細については、<a href="#">ログ ファイル</a>を参照してください。 - ソフトウェアのロールバックを完了するには、コンピューターを再起動する必要があります。 - 再起動(&R) - 閉じる(&C) - [PRODUCT_NAME] は、このオペレーティング システムではサポートされていません。詳細については、[LINK_PREREQ_PAGE] を参照してください。 - x86 オペレーティング システムでは、[PRODUCT_NAME] はサポートされていません。対応する x86 インストーラーを使用してインストールしてください。 - ファイルが使用中 - 次のアプリケーションは、更新の必要があるファイルを使用しています: - アプリケーションを閉じて再起動を試みる。(&A) - アプリケーションを終了させない (コンピューターの再起動が必要になります)(&D) - OK(&O) - キャンセル(&C) - Windows Desktop Runtime - .NET Windows Desktop Runtime は、ご使用のコンピューターで Windows フォームおよび .NET アプリケーションを実行するために使用されます。.NET はオープン ソースのクロス プラットフォームで、Microsoft によってサポートされています。ぜひご利用ください。 - .Net Core の詳細 - [DOTNETHOME] に以下がインストールされました - - [BUNDLEMONIKER] - リソース - <A HREF="https://aka.ms/dotnet-docs">ドキュメント</A> - <A HREF="https://aka.ms/20-p2-rel-notes">リリース ノート</A> - <A HREF="https://aka.ms/dotnet-tutorials">チュートリアル</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core テレメトリ</A> - <A HREF="https://aka.ms/dev-privacy">プライバシーに関する声明</A> - <A HREF="https://aka.ms/dotnet-license-windows">.NET のライセンス情報</A> - [インストール] をクリックすると、次の条項に同意したものと見なされます。 +/log log.txt - 特定のファイルに記録します。ログ ファイルは既定では %TEMP% に作成されます。" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1042/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1042/bundle.wxl index 3c4f00960..4dd80ee92 100644 --- a/src/windowsdesktop/src/bundle/theme/1042/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1042/bundle.wxl @@ -1,75 +1,95 @@ - - [WixBundleName] 설치 관리자 - [BUNDLEMONIKER] - 셸, 텍스트 편집기, 10분의 시간만 있으면 됩니다. + + + + 취소하시겠습니까? - 이전 버전 - 설치 도움말 - /install | /repair | /uninstall | /layout [directory] - 디렉터리에 번들의 전체 로컬 복사본을 설치, 복구, 제거 또는 +준비되셨나요? 시작합니다!" /> + + + + 닫기(&C) - 동의함(&A) - 옵션(&O) - 설치(&I) - 닫기(&C) - 설치 옵션 - 설치 위치: - 찾아보기(&B) - 확인(&O) - 취소(&C) - 설치 진행률 - 처리 중: - 초기화 중... - 취소(&C) - 설치 수정 - 복구(&R) - 제거(&U) - 닫기(&C) - 복구 완료됨 - 제거 완료됨 - 설치가 완료되었습니다. - 설치 완료 - 시작(&L) - 소프트웨어를 사용하려면 먼저 컴퓨터를 다시 시작해야 합니다. - 다시 시작(&R) - 닫기(&C) - 설치 실패 - 설치 실패 - 제거 실패 - 복구 실패 - 하나 이상의 문제가 발생하여 설치하지 못했습니다. 문제를 해결한 다음 설치를 다시 시도하십시오. 자세한 내용은 <a href="#">로그 파일</a>을 참조하십시오. - 소프트웨어 롤백을 완료하려면 컴퓨터를 다시 시작해야 합니다. - 다시 시작(&R) - 닫기(&C) - 이 운영 체제에서는 [PRODUCT_NAME]이(가) 지원되지 않습니다. 자세한 내용은 [LINK_PREREQ_PAGE]을(를) 참조하세요. - x86 운영 체제에서는 [PRODUCT_NAME]이(가) 지원되지 않습니다. 해당 x86 설치 관리자를 사용하여 설치하세요. - 사용 중인 파일 - 다음의 애플리케이션이 업데이트해야 할 파일을 사용 중입니다. - 애플리케이션을 닫고 다시 시작합니다(&A). - 애플리케이션을 닫지 않습니다(&D). 다시 부팅해야 합니다. - 확인(&O) - 취소(&C) - Windows 데스크톱 런타임 - .NET Windows 데스크톱 런타임은 컴퓨터에서 Windows Forms 및 WPF 애플리케이션을 실행하는 데 사용됩니다. .NET은 오픈 소스 및 플랫폼 간이며 Microsoft에서 지원합니다. .NET을 유용하게 사용하시길 바랍니다. - .NET Core에 대한 자세한 정보 - 다음이 [DOTNETHOME]에 설치되었습니다. - - [BUNDLEMONIKER] - 리소스 - <A HREF="https://aka.ms/dotnet-docs">설명서</A> - <A HREF="https://aka.ms/20-p2-rel-notes">릴리스 정보</A> - <A HREF="https://aka.ms/dotnet-tutorials">자습서</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core 원격 분석</A> - <A HREF="https://aka.ms/dev-privacy">개인정보처리방침</A> - <A HREF="https://aka.ms/dotnet-license-windows">.NET에 대한 라이선스 정보</A> - [설치]를 클릭하면 다음 사용 약관에 동의하는 것입니다. +/log log.txt - 특정 파일에 기록합니다. 기본적으로 로그 파일은 %TEMP%에 만들어집니다." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1045/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1045/bundle.wxl index ac3779bf0..88be94ec4 100644 --- a/src/windowsdesktop/src/bundle/theme/1045/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1045/bundle.wxl @@ -1,75 +1,95 @@ - - Instalator pakietu [WixBundleName] - [BUNDLEMONIKER] - Potrzebujemy tylko powłoki, edytora tekstu i 10 minut czasu. + + + + Czy na pewno chcesz anulować? - Poprzednia wersja - Pomoc dotycząca instalacji - /install | /repair | /uninstall | /layout [katalog] - Instaluje, naprawia, odinstalowuje +Wszystko gotowe? Zaczynamy!" /> + + + + &Zamknij - &Zgadzam się z postanowieniami licencyjnymi - &Opcje - &Zainstaluj - &Zamknij - Opcje instalacji - Lokalizacja instalacji: - &Przeglądaj - &OK - &Anuluj - Postęp instalacji - Przetwarzanie: - Trwa inicjowanie... - &Anuluj - Modyfikuj instalację - &Napraw - &Odinstaluj - &Zamknij - Pomyślnie ukończono naprawę - Pomyślnie ukończono dezinstalację - Instalacja przebiegła pomyślnie - Pomyślnie ukończono instalację - &Uruchom - Aby móc korzystać z oprogramowania, musisz uruchomić ponownie komputer. - &Uruchom ponownie - &Zamknij - Instalacja nie powiodła się - Instalacja nie powiodła się - Dezinstalacja nie powiodła się - Naprawa nie powiodła się - Co najmniej jeden problem spowodował niepowodzenie instalacji. Rozwiąż problemy, a następnie ponów próbę instalacji. Aby uzyskać więcej informacji, zobacz <a href="#">plik dziennika</a>. - Aby ukończyć wycofywanie oprogramowania, musisz uruchomić ponownie komputer. - &Uruchom ponownie - &Zamknij - Produkt [PRODUCT_NAME] nie jest obsługiwany w tym systemie operacyjnym. Aby uzyskać więcej informacji, zobacz [LINK_PREREQ_PAGE]. - Produkt [PRODUCT_NAME] nie jest obsługiwany w systemach operacyjnych x86. Przeprowadź instalację przy użyciu odpowiedniego instalatora x86. - Pliki w użyciu - Następujące aplikacje korzystają z plików, które muszą zostać zaktualizowane: - Zamknij &aplikacje i spróbuj je ponownie uruchomić. - &Nie zamykaj aplikacji. Będzie konieczne ponowne uruchomienie. - &OK - &Anuluj - Środowisko uruchomieniowe dla komputerów z systemem Windows - Środowisko uruchomieniowe platformy .NET dla komputerów z systemem Windows służy do uruchamiania aplikacji Windows Forms i WPF na komputerze. Platforma .NET jest oprogramowaniem typu open source, działa na różnych platformach i jest obsługiwana przez firmę Microsoft. Mamy nadzieję, że Ci się podoba! - Dowiedz się więcej o platformie .NET Core - Następujące elementy zainstalowano w [DOTNETHOME] - - [BUNDLEMONIKER] - Zasoby - <A HREF="https://aka.ms/dotnet-docs">Dokumentacja</A> - <A HREF="https://aka.ms/20-p2-rel-notes">Informacje o wersji</A> - <A HREF="https://aka.ms/dotnet-tutorials">Samouczki</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">Telemetria programu .NET Core</A> - <A HREF="https://aka.ms/dev-privacy">Zasady zachowania poufności informacji</A> - <A HREF="https://aka.ms/dotnet-license-windows">Informacje o licencjonowaniu dla platformy .NET</A> - Klikając pozycję Zainstaluj, wyrażasz zgodę na następujące warunki. +/log log.txt - Tworzy dziennik w określonym pliku. Domyślnie plik dziennika jest tworzony w katalogu %TEMP%." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1046/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1046/bundle.wxl index 29e995968..5c5dc316d 100644 --- a/src/windowsdesktop/src/bundle/theme/1046/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1046/bundle.wxl @@ -1,75 +1,95 @@ - - Instalador do [WixBundleName] - [BUNDLEMONIKER] - Você só precisa de um shell, um editor de texto e 10 minutos de seu tempo. + + + + Tem certeza de que deseja cancelar? - Versão anterior - Ajuda de Instalação - /install | /repair | /uninstall | /layout [diretório] - instala, repara, desinstala ou +Tudo pronto? Então, vamos nessa!" /> + + + + &Fechar - &Concordo com os termos e condições da licença - &Opções - &Instalar - &Fechar - Opções de Instalação - Local de instalação: - &Navegar - &OK - &Cancelar - Progresso da Instalação - Processando: - Inicializando... - &Cancelar - Modificar Instalação - &Reparar - &Desinstalar - &Fechar - Reparação Concluída com Êxito - Desinstalação Concluída com Êxito - A instalação foi bem-sucedida - Instalação com Êxito - &Iniciar - Você deve reiniciar seu computador antes de usar o software. - &Reiniciar - &Fechar - Falha na Instalação - Falha na Instalação - Falha na Desinstalação - Falha na Reparação - Um ou mais problemas causaram falha na instalação. Corrija-os e tente instalar novamente. Para obter mais informações, consulte o <a href="#">arquivo de log</a>. - Você deve reiniciar seu computador para concluir a reversão do software. - &Reiniciar - &Fechar - Não há suporte para o [PRODUCT_NAME] neste sistema operacional. Para obter mais informações, confira [LINK_PREREQ_PAGE]. - O [PRODUCT_NAME] não tem suporte em sistemas operacionais x86. Instale usando o instalador x86 correspondente. - Arquivos em Uso - Os aplicativos a seguir estão usando arquivos que precisam ser atualizados: - Feche os &aplicativos e tente reiniciá-los. - &Não feche os aplicativos. Será necessária uma reinicialização. - &OK - &Cancelar - Runtime do Windows Desktop - O Runtime do .NET Windows Desktop é usado para executar aplicativos do Windows Forms e do WPF no seu computador. O .NET é um software livre, com plataforma cruzada e possui o suporte da Microsoft. Esperamos que você goste! - Saiba mais sobre o .NET Core - O seguinte foi instalado em [DOTNETHOME] - - [BUNDLEMONIKER] - Recursos - <A HREF="https://aka.ms/dotnet-docs">Documentação</A> - <A HREF="https://aka.ms/20-p2-rel-notes">Notas sobre a Versão</A> - <A HREF="https://aka.ms/dotnet-tutorials">Tutoriais</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">Telemetria do .NET Core</A> - <A HREF="https://aka.ms/dev-privacy">Política de Privacidade</A> - < A HREF = "https://aka.ms/dotnet-License-Windows" > Informações de licenciamento para .NET</A> - Ao clicar em instalar, você concorda com os termos a seguir. +/log log.txt - registra em um arquivo específico. Por padrão, um arquivo de log é criado em %TEMP%." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1049/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1049/bundle.wxl index 1a2d513b6..f11841f1a 100644 --- a/src/windowsdesktop/src/bundle/theme/1049/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1049/bundle.wxl @@ -1,75 +1,95 @@ - - Установщик [WixBundleName] - [BUNDLEMONIKER] - Вам требуется только оболочка, текстовый редактор и 10 минут времени. + + + + Вы действительно хотите отменить? - Предыдущая версия - Справка по установке - /install | /repair | /uninstall | /layout [каталог] — установка, восстановление, удаление или +Готовы? Тогда начинаем!" /> + + + + &Закрыть - Я &принимаю условия лицензии - &Параметры - &Установить - &Закрыть - Параметры установки - Расположение установки: - &Обзор - &ОК - Отм&ена - Ход установки - Обработка: - Идет инициализация... - Отм&ена - Изменение установки - &Исправить - &Удалить - &Закрыть - Восстановление успешно завершено - Удаление успешно завершено - Установка успешно завершена - Установка успешно завершена - &Запустить - Перед использованием программного обеспечения необходимо перезапустить компьютер. - &Перезапустить - &Закрыть - Настройка не завершена - Сбой установки - Сбой удаления - Сбой восстановления - Одна или несколько проблем вызывали сбой программы установки. Исправьте эти проблемы и попробуйте повторить установку. Дополнительные сведения см. в <a href="#">файле журнала</a>. - Необходимо перезагрузить компьютер, чтобы завершить откат программного обеспечения. - &Перезапустить - З&акрыть - Продукт [PRODUCT_NAME] не поддерживается в этой операционной системе. Дополнительные сведения: [LINK_PREREQ_PAGE]. - Продукт [PRODUCT_NAME] не поддерживается в операционных системах x86. Установите с помощью соответствующего установщика x86. - Используемые файлы - Следующие приложения используют файлы, которые следует обновить: - Закрыть &приложения и попытаться перезапустить их. - &Не закрывать приложения. Потребуется перезагрузка. - О&К - &Отмена - Среда выполнения Windows Desktop - Среда выполнения .NET Windows Desktop используется для запуска приложений Windows Forms и WPF на компьютерах. Среда .NET является открытой, кроссплатформенной и поддерживается Майкрософт. Надеемся, вам понравится! - Дополнительные сведения о .NET Core - Следующее было установлено в [DOTNETHOME] - - [BUNDLEMONIKER] - Ресурсы - <A HREF="https://aka.ms/dotnet-docs">Документация</A> - <A HREF="https://aka.ms/20-p2-rel-notes">Заметки о выпуске</A> - <A HREF="https://aka.ms/dotnet-tutorials">Руководства</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">Телеметрия .NET Core</A> - <A HREF="https://aka.ms/dev-privacy">Заявление о конфиденциальности</A> - <A HREF="https://aka.ms/dotnet-license-windows">Сведения о лицензировании .NET</A> - Нажимая кнопку "Установить", вы принимаете следующие условия. +/log log.txt — запись журнала в указанный файл. По умолчанию файл журнала создается в папке %TEMP%." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/1055/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1055/bundle.wxl index 1b932682c..cc4de72af 100644 --- a/src/windowsdesktop/src/bundle/theme/1055/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1055/bundle.wxl @@ -1,75 +1,95 @@ - - [WixBundleName] Yükleyicisi - [BUNDLEMONIKER] - Yalnızca bir kabuğa, bir metin düzenleyicisine ve 10 dakikalık bir zamana ihtiyacınız var. + + + + İptal etmek istediğinizden emin misiniz? - Önceki sürüm - Kurulum Yardımı - /install | /repair | /uninstall | /layout [dizin] - yükler, onarır, kaldırır ya da +Hazır mısınız? Haydi başlayalım!" /> + + + + &Kapat - Lisans &hüküm ve koşullarını kabul ediyorum - &Seçenekler - &Yükle - &Kapat - Kurulum Seçenekleri - Yükleme konumu: - &Gözat - &Tamam - İ&ptal - Kurulum İlerleme Durumu - İşleniyor: - Başlatılıyor... - İ&ptal - Kurulumu Değiştir - &Onar - K&aldır - &Kapat - Onarım Başarıyla Tamamlandı - Kaldırma Başarıyla Tamamlandı - Yükleme başarılı oldu - Kurulum Başarılı - &Başlat - Yazılımı kullanabilmek için bilgisayarınızı yeniden başlatmanız gerekiyor. - Yeniden &Başlat - &Kapat - Kurulum Başarısız - Kurulum Başarısız - Yükleme Başarısız - Onarım Başarısız - En az bir sorun nedeniyle kurulum başarısız oldu. Lütfen bu sorunları düzeltin ve kurulumu yeniden deneyin. Daha fazla bilgi için <a href="#">günlük dosyasına</a> bakın. - Yazılımın geri alınmasını tamamlamak için bilgisayarınızı yeniden başlatmanız gerekiyor. - Yeniden &Başlat - &Kapat - [PRODUCT_NAME] bu işletim sisteminde desteklenmiyor. Daha fazla bilgi için bkz. [LINK_PREREQ_PAGE]. - [PRODUCT_NAME], x86 işletim sistemlerinde desteklenmiyor. Lütfen karşılık gelen x86 yükleyicisini kullanarak yükleyin. - Kullanımda Olan Dosyalar - Şu uygulamalar güncelleştirilmesi gereken dosyaları kullanıyor: - &Uygulamaları kapatın ve yeniden başlatmayı deneyin. - &Uygulamaları kapatmayın. Sistemi yeniden başlatmanız gerekir. - &Tamam - &İptal - Windows Masaüstü Çalışma Zamanı - .NET Windows Masaüstü Çalışma Zamanı, Windows bilgisayarınızda Windows Forms ve WPF uygulamalarını çalıştırmak için kullanılır. .NET açık kaynaktır, platformlar arasında kullanılabilir ve Microsoft tarafından desteklenmektedir. Beğeneceğinizi umuyoruz! - .NET Core hakkında daha fazla bilgi edinin - Aşağıdakiler [DOTNETHOME] konumunda yüklendi - - [BUNDLEMONIKER] - Kaynaklar - <A HREF="https://aka.ms/dotnet-docs">Belgeler</A> - <A HREF="https://aka.ms/20-p2-rel-notes">Sürüm Notları</A> - <A HREF="https://aka.ms/dotnet-tutorials">Öğreticiler</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core Telemetrisi</A> - <A HREF="https://aka.ms/dev-privacy">Gizlilik Bildirimi</A> - <A HREF="https://aka.ms/dotnet-license-windows">.NET için Lisans Bilgileri</A> - Yükle'ye tıklayarak aşağıdaki koşulları kabul etmiş olursunuz. +/log log.txt - belirli bir günlük dosyası tutar. Varsayılan olarak %TEMP% içinde bir günlük dosyası oluşturulur." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/2052/bundle.wxl b/src/windowsdesktop/src/bundle/theme/2052/bundle.wxl index b24c59614..45745b5f9 100644 --- a/src/windowsdesktop/src/bundle/theme/2052/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/2052/bundle.wxl @@ -1,75 +1,95 @@ - - [WixBundleName] 安装程序 - [BUNDLEMONIKER] - 你只需要一个 shell、一个文本编辑器,还需花 10 分钟即可。 + + + + 是否确实要取消? - 上一版本 - 安装程序帮助 - /install | /repair | /uninstall | /layout [目录] - 安装、修复、卸载 +准备好了吗? 要设置? 让我们开始吧!" /> + + + + 关闭(&C) - 我同意许可条款和条件(&A) - 选项(&O) - 安装(&I) - 关闭(&C) - 安装选项 - 安装位置: - 浏览(&B) - 确定(&O) - 取消(&C) - 安装进度 - 正在处理: - 正在初始化… - 取消(&C) - 修改安装程序 - 修复(&R) - 卸载(&U) - 关闭(&C) - 成功完成了修复 - 成功完成了卸载 - 安装成功 - 设置成功 - 启动(&L) - 在使用此软件之前,您必须重新启动计算机。 - 重新启动(&R) - 关闭(&C) - 设置失败 - 安装失败 - 卸载失败 - 修复失败 - 一个或多个问题导致了安装失败。请修复这些问题,然后重试安装。有关详细信息,请参阅<a href="#">日志文件</a>。 - 必须重新启动计算机才能完成软件回退。 - 重新启动(&R) - 关闭(&C) - 此操作系统不支持 [PRODUCT_NAME]。有关详细信息,请参阅[LINK_PREREQ_PAGE]。 - x86 操作系统不支持该 [PRODUCT_NAME]。请使用相应的 x86 安装程序进行安装。 - 文件正在使用 - 以下应用程序正在使用的文件需要更新: - 关闭应用程序并尝试重启(&A)。 - 不关闭应用程序(&D)。需要重启。 - 确定(&O) - 取消(&C) - Windows Desktop 运行时 - .NET Windows Desktop 运行时用于在你的计算机上运行 Windows 窗体和 WPF 应用程序。.NET 是开源、跨平台的,且由 Microsoft 提供支持。希望你喜欢它! - 了解有关 .NET Core 的详细信息 - 以下项已安装到 [DOTNETHOME] - - [BUNDLEMONIKER] - 资源 - <A HREF="https://aka.ms/dotnet-docs">文档</A> - <A HREF="https://aka.ms/20-p2-rel-notes">发行说明</A> - <A HREF="https://aka.ms/dotnet-tutorials">教程</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">.NET Core 遥测</A> - <A HREF="https://aka.ms/dev-privacy">隐私声明</A> - <A HREF="https://aka.ms/dotnet-license-windows">.NET 的许可信息</A> - 单击“安装”即表示你同意以下条款。 +/log log.txt - 向特定文件写入日志。默认在 %TEMP% 中创建日志文件。" /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/bundle/theme/3082/bundle.wxl b/src/windowsdesktop/src/bundle/theme/3082/bundle.wxl index 5dfe23a1d..de588d5fe 100644 --- a/src/windowsdesktop/src/bundle/theme/3082/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/3082/bundle.wxl @@ -1,75 +1,95 @@ - - Instalador de [WixBundleName] - [BUNDLEMONIKER] - Solo necesita un shell, un editor de texto y 10 minutos. + + + + ¿Está seguro de que desea cancelar? - Versión anterior - Ayuda de configuración - /install | /repair | /uninstall | /layout [directory] - instala, repara, desinstala o +¿Preparados? ¿Listos? ¡Ya!" /> + + + + &Cerrar - &Acepto los términos y condiciones de licencia - &Opciones - &Instalar - &Cerrar - Opciones de instalación - Ubicación de instalación: - E&xaminar - &Aceptar - &Cancelar - Progreso de la instalación - Procesando: - Inicializando... - &Cancelar - Modificar instalación - &Reparar - &Desinstalar - &Cerrar - La reparación se completó correctamente - La desinstalación se completó correctamente - La instalación se realizó correctamente - La instalación o desinstalación se realizó correctamente - &Iniciar - Debe reiniciar el equipo para poder usar el software. - &Reiniciar - &Cerrar - Error de instalación - No se pudo instalar - No se pudo desinstalar - No se pudo reparar - Error de instalación debido a uno o varios problemas. Corrija los problemas e intente de nuevo la instalación. Para obtener más información, consulte el <a href="#">archivo de registro</a>. - Debe reiniciar el equipo para completar la reversión del software. - &Reiniciar - &Cerrar - [PRODUCT_NAME] no se admite en este sistema operativo. Para obtener más información, consulte [LINK_PREREQ_PAGE]. - [PRODUCT_NAME] no es compatible con los sistemas operativos x86. Instálelo con el instalador x86 correspondiente. - Archivos en uso - Las siguientes aplicaciones usan archivos que se deben actualizar: - Cerrar las &aplicaciones e intentar reiniciarlas. - &No cerrar las aplicaciones. Será necesario un reinicio. - &Aceptar - &Cancelar - Windows Desktop Runtime - .NET Windows Desktop Runtime se usa para ejecutar aplicaciones de Windows Forms y WPF en el equipo. Microsoft admite .NET, un código abierto multiplataforma. Esperamos que lo disfrute. - Más información sobre .NET Core - Lo siguiente se instaló en [DOTNETHOME] - - [BUNDLEMONIKER] - Recursos - <A HREF="https://aka.ms/dotnet-docs">Documentación</A> - <A HREF="https://aka.ms/20-p2-rel-notes">Notas de la versión</A> - <A HREF="https://aka.ms/dotnet-tutorials">Tutoriales</A> - <A HREF="https://aka.ms/dotnet-cli-telemetry">Telemetría de .NET Core</A> - <A HREF="https://aka.ms/dev-privacy">Declaración de privacidad</A> - <A HREF="https://aka.ms/dotnet-license-windows">Información de licencias de .NET</A> - Al hacer clic en Instalar, acepta los términos siguientes. +/log log.txt - se registra en un archivo específico. De forma predeterminada, se crea un archivo de registro en %TEMP%." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + `n + + + + + + + + + + + + + + + + + + + + diff --git a/src/windowsdesktop/src/sfx/Microsoft.WindowsDesktop.App.Runtime.sfxproj b/src/windowsdesktop/src/sfx/Microsoft.WindowsDesktop.App.Runtime.sfxproj index d60c55ebe..924c3b362 100644 --- a/src/windowsdesktop/src/sfx/Microsoft.WindowsDesktop.App.Runtime.sfxproj +++ b/src/windowsdesktop/src/sfx/Microsoft.WindowsDesktop.App.Runtime.sfxproj @@ -5,8 +5,22 @@ RuntimePack windowsdesktop-runtime windowsdesktop-runtime + win-x64;win-x86;win-arm64 + win-x64;win-x86;win-arm64 WindowsDesktop.SharedFramework LatestPatch + + + + false + false + + + 1 + true + + + @@ -41,6 +55,10 @@ + + + + diff --git a/src/windowsdesktop/tests/scripts/README.md b/src/windowsdesktop/tests/scripts/README.md new file mode 100644 index 000000000..3150feb38 --- /dev/null +++ b/src/windowsdesktop/tests/scripts/README.md @@ -0,0 +1,124 @@ +# Runtime Prerequisite Helper Scripts + +This directory contains helper scripts used to stage (or simulate) the .NET runtime MSIs that may be bundled into the WindowsDesktop WiX v5 installer. + +## Scripts + +### eng/scripts/runtime-prereqs/restore-runtime-prereqs.ps1 + +Stages the runtime MSI triad directly from the `Microsoft.Internal.Runtime.WindowsDesktop.Transport` package by invoking the WiX bundle project’s new `RestoreRuntimePrereqs` target. The script is used by CI and can be invoked locally to mirror the automated behavior. + +Parameters: + +- `-Architectures ` optional; defaults to `x64,x86,arm64` +- `-Configuration ` optional MSBuild configuration override +- `-MsbuildArgs ` optional passthrough arguments to `msbuild` +- `-CI` switch to mirror pipeline defaults (disables node reuse, etc.) +- `-VerboseLogging` switch for normal MSBuild verbosity + +Example (single architecture): + +```powershell +pwsh eng/scripts/runtime-prereqs/restore-runtime-prereqs.ps1 -Architectures x64 -VerboseLogging +``` + +The script writes staged MSIs into `artifacts/prereqs/` and echoes the detected runtime version. + +### acquire-runtime-msis.ps1 + +Acquires real runtime MSIs (host, hostfxr, runtime) from either a build artifact drop folder or an expanded runtime build ZIP, then normalizes them into the deterministic staging contract: + +```text +artifacts/prereqs// + dotnet-host-win-.msi + dotnet-hostfxr-win-.msi + dotnet-runtime-win-.msi + resolved-runtime-version.txt +``` + +Parameters: + +- `-Architecture ` (required) +- `-Destination ` optional (defaults to `artifacts/prereqs/`) +- `-SourceDrop ` path containing *un-renamed* runtime MSIs (copies the latest version of each) +- `-RuntimeBuildZip ` zip produced by a runtime build that contains the MSIs; expanded and processed + +Exactly one of `-SourceDrop` or `-RuntimeBuildZip` must be provided. + +Outputs: + +- Normalized MSI triad copied/renamed as above +- `resolved-runtime-version.txt` containing a single line `RuntimePrereqVersion=` (informational) + +Failure conditions: + +- Missing or unreadable input (exit 1/2/3) +- Fewer than all three MSIs discoverable (exit 4) + +### make-dummy-runtime-msis.ps1 + +Creates placeholder files (NOT valid MSIs) for local structural testing of the bundle build logic (e.g., verifying `IncludeRuntimeMSIs` gating). These placeholders allow the build to proceed through most WiX phases, but any step that requires actual MSI metadata will fail. + +Parameters: + +- `-Architecture ` (required) +- `-Destination ` optional (defaults to `artifacts/prereqs/`) +- `-Version ` optional, default `0.0.0-dummy` (recorded in `resolved-runtime-version.txt`) + +Outputs: + +- Three small text files named like real MSIs +- `resolved-runtime-version.txt` capturing the dummy version + +Caveats: + +- Do NOT publish or distribute bundles built with dummy files. +- Use only to verify conditional logic / build orchestration. + +## Build Integration + +The WiX project (`bundle.wixproj`) now exposes a `RestoreRuntimePrereqs` target that unpacks the transport package into `artifacts/prereqs/` and runs automatically before `StagePrereqRuntimeMsis`. If (and only if) the three normalized MSI files are present when `StagePrereqRuntimeMsis` runs, the bundle defines `IncludeRuntimeMSIs=true` and embeds them; otherwise it proceeds without them. + +Internal CI: the Windows build pipeline calls `eng/scripts/runtime-prereqs/restore-runtime-prereqs.ps1` before `cibuild`, ensuring the normalized triad is available. Missing or partial triad triggers a build warning or error per policy. +Public PR builds: typically do not supply real MSIs; the bundle is produced without runtime prereqs unless explicitly staged (either via the script above or manual copying). + +## Typical Workflows + +1. Acquire real runtime MSIs from an extracted runtime build: + +```powershell +pwsh src/windowsdesktop/tests/scripts/acquire-runtime-msis.ps1 -Architecture x64 -SourceDrop C:/path/to/runtime/msis +``` + +1. Acquire from a runtime build zip: + +```powershell +pwsh src/windowsdesktop/tests/scripts/acquire-runtime-msis.ps1 -Architecture arm64 -RuntimeBuildZip C:/drops/runtime-msis.zip +``` + +1. Generate dummy placeholders (structural test only): + +```powershell +pwsh src/windowsdesktop/tests/scripts/make-dummy-runtime-msis.ps1 -Architecture x86 -Version 9.0.0-dummy +``` + +1. Build the bundle after staging: + +```powershell +./build.cmd -configuration Release -architecture x64 +``` + +## Troubleshooting + +- If the bundle still excludes runtime MSIs, ensure all three normalized file names match exactly and are in the architecture-specific directory. +- Delete stale prereqs: `Remove-Item -Recurse -Force artifacts/prereqs` then re-run acquisition. +- Verify runtime version captured: `Get-Content artifacts/prereqs/x64/resolved-runtime-version.txt`. + +## Future Enhancements (Ideas) + +- Optional hash verification to ensure MSIs are authentic. +- Multi-architecture acquisition loop. +- Integration test that asserts gating behavior with/without the triad. + +--- +Maintainers: adjust this doc if the staging contract or target names change. diff --git a/src/windowsdesktop/tests/scripts/acquire-runtime-msis.ps1 b/src/windowsdesktop/tests/scripts/acquire-runtime-msis.ps1 new file mode 100644 index 000000000..480ba373c --- /dev/null +++ b/src/windowsdesktop/tests/scripts/acquire-runtime-msis.ps1 @@ -0,0 +1,48 @@ +# Purpose: Acquire real runtime MSIs (host, hostfxr, runtime) and normalize names for bundle build. +param( + [Parameter(Mandatory=$true)][string]$Architecture, + [string]$Destination = (Join-Path (Get-Location) "artifacts/prereqs/$Architecture"), + [string]$SourceDrop, + [string]$RuntimeBuildZip +) + +Write-Host "[acquire-runtime-msis] Architecture=$Architecture" +New-Item -Force -ItemType Directory -Path $Destination | Out-Null + +if (-not $SourceDrop -and -not $RuntimeBuildZip) { + Write-Host "Provide -SourceDrop or -RuntimeBuildZip"; exit 1 +} + +if ($SourceDrop) { + if (-not (Test-Path $SourceDrop)) { Write-Host "SourceDrop not found: $SourceDrop"; exit 2 } + Write-Host "Copying MSIs from $SourceDrop -> $Destination" + Get-ChildItem -Path $SourceDrop -Filter "dotnet-*-win-$Architecture*.msi" | Copy-Item -Destination $Destination -Force +} +elseif ($RuntimeBuildZip) { + if (-not (Test-Path $RuntimeBuildZip)) { Write-Host "RuntimeBuildZip not found: $RuntimeBuildZip"; exit 3 } + Write-Host "Expanding $RuntimeBuildZip -> $Destination" + Expand-Archive -Path $RuntimeBuildZip -DestinationPath $Destination -Force +} + +function PickLatest([string]$pattern) { + $candidates = Get-ChildItem -Path $Destination -Filter $pattern | Sort-Object Name -Descending + if ($candidates.Count -gt 0) { return $candidates[0].FullName } + return $null +} + +$_host = PickLatest "dotnet-host-*-win-$Architecture.msi" +$_hostfxr = PickLatest "dotnet-hostfxr-*-win-$Architecture.msi" +$_runtime = PickLatest "dotnet-runtime-*-win-$Architecture.msi" + +if (-not ($_host -and $_hostfxr -and $_runtime)) { + Write-Host "Missing required MSIs after acquisition. Present:"; Get-ChildItem $Destination -Filter "dotnet-*-win-$Architecture*.msi" | Select-Object Name + exit 4 +} + +Copy-Item $_host (Join-Path $Destination "dotnet-host-win-$Architecture.msi") -Force +Copy-Item $_hostfxr (Join-Path $Destination "dotnet-hostfxr-win-$Architecture.msi") -Force +Copy-Item $_runtime (Join-Path $Destination "dotnet-runtime-win-$Architecture.msi") -Force + +"RuntimePrereqVersion=" + ([IO.Path]::GetFileNameWithoutExtension($_runtime)) | Out-File (Join-Path $Destination "resolved-runtime-version.txt") -Encoding UTF8 + +Write-Host "[acquire-runtime-msis] Final staged files:"; Get-ChildItem $Destination -Filter "dotnet-*-win-$Architecture.msi" | Select-Object Name diff --git a/src/windowsdesktop/tests/scripts/make-dummy-runtime-msis.ps1 b/src/windowsdesktop/tests/scripts/make-dummy-runtime-msis.ps1 new file mode 100644 index 000000000..9372fe5e4 --- /dev/null +++ b/src/windowsdesktop/tests/scripts/make-dummy-runtime-msis.ps1 @@ -0,0 +1,24 @@ +# Purpose: Create placeholder (non-valid) MSI files so the bundle build exercises gating logic. +param( + [Parameter(Mandatory=$true)][string]$Architecture, + [string]$Destination = (Join-Path (Get-Location) "artifacts/prereqs/$Architecture"), + [string]$Version = "0.0.0-dummy" +) + +Write-Host "[make-dummy-runtime-msis] Architecture=$Architecture Version=$Version" +New-Item -Force -ItemType Directory -Path $Destination | Out-Null + +$files = @( + "dotnet-host-win-$Architecture.msi", + "dotnet-hostfxr-win-$Architecture.msi", + "dotnet-runtime-win-$Architecture.msi" +) + +foreach ($f in $files) { + $path = Join-Path $Destination $f + "Dummy MSI placeholder for $f version $Version" | Out-File $path -Encoding ASCII +} + +"RuntimePrereqVersion=$Version" | Out-File (Join-Path $Destination "resolved-runtime-version.txt") -Encoding UTF8 + +Write-Host "[make-dummy-runtime-msis] Created placeholder files:"; Get-ChildItem $Destination | Select-Object Name, Length From a0e7cbdb37626e7cc8e42963b03f604ea189ff7f Mon Sep 17 00:00:00 2001 From: Merrie McGaw Date: Wed, 8 Oct 2025 10:06:19 -0700 Subject: [PATCH 2/7] Address Will's review feedback --- Directory.Packages.props | 12 ++++++------ eng/Versions.props | 12 ++---------- src/windowsdesktop/src/Directory.Build.props | 12 ++++++------ src/windowsdesktop/src/bundle/Product.targets | 2 +- src/windowsdesktop/src/bundle/Wix.props | 2 +- src/windowsdesktop/src/bundle/bundle.wixproj | 6 ------ 6 files changed, 16 insertions(+), 30 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 4b573c5b8..d9ab369bb 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -73,12 +73,12 @@ - - - - - - + + + + + + diff --git a/eng/Versions.props b/eng/Versions.props index 6592b3dbc..13378557e 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -32,16 +32,8 @@ 5.0.0 8.1.2 - - 5.0.2-dotnet.2737382 - - - 5.0.2-dotnet.2737382 - 5.0.2-dotnet.2737382 - 5.0.2-dotnet.2737382 - 5.0.2-dotnet.2737382 - 5.0.2-dotnet.2737382 - 5.0.2-dotnet.2737382 + + $(DefaultWixSdkVersion) $(MicrosoftNETCoreAppRefVersion) diff --git a/src/windowsdesktop/src/Directory.Build.props b/src/windowsdesktop/src/Directory.Build.props index 0a6fdf943..300a06f35 100644 --- a/src/windowsdesktop/src/Directory.Build.props +++ b/src/windowsdesktop/src/Directory.Build.props @@ -18,12 +18,12 @@ - - - - - - + + + + + + diff --git a/src/windowsdesktop/src/bundle/Product.targets b/src/windowsdesktop/src/bundle/Product.targets index 890053832..87bbcd3cb 100644 --- a/src/windowsdesktop/src/bundle/Product.targets +++ b/src/windowsdesktop/src/bundle/Product.targets @@ -1,6 +1,6 @@ - $(IntermediateOutputPath)d\ + $(IntermediateOutputPath)dark\ $(BaseIntermediateOutputPath) $(DefineConstants);DepsPath=$(DepsPath) $(DefineConstants);InstallersOutputPath=$(InstallersOutputPath) diff --git a/src/windowsdesktop/src/bundle/Wix.props b/src/windowsdesktop/src/bundle/Wix.props index 8c5af3625..a2afa0fe7 100644 --- a/src/windowsdesktop/src/bundle/Wix.props +++ b/src/windowsdesktop/src/bundle/Wix.props @@ -30,7 +30,7 @@ - $(ArtifactsObjDir)/WixCommandPackages + $(ArtifactsObjDir)WixCommandPackages $(InstallersOutputPath) diff --git a/src/windowsdesktop/src/bundle/bundle.wixproj b/src/windowsdesktop/src/bundle/bundle.wixproj index 07e577a43..812908291 100644 --- a/src/windowsdesktop/src/bundle/bundle.wixproj +++ b/src/windowsdesktop/src/bundle/bundle.wixproj @@ -94,12 +94,6 @@ - - - - - - From 1dc7743c609a47decdaa53d64286d2ce39e8d728 Mon Sep 17 00:00:00 2001 From: Merrie McGaw Date: Wed, 8 Oct 2025 10:27:18 -0700 Subject: [PATCH 3/7] Address joeloff's PR feedback: Add upgrade policy registry search refs and remove MSI InstallCondition attributes --- src/windowsdesktop/src/bundle/bundle.wxs | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/windowsdesktop/src/bundle/bundle.wxs b/src/windowsdesktop/src/bundle/bundle.wxs index 5f60fbb84..1ecf45750 100644 --- a/src/windowsdesktop/src/bundle/bundle.wxs +++ b/src/windowsdesktop/src/bundle/bundle.wxs @@ -157,6 +157,11 @@ Path="[ProgramFiles64Folder]dotnet"/> + + + + + - - - - - + + + + + - - - - - + + + + + - - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1029/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1029/bundle.wxl index 0d28664f5..03ac051bc 100644 --- a/src/windowsdesktop/src/bundle/theme/1029/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1029/bundle.wxl @@ -1,95 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt – zapíše protokol do konkrétního souboru. Ve výchozím nastavení bude soubor protokolu vytvořen v adresáři %TEMP%."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1031/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1031/bundle.wxl index f43f4c0d6..ef893e894 100644 --- a/src/windowsdesktop/src/bundle/theme/1031/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1031/bundle.wxl @@ -1,96 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +/log log.txt - logs to a specific file. By default a log file is created in %TEMP%."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1033/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1033/bundle.wxl index f8c7d1d4f..580dca65a 100644 --- a/src/windowsdesktop/src/bundle/theme/1033/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1033/bundle.wxl @@ -1,4 +1,4 @@ - + @@ -78,4 +78,4 @@ - + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1036/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1036/bundle.wxl index e30a11219..c2ca1118e 100644 --- a/src/windowsdesktop/src/bundle/theme/1036/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1036/bundle.wxl @@ -1,95 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt – permet d’enregistrer dans un fichier spécifique. Par défaut, un fichier journal est créé dans %TEMP%."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1040/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1040/bundle.wxl index c5b6c8622..ff0ff351d 100644 --- a/src/windowsdesktop/src/bundle/theme/1040/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1040/bundle.wxl @@ -1,95 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt - Consente di eseguire la registrazione in un file specifico. Per impostazione predefinita, viene creato un file di log in %TEMP%."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1041/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1041/bundle.wxl index bbe8ee514..bc8bff525 100644 --- a/src/windowsdesktop/src/bundle/theme/1041/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1041/bundle.wxl @@ -1,96 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt - logs to a specific file. By default a log file is created in %TEMP%."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1042/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1042/bundle.wxl index 4dd80ee92..560ac568d 100644 --- a/src/windowsdesktop/src/bundle/theme/1042/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1042/bundle.wxl @@ -1,95 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt - 특정 파일에 로그합니다. 기본적으로 로그 파일은 %TEMP%에 만들어집니다."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1045/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1045/bundle.wxl index 88be94ec4..662c53fa9 100644 --- a/src/windowsdesktop/src/bundle/theme/1045/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1045/bundle.wxl @@ -1,95 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt - logs to a specific file. By default a log file is created in %TEMP%."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1046/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1046/bundle.wxl index 5c5dc316d..d2b5053fb 100644 --- a/src/windowsdesktop/src/bundle/theme/1046/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1046/bundle.wxl @@ -1,95 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt - logs to a specific file. By default a log file is created in %TEMP%."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1049/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1049/bundle.wxl index f11841f1a..eb7b9621d 100644 --- a/src/windowsdesktop/src/bundle/theme/1049/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1049/bundle.wxl @@ -1,95 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt — журналы в определенном файле. По умолчанию файл журнала создается в папке %TEMP%."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/1055/bundle.wxl b/src/windowsdesktop/src/bundle/theme/1055/bundle.wxl index cc4de72af..c8f3da9ad 100644 --- a/src/windowsdesktop/src/bundle/theme/1055/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/1055/bundle.wxl @@ -1,95 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt - belirli bir dosyaya kaydeder. Varsayılan olarak %TEMP% içinde bir günlük dosyası oluşturulur."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/2052/bundle.wxl b/src/windowsdesktop/src/bundle/theme/2052/bundle.wxl index 45745b5f9..84a494cb9 100644 --- a/src/windowsdesktop/src/bundle/theme/2052/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/2052/bundle.wxl @@ -1,95 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt - 记录到特定文件。默认在 %TEMP% 中创建日志文件。"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file diff --git a/src/windowsdesktop/src/bundle/theme/3082/bundle.wxl b/src/windowsdesktop/src/bundle/theme/3082/bundle.wxl index de588d5fe..3a51abff4 100644 --- a/src/windowsdesktop/src/bundle/theme/3082/bundle.wxl +++ b/src/windowsdesktop/src/bundle/theme/3082/bundle.wxl @@ -1,95 +1,87 @@ - + - - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - `n +/log log.txt: registra en un archivo específico. De manera predeterminada, se crea un archivo de registro en %TEMP%."/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - + + + + + - - - - - + + + + + - - - - - + + + + + \ No newline at end of file From a04738dc087dad954b019826b3171dd95190d45e Mon Sep 17 00:00:00 2001 From: Merrie McGaw Date: Thu, 9 Oct 2025 15:40:49 -0700 Subject: [PATCH 5/7] Fix SWID tag location, indentation, and enable backwards compatible GUID generation --- src/windowsdesktop/src/bundle/Wix.props | 2 ++ src/windowsdesktop/src/bundle/Wix.targets | 35 ++++++++++++----------- src/windowsdesktop/src/bundle/bundle.wxs | 8 +++++- 3 files changed, 27 insertions(+), 18 deletions(-) diff --git a/src/windowsdesktop/src/bundle/Wix.props b/src/windowsdesktop/src/bundle/Wix.props index a2afa0fe7..17c1ba34a 100644 --- a/src/windowsdesktop/src/bundle/Wix.props +++ b/src/windowsdesktop/src/bundle/Wix.props @@ -13,6 +13,8 @@ full + + true diff --git a/src/windowsdesktop/src/bundle/Wix.targets b/src/windowsdesktop/src/bundle/Wix.targets index 843199599..27656a74c 100644 --- a/src/windowsdesktop/src/bundle/Wix.targets +++ b/src/windowsdesktop/src/bundle/Wix.targets @@ -227,17 +227,17 @@ $(BundleBaseName) $(TargetName)$(TargetExt) $(TargetDir)$(TargetFileName) - $(DefineConstants);Version=$(MajorVersion).$(MinorVersion).$(PatchVersion) - <_NormalizedPreReleaseLabel>$([System.String]::Copy('$(PreReleaseVersionLabel)').ToLowerInvariant()) - <_IsPreReleaseBuild Condition="'$(_NormalizedPreReleaseLabel)' != '' AND '$(_NormalizedPreReleaseLabel)' != 'rtm'">true - <_IsPreReleaseBuild Condition="'$(_IsPreReleaseBuild)'==''">false - - $(DefineConstants);BundleVersion=$(MajorVersion).$(MinorVersion).$(PatchVersion).$(VersionSuffixDateStamp) - $(DefineConstants);BundleVersion=$(MajorVersion).$(MinorVersion).$(PatchVersion).50000 + $(DefineConstants);Version=$(MajorVersion).$(MinorVersion).$(PatchVersion) + <_NormalizedPreReleaseLabel>$([System.String]::Copy('$(PreReleaseVersionLabel)').ToLowerInvariant()) + <_IsPreReleaseBuild Condition="'$(_NormalizedPreReleaseLabel)' != '' AND '$(_NormalizedPreReleaseLabel)' != 'rtm'">true + <_IsPreReleaseBuild Condition="'$(_IsPreReleaseBuild)'==''">false + + $(DefineConstants);BundleVersion=$(MajorVersion).$(MinorVersion).$(PatchVersion).$(VersionSuffixDateStamp) + $(DefineConstants);BundleVersion=$(MajorVersion).$(MinorVersion).$(PatchVersion).50000 $(DefineConstants);Manufacturer=Microsoft Corporation $(DefineConstants);SdkBrandName=Microsoft Windows Desktop Runtime @@ -342,12 +342,12 @@ $(IntermediateOutputPath)wixpack - $(WixCommandPackagesDir) - $(ArtifactsPackagesDir)NonShipping - $(WixpackOutputDir)\$(TargetFileName).wixpack.zip - $(OutputName).exe - - $(WixpackOutputDir)\$(BundleShippingName).wixpack.zip + $(WixCommandPackagesDir) + $(ArtifactsPackagesDir)NonShipping + $(WixpackOutputDir)\$(TargetFileName).wixpack.zip + $(OutputName).exe + + $(WixpackOutputDir)\$(BundleShippingName).wixpack.zip <_BundlePdbFile>$(TargetDir)$(TargetName).wixpdb @@ -380,4 +380,5 @@ + diff --git a/src/windowsdesktop/src/bundle/bundle.wxs b/src/windowsdesktop/src/bundle/bundle.wxs index 1ecf45750..4306ff2a1 100644 --- a/src/windowsdesktop/src/bundle/bundle.wxs +++ b/src/windowsdesktop/src/bundle/bundle.wxs @@ -49,7 +49,13 @@ - + + + + + + Date: Fri, 10 Oct 2025 09:48:50 -0700 Subject: [PATCH 6/7] Fix localization: Remove duplicate LCID 1033 from Payload loop LCID 1033 (English) was specified twice - once as the default LocalizationFile attribute and again in the Payload foreach loop. This duplication prevented WiX from properly loading alternate language files based on system locale. The LocalizationFile attribute should specify the default/fallback language, with Payloads only for additional languages. --- src/windowsdesktop/src/bundle/bundle.wxs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/windowsdesktop/src/bundle/bundle.wxs b/src/windowsdesktop/src/bundle/bundle.wxs index 4306ff2a1..83983736d 100644 --- a/src/windowsdesktop/src/bundle/bundle.wxs +++ b/src/windowsdesktop/src/bundle/bundle.wxs @@ -41,7 +41,7 @@ Theme="rtfLicense" ThemeFile="bundle.thm" /> - + From cafc967efce453b34462d9f519d827451e6ae057 Mon Sep 17 00:00:00 2001 From: Merrie McGaw Date: Fri, 10 Oct 2025 10:49:20 -0700 Subject: [PATCH 7/7] Fix architecture-specific ProviderKey for side-by-side installations --- src/windowsdesktop/src/bundle/Wix.targets | 6 +- src/windowsdesktop/src/bundle/bundle.wxs | 90 +++++++++++++++++++++++ 2 files changed, 93 insertions(+), 3 deletions(-) diff --git a/src/windowsdesktop/src/bundle/Wix.targets b/src/windowsdesktop/src/bundle/Wix.targets index 27656a74c..5f531d5c3 100644 --- a/src/windowsdesktop/src/bundle/Wix.targets +++ b/src/windowsdesktop/src/bundle/Wix.targets @@ -294,9 +294,9 @@ - + - $(UpgradeCodeSeed) $(MajorVersion).$(MinorVersion) + $(UpgradeCodeSeed) $(TargetArchitecture) $(MajorVersion).$(MinorVersion) @@ -312,7 +312,7 @@ $(DefineConstants);UpgradeCode={$(GeneratedUpgradeCode)} - + diff --git a/src/windowsdesktop/src/bundle/bundle.wxs b/src/windowsdesktop/src/bundle/bundle.wxs index 83983736d..3ceb7baec 100644 --- a/src/windowsdesktop/src/bundle/bundle.wxs +++ b/src/windowsdesktop/src/bundle/bundle.wxs @@ -199,6 +199,7 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file