-
Notifications
You must be signed in to change notification settings - Fork 1.1k
[WiX 5] Migrate SDK from v3 to v5 #48699
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR migrates the .NET SDK installer from WiX 3.14 to WiX 5.0.2, modernizing the build process and improving maintainability. The migration involves replacing PowerShell-based build scripts with modern WiX SDK projects and updating XML schemas to the v5 format.
Key Changes
- Replaced PowerShell scripts (
generatemsi.ps1
,generatebundle.ps1
, etc.) with WiX SDK-style project files - Migrated XML namespace from v3 schema (
http://schemas.microsoft.com/wix/2006/wi
) to v5 schema (http://wixtoolset.org/schemas/v4/wxs
) - Consolidated MSI authoring using shared components and modern WiX SDK build targets
Reviewed Changes
Copilot reviewed 67 out of 72 changed files in this pull request and generated 3 comments.
Show a summary per file
File | Description |
---|---|
src/Layout/redist/targets/GenerateMSIs.targets | Updated build targets to use MSBuild instead of PowerShell scripts |
src/Layout/pkg/windows/**/*.wxs | Converted WiX source files from v3 to v5 schema |
src/Layout/pkg/windows/msis/**/*.wixproj | New WiX SDK projects for MSI generation |
src/Layout/pkg/windows/bundles/sdk/**/* | New bundle project and theme files for installer UI |
src/Layout/pkg/windows/generate*.ps1 | Removed legacy PowerShell build scripts |
Comments suppressed due to low confidence (1)
src/Layout/pkg/windows/bundles/sdk/LCID/1042/bundle.wxl:56
- Inconsistent variable naming: '[DOTNETHOME_x64]' uses lowercase 'x64' while '[DOTNETHOME_X86]' uses uppercase 'X86'. This should be consistent across all variables.
<String Id="InstallPathx64x86" Value="x64 SDK 설치의 설치 경로: " [DOTNETHOME_x64]" x86 SDK 설치의 경우와 같을 수 없습니다. " [DOTNETHOME_X86]"" />
Co-authored-by: Copilot <[email protected]>
Co-authored-by: Copilot <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Incredible work. Just a few nits but everything looks great! I'm excited for getting so much legacy scripts and cruft deleted.
<!-- These project references ensure that package references for WiX extensions are correctly restored. The Idle target is a no-op as the | ||
projects are built later when computed properties are available. These properties do not exist when projects are evaluated. --> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a crazy "hack". I've never seen that Idle target used before. Is this something @rainersigwald suggested?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, @rainersigwald and I chatted about this. The problem with invoking msbuild
tasks is that restore gets broken. I spent a couple of weeks prototyping different approaches. This is the only solution that allows restore to work and have a consistent MSBuild SDK experience. The alternative is to move back to the WiX CLI, basically do what the .ps1 scripts used to do. And after talking to Rob (from WiX toolset), he mentioned that the SDK style approach is the preferred way.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Submitted #49964 as a clean-up
Co-authored-by: Michael Yanni <[email protected]>
Overview
This PR migrates the .NET SDK from WiX 3.14 to using 5.0.2. The package used is different from the public toolset and built from source.
Changes
dotnet-sdk.proj
and assign anIdle
target. This allows the projects to participate in restore operations, but avoids being built as an actual reference. The projects depend on various values that are unavailable when project references are resolved.generate*.ps1
scripts that previously invokedCandle
andLight
. These tools no longer exist in v5.UI changes
WixBundleAction
.Hypertext
elements. Only one link per control to ensure tab order is consistent.lang
option.Finalizer
ExePackage
authoring for more details).None
)