Skip to content
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

Windows: install dotnet and latest wix #354

Merged
merged 1 commit into from
Jul 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion IMG_SFX
Original file line number Diff line number Diff line change
@@ -1 +1 @@
20240701t155130z-f40f39d13
20240702t180702z-f40f39d13
18 changes: 10 additions & 8 deletions win_images/win_packaging.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -14,14 +14,16 @@ retryInstall git archiver psexec golang mingw StrawberryPerl; Check-Exit
# Update service is required for dotnet
Set-Service -Name wuauserv -StartupType "Manual"; Check-Exit

# dotnet is required for wixtoolset
# Allowing chocolaty to install dotnet breaks in an entirely
# non-debuggable way. Workaround this by installing it as
# a server-feature first.
Install-WindowsFeature -Name Net-Framework-Core; Check-Exit

# Install wixtoolset for installer build & test.
retryInstall wixtoolset; Check-Exit
# Install dotnet as that's the best way to install WiX 4+
# Choco does not support installing anything over WiX 3.14
Invoke-WebRequest -Uri https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.ps1 -OutFile dotnet-install.ps1
.\dotnet-install.ps1 -InstallDir 'C:\Program Files\dotnet'
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would have installed it using winget because it automatically adds dotnet to the %PATH%. Using the script works too, though, and there may be other reasons to choose it that I am not aware of.

What I have found is:

The intended use of the scripts is for Continuous Integration (CI) scenarios, where:
- The SDK needs to be installed without user interaction and without admin rights.
- The SDK installation doesn't need to persist across multiple CI runs.

The typical sequence of events:
. CI is triggered.
. CI installs the SDK using one of these scripts.
. CI finishes its work and clears temporary data including the SDK installation.

To set up a development environment or to run apps, use the installers rather than these scripts.

In the build_windows.md we are suggesting to install dotnet using winget.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I pushed a separate commit here to use winget. If this works out, even better. Thanks.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Drive-by non-expert comment: Remember this is preparing a VM image to run CI w/o having to install anything during runtime. So the "typical sequence" isn't completely correct in this context. This makes me think that having %PATH% all ready to go at CI runtime might be a good idea - it will simplify the CI scripts to which more developers are exposed.

(please take this comment with a grain of salt)


# Configure NuGet sources for dotnet to fetch wix (and other packages) from
& 'C:\Program Files\dotnet\dotnet.exe' nuget add source https://api.nuget.org/v3/index.json -n nuget.org
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Locally, I didn't had to do that. dotnet tool install --global wix worked right after dotnet installation. No extra configuration of sources was required. That may be related to the use of winget instead of the pwsh script though.


# Install wix
& 'C:\Program Files\dotnet\dotnet.exe' tool install --global wix

# Install Hyper-V
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All -NoRestart
Expand Down