-
Notifications
You must be signed in to change notification settings - Fork 189
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #238 from OneGet/WIP
Added, try it, deploy it and Resources sections and update other contents in readme
- Loading branch information
Showing
1 changed file
with
202 additions
and
41 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -16,25 +16,29 @@ | |
### What's New | ||
Follow our [News Panel](https://github.com/OneGet/oneget/wiki/News-Panel). | ||
|
||
Check out the PackageManagement and PowershellGet MSI package [March release for downlevel OSs!] (https://www.microsoft.com/en-us/download/details.aspx?id=51451) | ||
Check out the PackageManagement and PowershellGet Modules in [PowerShellGallery.com](https://www.PowerShellGallery.com) | ||
|
||
|
||
### Get Started! | ||
|
||
OneGet is shipped in Win10 Client RTM! For downlevel OS, you can install the [WMF 5.0 RTM] (https://www.microsoft.com/en-us/download/details.aspx?id=50395) and then start using the OneGet. | ||
OneGet is shipped in Win10 and Windows Server 2016! For downlevel OS, you can install the [WMF 5.0 RTM][WMF5.0] or [WMF5.1 Preview][WMF5.1] and then start using the OneGet. | ||
|
||
You can follow [@PSOneGet on Twitter](http://twitter.com/PSOneGet) to be notified of every new build. | ||
|
||
|
||
* Learn how to [use the powershell cmdlets](https://github.com/OneGet/oneget/wiki/cmdlets), [try some samples] (https://github.com/PowerShell/PowerShell-Docs/blob/staging/wmf/5.0/oneget_cmdlets.md), or read [our MSDN Technet docs] (https://technet.microsoft.com/en-us/library/mt422622.aspx) | ||
* Learn how to [use the PowerShell cmdlets](https://github.com/OneGet/oneget/wiki/cmdlets), [try some samples](https://github.com/PowerShell/PowerShell-Docs/blob/staging/wmf/5.0/oneget_cmdlets.md), or read [our MSDN Technet docs](https://technet.microsoft.com/en-us/library/mt422622.aspx) | ||
* Read our [General Q and A](https://github.com/OneGet/oneget/wiki/Q-and-A) | ||
* Learn about the [8 Laws of Software Installation](https://github.com/OneGet/oneget/wiki/8-Laws-of-Software-Installation) | ||
* [General Troubleshooting] (https://github.com/OneGet/oneget/wiki/General-Troubleshooting) | ||
* Check out more help information [in our wiki page] (https://github.com/oneget/oneget/wiki) | ||
* [General Troubleshooting](https://github.com/OneGet/oneget/wiki/General-Troubleshooting) | ||
* Check out more help information [in our wiki page](https://github.com/oneget/oneget/wiki) | ||
|
||
|
||
[WMF5.0]: https://www.microsoft.com/en-us/download/details.aspx?id=50395 | ||
[WMF5.1]: https://www.microsoft.com/en-us/download/details.aspx?id=53347 | ||
|
||
#### What is PackageManagement (OneGet)? | ||
|
||
OneGet is a Windows package manager, renamed as PackageManagement. It is a unified interface to package management systems and aims to make Software Discovery, Installation and Inventory (SDII) work via a common set of cmdlets (and eventually a set of APIs). Regardless of the installation technology underneath, users can use these common cmdlets to install/uninstall packages, add/remove/query package repositories, and query a system for the software installed. | ||
OneGet is a Windows package manager, renamed as PackageManagement. It is a unified interface to package management systems and aims to make Software Discovery, Installation and Inventory (SDII) work via a common set of cmdlets (and eventually a set of APIs). Regardless of the installation technology underneath, users can use these common cmdlets to install/uninstall packages, add/remove/query package repositories, and query a system for the software installed. | ||
|
||
With OneGet, you can | ||
* Manage a list of software repositories in which packages can be searched, acquired, and installed | ||
|
@@ -45,58 +49,206 @@ With OneGet, you can | |
|
||
![Image](./assets/OneGetArchitecture.PNG?raw=true) | ||
|
||
<br/> | ||
|
||
### Building the code | ||
|
||
#### Required Tools | ||
- Visual Studio 2013 | ||
- Powershell Tools for Visual Studio : http://visualstudiogallery.msdn.microsoft.com/c9eb3ba8-0c59-4944-9a62-6eee37294597 | ||
- XUnit ( I currently use 2.0.0.0 ) : http://xunit.codeplex.com/releases | ||
- You may need to manually install Windows SDK for getting tools like mt.exe. | ||
### Let's Try it | ||
|
||
#### Prerequisites | ||
- Windows 10, Windows Server 2016, or down-level Windows OS + WMF5 | ||
- Linux or Mac with the [PowerShellCore][pscore] | ||
|
||
|
||
#### Working with PowerShellGallery.com | ||
|
||
```powershell | ||
# 1.check available providers | ||
PS E:\> get-packageprovider | ||
Name Version DynamicOptions | ||
---- ------- -------------- | ||
msi 3.0.0.0 AdditionalArguments | ||
msu 3.0.0.0 | ||
PowerShellGet 1.1.0.0 PackageManagementProvider, Type... | ||
Programs 3.0.0.0 IncludeWindowsInstaller,... | ||
# 2. find a module from the PowerShell gallery, for example, xjea | ||
PS E:\> find-module xjea | ||
NuGet provider is required to continue | ||
PowerShellGet requires NuGet provider version '2.8.5.201' or newer to interact with NuGet-based repositories. The NuGet provider must be available in 'C:\Program | ||
Files\PackageManagement\ProviderAssemblies' or 'C:\Users\jianyunt\AppData\Local\PackageManagement\ProviderAssemblies'. You can also install the NuGet provider by | ||
running 'Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force'. Do you want PowerShellGet to install and import the NuGet provider now? | ||
[Y] Yes [N] No [S] Suspend [?] Help (default is "Y"): y | ||
Version Name Repository Description | ||
------- ---- ---------- ----------- | ||
0.3.0.0 xJea PSGallery Module with DSC Resources for Just Enough... | ||
# 3. install a module from the PowerShell gallery | ||
PS E:\> Install-Module xjea | ||
Untrusted repository | ||
You are installing the modules from an untrusted repository. If you trust this repository, change its InstallationPolicy value by running the Set-PSRepository cmdlet. Are | ||
you sure you want to install the modules from 'gallery'? | ||
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): y | ||
# 4. Find out if a module installed | ||
PS E:\> Get-InstalledModule -name xjea | ||
Version Name Repository Description | ||
------- ---- ---------- ----------- | ||
0.3.0.0 xJea gallery Module with DSC Resources for Just Enough Admin (JEA).. | ||
# 5. Unisntall a module | ||
PS E:\> Uninstall-Module -name xjea | ||
``` | ||
<br/> | ||
#### Working with http://www.NuGet.org repository | ||
<br/> | ||
```powershell | ||
# find a package from the nuget repository | ||
PS E:\> find-package -name jquery -provider Nuget -Source https://www.nuget.org/api/v2 | ||
Name Version Source Summary | ||
---- ------- ------ ------- | ||
jQuery 3.1.1 nuget.org jQuery is a new kind of JavaScript Library.... | ||
# install a package from NuGet repository | ||
PS E:\> install-package -name jquery -provider Nuget -Source https://www.nuget.org/api/v2 | ||
The package(s) come(s) from a package source that is not marked as trusted. | ||
Are you sure you want to install software from 'nuget.org'? | ||
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "N"): y | ||
Name Version Source Summary | ||
---- ------- ------ ------- | ||
jQuery 3.1.1 nuget.org jQuery is a new kind of JavaScript Library.... | ||
#### Optional Tools | ||
- Resharper - http://www.jetbrains.com/resharper/ | ||
- Resharper xUnit test runner - http://resharper-plugins.jetbrains.com/packages/xunitcontrib/2.0.0 | ||
- Wix 3.9 : http://wixtoolset.org (only if you want to build the MSI and Installer) | ||
# Uninstall the package | ||
PS E:\> uninstall-package jquery | ||
Name Version Source Summary | ||
---- ------- ------ ------- | ||
jQuery 3.1.1 C:\Program Fi... jQuery is a new kind of JavaScript Library.... | ||
# Register a package Source | ||
PS E:\> Register-PackageSource -name test -ProviderName NuGet -Location https://www.nuget.org/api/v2 | ||
Name ProviderName IsTrusted Location | ||
---- ------------ --------- -------- | ||
test NuGet False https://www.nuget.org/api/v2 | ||
# find a package from the registered package Source | ||
PS E:\> find-package -Source test -name jquery | ||
Name Version Source Summary | ||
---- ------- ------ ------- | ||
jQuery 3.1.1 test jQuery is a new kind of JavaScript Library.... | ||
``` | ||
|
||
<br/> | ||
|
||
### Try the latest PackageManagement (OneGet) | ||
|
||
You can run `install-module PowerShellGet` to install the latest PackageManagment and PowerShellGet from [PowerShellGallery](https://www.powershellgallery.com). | ||
[pscore]:https://github.com/PowerShell/PowerShell | ||
|
||
### Downloading the Source Code | ||
OneGet repo has a number of other repositories embeded as submodules. To make things say, you can just clone recursively: | ||
```powershell | ||
git clone --recursive https://github.com/OneGet/oneget.git | ||
``` | ||
If you already cloned but forgot to use --recursive, you can update submodules manually: | ||
```powershell | ||
git submodule update --init | ||
``` | ||
|
||
### Building the code | ||
|
||
check out the source code | ||
``` powershell | ||
#clone this repository | ||
> git clone --recurse-submodules https://github.com/OneGet/oneget.git | ||
After clone this repository, go to the project folder | ||
# go to the project folder | ||
> cd oneget | ||
> cd src | ||
# download the dotnet cli tool | ||
> .\bootstrap.ps1 | ||
# building OneGet for fullclr | ||
> .\build.ps1 net451 | ||
#building OneGet for coreclr | ||
> .\build.ps1 netstandard1.6 | ||
If successfully built above, you should be able to see a folder: | ||
\oneget\src\out\PackageManagement gets created. The layout looks like below: | ||
# optional: switch to the wip branch | ||
> git checkout wip | ||
coreclr | ||
fullclr | ||
PackageManagement.format.ps1xml | ||
PackageManagement.psd1 | ||
PackageManagement.psm1 | ||
PackageProviderFunctions.psm1 | ||
``` | ||
|
||
# get the submodules for this branch | ||
> git submodule update --init | ||
### Deploying it | ||
|
||
# BUILD using Visual Studio, or from the command line: | ||
#### Generate PackageManagement.nupkg | ||
We can use `publish-module` to create a .nupkg. Assuming you want to put the generated .nupkg in c:\test folder. You can do something like below. Note I cloned to E:\OneGet folder. | ||
```powershell | ||
cd E:\OneGet\oneget\src\out\PackageManagement | ||
Register-PSRepository -name local -SourceLocation c:\test | ||
Get-PSRepository | ||
Publish-Module -path .\ -Repository local | ||
PS E:\OneGet\oneget\src\out\PackageManagement> dir c:\test\PackageManagement*.nupkg | ||
> msbuild PackageManagement.sln /p:Configuration=Release "/p:Platform=Any CPU" | ||
Directory: C:\test | ||
# If you want to send me changes, you should fork the project into your own | ||
# account first, and use that URL to clone it. | ||
# If you fork it later you can just change the origin by: | ||
# move the old origin out of the way. You could delete it if you want. | ||
> git remote rename origin original | ||
Mode LastWriteTime Length Name | ||
---- ------------- ------ ---- | ||
-a---- 11/4/2016 4:15 PM 1626335 PackageManagement.1.1.0.0.nupkg | ||
``` | ||
Then you can do | ||
```powershell | ||
find-module -Repository local | ||
install-module -Repository local -Name PackageManagement | ||
``` | ||
to get the newly built PackageManagement on your machines. | ||
|
||
# add your repo url as the origin: | ||
# e.g. [email protected]:fearthecowboy/OneGet.git | ||
> git remote add origin <your-repo-url> | ||
#### Manual copy | ||
You can also manually copy the OneGet binaries. For example, copy the entire `E:\OneGet\oneget\src\out\PackageManagement` folder you just built to your | ||
`$env:Programfiles\WindowsPowerShell\Modules\PackageManagement\#onegetversion\` | ||
|
||
# build & deploy binaries and run test | ||
build the packagemanagment.sln: | ||
If you are running within PowerShellCore, | ||
similarily drop the PackageManagement folder to your `$env:Programfiles\PowerShell\#psversion\Modules\PackageManagement\#onegetversion\`, | ||
|
||
msbuild PackageManagement.sln /p:Configuration=Release "/p:Platform=Any CPU" | ||
or copy to `/opt/microsoft/powershell/<psversion>/Modules/PackageManagement/#onegetversion/`, | ||
if you are running on Linux or Mac. | ||
|
||
**Note**: OneGet version number can be found from the PackageManagement.psd1 file. | ||
|
||
### Testing the code | ||
```PowerShell | ||
> cd oneget | ||
> cd Test | ||
> & '.\run-tests.ps1' fullclr | ||
> & '.\run-tests.ps1' coreclr | ||
cd to the test folder | ||
.\run-test.ps1 will copy the files generated from the build to x:\Program Files\WindowsPowerShell\Modules\PackageManagement | ||
and update the PowerShellGet to x:\Program Files\WindowsPowerShell\Modules\PowerShellGet. Also run the tests. | ||
``` | ||
|
||
|
@@ -141,7 +293,7 @@ I'm eager to work with anyone who wants to help shape the future of Package Mana | |
|
||
### Online Meeting | ||
|
||
We have an online monthly meeting at the beginning of each month on Tuesday from 10am - 11am (PST). Each month may have slight shift of either the first week or the second week. We will twitter the exact time as well as put a note on GitHub site. (everyone welcome!) | ||
We have an online meetings. We will twitter the exact time as well as put a note on GitHub site. (everyone welcome!) | ||
|
||
You can see archives of the previous meetings available on | ||
|
||
|
@@ -173,3 +325,12 @@ Throughput Graph | |
|@Quoc| Engineer on the team. | | ||
|
||
[Follow us on Twitter](https://twitter.com/PSOneGet) | ||
|
||
### More Resources | ||
- [NuGet Provider Repo](https://github.com/OneGet/NuGetProvider) | ||
- [PowerShellGet Repo](https://github.com/PowerShell/PowerShellGet) | ||
- [MisoftDockerProvider](https://github.com/OneGet/MicrosoftDockerProvider) | ||
- [NanoServerPackage](https://github.com/OneGet/NanoServerPackage) | ||
- Want to write a provider? Checkout our [sample provider](https://www.powershellgallery.com/packages/MyAlbum/) | ||
- Wanna to download packages from http://Chocolatey.org, try out [ChocolateyGet provider](https://www.powershellgallery.com/items?q=ChocolateyGet&x=15&y=13) | ||
- Wanna to control which packages to use and where to get them from base for your organization, checkout [PSL provider](https://github.com/OneGet/PSLProvider) |