Skip to content

Commit 94698e3

Browse files
Cross-platform support
1 parent 786625f commit 94698e3

34 files changed

Lines changed: 1107 additions & 611 deletions

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
*.userosscache
1111
*.sln.docstates
1212

13+
# Thumbnails (macOS)
14+
._*
15+
1316
# User-specific files (MonoDevelop/Xamarin Studio)
1417
*.userprefs
1518

@@ -186,7 +189,7 @@ publish/
186189
*.azurePubxml
187190
# Note: Comment the next line if you want to checkin your web deploy settings,
188191
# but database connection strings (with potential passwords) will be unencrypted
189-
*.pubxml
192+
# *.pubxml
190193
*.publishproj
191194

192195
# Microsoft Azure Web App publish settings. Comment the next line if you want to

.gitmodules

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
[submodule "src/WingetCreateCore/Common/Msi/rust-msi"]
2+
path = src/WingetCreateCore/Common/Msi/rust-msi\
3+
# TODO: Switch to mdsteele/rust-msi once the PR is merged
4+
# https://github.com/mdsteele/rust-msi/pull/18
5+
url = https://github.com/vedantmgoyal9/rust-msi
6+
shallow = true

.vsconfig

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22
"version": "1.0",
33
"components": [
44
"Microsoft.VisualStudio.Workload.ManagedDesktop",
5-
"Microsoft.VisualStudio.Workload.Universal"
5+
"Microsoft.VisualStudio.Workload.Universal",
6+
"Microsoft.VisualStudio.Component.Windows11SDK.26100",
7+
"Microsoft.VisualStudio.Component.VC.Tools.ARM64",
8+
"Microsoft.VisualStudio.Component.VC.Tools.ARM64EC"
9+
],
10+
"extensions": [
11+
"https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2022InstallerProjects"
612
]
713
}

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ Below is our guidance for how to report issues, propose new features, and submit
44

55
## Open Development Workflow
66

7-
The Windows Package Manager Manifest Creator team is VERY active in this GitHub Repository. In fact, we live in it all day long and carry out all our development in the open!
7+
The Windows Package Manager team is VERY active in this GitHub Repository. In fact, we live in it all day long and carry out all our development in the open!
88

99
When the team finds issues we file them in the repository. When we propose new ideas or think-up new features, we file new feature requests. When we work on fixes or features, we create branches and work on those improvements. And when PRs are reviewed, we review in public - including all the good, the bad, and the ugly parts.
1010

README.md

Lines changed: 61 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
21
# Welcome to the Windows Package Manager Manifest Creator repository.
32

4-
This repository contains the source code for the Windows Package Manager Manifest Creator. The Windows Package Manager Manifest Creator is designed to help generate or update manifest files for the [Community repo](https://github.com/microsoft/winget-pkgs).
3+
This repository contains the source code for the Windows Package Manager Manifest Creator. The Windows Package Manager Manifest Creator is designed to help generate or update manifest files for the [Community repo](https://github.com/microsoft/winget-pkgs).
54

65
## Overview
76

@@ -15,7 +14,7 @@ For your convenience, **WingetCreate** can be acquired a number of ways.
1514

1615
### Install from the github repo
1716

18-
The **Windows Package Manager Manifest Creator** is available for download from the [winget-create](https://github.com/microsoft/winget-create/releases) repository. To install the package, simply click the the MSIX file in your browser. Once it has downloaded, click open.
17+
The **Windows Package Manager Manifest Creator** is available for download from the [winget-create](https://github.com/microsoft/winget-create/releases) repository. To install the package, simply click the the MSIX file in your browser. Once it has downloaded, click open.
1918

2019
### Install with Windows Package Manager
2120

@@ -43,19 +42,19 @@ choco install wingetcreate
4342

4443
**WingetCreate** has the following commands:
4544

46-
| Command | Description |
47-
| ------- | ----------- |
48-
| [New](doc/new.md) | Command for creating a new manifest from scratch |
49-
| [Update](doc/update.md) | Command for updating an existing manifest |
50-
| [New-Locale](doc/new-locale.md) | Command for creating a new locale for an existing manifest |
51-
| [Update-Locale](doc/update-locale.md) | Command for updating a locale for an existing manifest |
52-
| [Submit](doc/submit.md) | Command for submitting an existing PR |
53-
| [Show](doc/show.md) | Command for displaying existing manifests |
54-
| [Token](doc/token.md) | Command for managing cached GitHub personal access tokens |
55-
| [Settings](doc/settings.md) | Command for editing the settings file configurations |
56-
| [Cache](doc/cache.md) | Command for managing downloaded installers stored in cache
57-
| [Info](doc/info.md) | Displays information about the client |
58-
| [-?](doc/help.md) | Displays command line help |
45+
| Command | Description |
46+
| ------------------------------------- | ---------------------------------------------------------- |
47+
| [New](doc/new.md) | Command for creating a new manifest from scratch |
48+
| [Update](doc/update.md) | Command for updating an existing manifest |
49+
| [New-Locale](doc/new-locale.md) | Command for creating a new locale for an existing manifest |
50+
| [Update-Locale](doc/update-locale.md) | Command for updating a locale for an existing manifest |
51+
| [Submit](doc/submit.md) | Command for submitting an existing PR |
52+
| [Show](doc/show.md) | Command for displaying existing manifests |
53+
| [Token](doc/token.md) | Command for managing cached GitHub personal access tokens |
54+
| [Settings](doc/settings.md) | Command for editing the settings file configurations |
55+
| [Cache](doc/cache.md) | Command for managing downloaded installers stored in cache |
56+
| [Info](doc/info.md) | Displays information about the client |
57+
| [-?](doc/help.md) | Displays command line help |
5958

6059
Click on the individual commands to learn more.
6160

@@ -72,22 +71,22 @@ You can also check out this [episode of Open at Microsoft](https://learn.microso
7271

7372
### Using the standalone exe:
7473

75-
The latest version of the standalone exe can be found at https://aka.ms/wingetcreate/latest, and the latest preview version can be found at https://aka.ms/wingetcreate/preview, both of these require [.NET Runtime 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) to be installed on the build machine. To install this on your build machine in your pipeline, you can include the following dotnet task:
74+
The latest version of the standalone exe can be found at https://aka.ms/wingetcreate/latest, and the latest preview version can be found at https://aka.ms/wingetcreate/preview, both of these require [.NET Runtime 8.0](https://dotnet.microsoft.com/en-us/download/dotnet/8.0) to be installed on the build machine. To install this on your build machine in your pipeline, you can include the following dotnet task:
7675

7776
```yaml
78-
- task: UseDotNet@2
79-
displayName: 'Install .NET Runtime'
80-
inputs:
81-
packageType: sdk
82-
version: '6.x'
83-
installationPath: '$(ProgramFiles)\dotnet'
77+
- task: UseDotNet@2
78+
displayName: 'Install .NET Runtime'
79+
inputs:
80+
packageType: sdk
81+
version: '8.x'
82+
installationPath: '$(ProgramFiles)\dotnet'
8483
```
8584
8685
Or you can utilize a PowerShell task and run the following script.
8786
8887
```PowerShell
8988
Invoke-WebRequest https://dot.net/v1/dotnet-install.ps1 -OutFile dotnet-install.ps1
90-
.\dotnet-install.ps1 -Runtime dotnet -Architecture x64 -Version 6.0.13 -InstallDir $env:ProgramFiles\dotnet
89+
.\dotnet-install.ps1 -Runtime dotnet -Architecture x64 -Version 8 -InstallDir $env:ProgramFiles\dotnet
9190
```
9291

9392
> [!IMPORTANT]
@@ -109,14 +108,14 @@ Windows Server 2022 now supports App Execution Aliases, which means the alias `w
109108
110109
```yaml
111110
- powershell: |
112-
# Download and install C++ Runtime framework package.
113-
iwr https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx -OutFile $(vcLibsBundleFile)
114-
Add-AppxPackage $(vcLibsBundleFile)
115-
116-
# Download Winget-Create msixbundle, install, and execute update.
117-
iwr https://aka.ms/wingetcreate/latest/msixbundle -OutFile $(appxBundleFile)
118-
Add-AppxPackage $(appxBundleFile)
119-
wingetcreate update Microsoft.WingetCreate -u $(packageUrl) -v $(manifestVersion) -t $(GITHUB_PAT) --submit
111+
# Download and install C++ Runtime framework package.
112+
iwr https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx -OutFile $(vcLibsBundleFile)
113+
Add-AppxPackage $(vcLibsBundleFile)
114+
115+
# Download Winget-Create msixbundle, install, and execute update.
116+
iwr https://aka.ms/wingetcreate/latest/msixbundle -OutFile $(appxBundleFile)
117+
Add-AppxPackage $(appxBundleFile)
118+
wingetcreate update Microsoft.WingetCreate -u $(packageUrl) -v $(manifestVersion) -t $(GITHUB_PAT) --submit
120119
```
121120
122121
The CLI also supports creating or updating manifests with multiple installer URLs. You can either create new manifests with multiple installer nodes using the [New Command](doc/new.md) or update existing manifests with multiple installer URLs using the [Update Command](doc/update.md).
@@ -141,28 +140,30 @@ You can install the prerequisites in one of two ways:
141140
142141
1. Clone the repository
143142
2. Configure your system
144-
* Please use the [configuration file](.configurations/configuration.dsc.yaml). This can be applied by either:
145-
* [Dev Home](https://github.com/microsoft/devhome)'s machine configuration tool
146-
* WinGet configuration. If you have WinGet version [v1.6.2631 or later](https://github.com/microsoft/winget-cli/releases), run `winget configure .configurations/configuration.dsc.yaml` in an elevated shell from the project root so relative paths resolve correctly
147-
* Alternatively, if you already are running the minimum OS version, have Visual Studio installed, and have developer mode enabled, you may configure your Visual Studio directly via the .vsconfig file. To do this:
148-
* Open the Visual Studio Installer, select “More” on your product card and then "Import configuration"
149-
* Specify the .vsconfig file at the root of the repo and select “Review Details”
143+
- Please use the [configuration file](.configurations/configuration.dsc.yaml). This can be applied by either:
144+
- [Dev Home](https://github.com/microsoft/devhome)'s machine configuration tool
145+
- WinGet configuration. If you have WinGet version [v1.6.2631 or later](https://github.com/microsoft/winget-cli/releases), run `winget configure .configurations/configuration.dsc.yaml` in an elevated shell from the project root so relative paths resolve correctly
146+
- Alternatively, if you already are running the minimum OS version, have Visual Studio installed, and have developer mode enabled, you may configure your Visual Studio directly via the .vsconfig file. To do this:
147+
- Open the Visual Studio Installer, select “More” on your product card and then "Import configuration"
148+
- Specify the .vsconfig file at the root of the repo and select “Review Details”
150149

151150
#### Manual set up
152151

153-
* Windows 10 1709 (16299) or later
154-
* [Developer mode enabled](https://docs.microsoft.com/windows/uwp/get-started/enable-your-device-for-development) (optional)
155-
* [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/)
156-
* Or use winget to install it ;) (although you may need to adjust the workloads via Tools -> Get Tools and Features...)
157-
* [Git Large File Storage (LFS)](https://git-lfs.github.com/)
158-
* The following workloads:
159-
* .NET Desktop Development
160-
* Universal Windows Platform Development
161-
* Windows 11 SDK (10.0.22000.0) (Tools -> Get Tools and Features -> Individual Components)
152+
- Windows 10 1709 (16299) or later
153+
- [Developer mode enabled](https://docs.microsoft.com/windows/uwp/get-started/enable-your-device-for-development)
154+
- [Visual Studio 2022](https://visualstudio.microsoft.com/downloads/)
155+
- Or use winget to install it ;) (although you may need to adjust the workloads via Tools -> Get Tools and Features...)
156+
- [Git Large File Storage (LFS)](https://git-lfs.github.com/)
157+
- The following VS workloads, individual components and extensions:
158+
- .NET Desktop Development (Workload)
159+
- Windows application development (Workload)
160+
- MSVC - VS2022 C++ ARM64/ARM64EC build tools (Latest) (Individual component)
161+
- Windows 11 SDK (10.0.26100.0) (Individual component)
162+
- Microsoft Visual Studio Installer Projects 2022 (Extension)
162163

163164
### Building
164165

165-
Open `winget-create\src\WingetCreateCLI.sln` in Visual Studio and build. We currently only build using the solution; command line methods of building a VS solution should work as well.
166+
Open `winget-create\src\WingetCreateCLI.sln` in Visual Studio and build. We currently only build using the solution; command-line methods of building a VS solution should work as well.
166167

167168
## Testing the client
168169

@@ -172,24 +173,25 @@ Running unit and E2E tests are a great way to ensure that functionality is prese
172173

173174
### Testing Prerequisites
174175

175-
* Fork the [winget-pkgs-submission-test repository](https://github.com/microsoft/winget-pkgs-submission-test)
176-
* Fill out the test parameters in the `WingetCreateTests/Test.runsettings` file
177-
* `WingetPkgsTestRepoOwner`: The repository owner of the winget-pkgs-submission-test repo. (Repo owner must be forked from main "winget-pkgs-submission-test" repo)
178-
* `WingetPkgsTestRepo`: The winget-pkgs test repository. (winget-pkgs-submission-test)
179-
* `GitHubApiKey`: GitHub personal access token for testing.
180-
* Instructions on [how to generate your own GitHubApiKey](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token).
181-
* Direct link to GitHub [Personal Access Tokens page](https://github.com/settings/tokens).
182-
* `GitHubAppPrivateKey`: Leave blank, this is only used by the build server.
176+
- Fork the [winget-pkgs-submission-test repository](https://github.com/microsoft/winget-pkgs-submission-test)
177+
- Fill out the test parameters in the `WingetCreateTests/Test.runsettings` file
178+
179+
- `WingetPkgsTestRepoOwner`: The repository owner of the winget-pkgs-submission-test repo. (Repo owner must be forked from main "winget-pkgs-submission-test" repo)
180+
- `WingetPkgsTestRepo`: The winget-pkgs test repository. (winget-pkgs-submission-test)
181+
- `GitHubApiKey`: GitHub personal access token for testing.
182+
- Instructions on [how to generate your own GitHubApiKey](https://docs.github.com/en/github/authenticating-to-github/creating-a-personal-access-token).
183+
- Direct link to GitHub [Personal Access Tokens page](https://github.com/settings/tokens).
184+
- `GitHubAppPrivateKey`: Leave blank, this is only used by the build server.
183185

184-
* Set the solution wide runsettings file for the tests
185-
* Go to `Test` menu > `Configure Run Settings` -> `Select Solution Wide runsettings File` -> Choose your configured runsettings file
186+
- Set the solution-wide runsettings file for the tests
187+
- Go to `Test` menu > `Configure Run Settings` -> `Select Solution Wide runsettings File` -> Choose your configured runsettings file
186188

187189
> [!CAUTION]
188190
> You should treat your access token like a password. To avoid exposing your PAT, be sure to reset changes to the `WingetCreateTests/Test.runsettings` file before committing your changes. You can also use the command `git update-index --skip-worktree src/WingetCreateTests/WingetCreateTests/Test.runsettings` command to untrack changes to the file and prevent it from being committed.
189191

190192
## Contributing
191193

192-
This project welcomes contributions and suggestions. Most contributions require you to agree to a
194+
This project welcomes contributions and suggestions. Most contributions require you to agree to a
193195
Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us
194196
the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com. More
195197
information is available in our [CONTRIBUTING.md](/CONTRIBUTING.md) file.

0 commit comments

Comments
 (0)