Skip to content

Commit

Permalink
Merge pull request #238 from OneGet/WIP
Browse files Browse the repository at this point in the history
Added, try it, deploy it and Resources sections and update other contents in readme
  • Loading branch information
jianyunt authored Nov 4, 2016
2 parents 6711bf6 + bf7b608 commit 45a72eb
Showing 1 changed file with 202 additions and 41 deletions.
243 changes: 202 additions & 41 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
```

Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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)

0 comments on commit 45a72eb

Please sign in to comment.