<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>PackageManagement</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/packagemanagement/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/packagemanagement/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:31:17 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>10 things about OneGet that are completely different than you think.</title>
      <link>https://docs.microsoft.com/archive/blogs/packagemanagement/10-things-about-oneget-that-are-completely-different-than-you-think</link>
      <pubDate>Tue, 05 May 2015 10:55:35 GMT</pubDate>
      <dc:creator><![CDATA[Garrett Serack, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/packagemanagement/2015/05/05/10-things-about-oneget-that-are-completely-different-than-you-think/</guid>
      <description><![CDATA[Howdy y&#39;all,
(cross posted from Garrett&#39;s MSDN Blog)
I&#39;ve found myself answering the...]]></description>
      <content:encoded><![CDATA[<p><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Howdy y&#39;all,</span></span></p>
<p><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">(cross posted from <a href="http://blogs.msdn.com/b/garretts">Garrett&#39;s MSDN Blog</a>)<br /></span></span></p>
<p><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">I&#39;ve found myself answering the same questions over-and-over, so rather than continue to do this piecemeal, I figured it&#39;s about time to just post this stuff once.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Hopefully you&#39;ll find it enlightening, or at least entertaining :)</span></span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><span style="color:black;font-size:18pt;"><span style="font-family:Calibri;">1. OneGet is not a package manager.</span></span></strong></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Ah, off with a bang, eh?</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Ok, so it&#39;s like this&mdash;OneGet isn&#39;t technically a <em>Package-Manager</em>, it&#39;s more of a <em>Package-Manager-Manager. </em>Its actual purpose is to bring together a diverse set of installers, package services, and inventory schemes under a set of unified APIs and PowerShell cmdlets.&nbsp; Rather than having end-users understand the complexity and diversity behind each package manager, this allows users to simple consume packages in a common way.&nbsp; Individual package management systems plug into OneGet by implementing a <strong><em>package provider.</em> </strong><span>At the moment, providers can be written in either PowerShell or in any .NET language (ie, C#, VB, F# etc&hellip;).</span></span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">And yeah, it&#39;s true, not all package management systems behave the same, and it&#39;s really difficult to set down such a set of common patterns that could possibly apply to every package manager. We&#39;ve opted to take the simple route, and mandate very little to how a package manager implements its own business, and the provider can implement as little of the interface as makes sense. For example, we have one provider (the &ldquo;Programs&rdquo; provider) that simply reports the inventory of the items stored in the ARP (Add/Remove Programs table). At the bare minimum, a OneGet package manager provider basically needs to be able to refer to &lsquo;packages&rsquo; by a &ldquo;name&rdquo;, and possibly a &ldquo;version&rdquo; (the format of both is entirely up to the developer).</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Of course, we have some ideas and guidelines that kinda lay out how you <em>should</em> implement a given feature, but I wouldn&rsquo;t consider them terribly strict.</span></span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><span style="color:black;font-size:18pt;"><span style="font-family:Calibri;">2. OneGet is not another implementation of Chocolatey</span></span></strong></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Ok, this one&rsquo;s kinda my fault.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">A smidgen over 12 months ago when we released the initial prototype of OneGet at //Build 2014, I wrote a proof-of-concept Chocolatey provider to go along with it (mainly as a test of the interface itself, and a &lsquo;template&rsquo; of what a package manager needs to do). On top of that, for quite some time it was the <strong>only </strong>package provider available for OneGet.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">And then everyone jumped on the &ldquo;OneGet is a Chocolatey-compatible package manager&rdquo; story. <span>&nbsp;</span>Sorry about that.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">To be clear, my implementation of the Chocolatey provider is neither complete nor up to date, and will be removed from OneGet in the very near future. There are community people working on the <strong><em>official</em></strong> Chocolatey provider, and when that&rsquo;s ready, OneGet should be able to bootstrap and install that provider dynamically so that users can access it at that time.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">The really good news is that there are actually a number of providers in development&mdash;some by us, some by 3<sup>rd</sup> parties&mdash;that will be available in the very near future and will bring the features of many more package management systems into OneGet. You can check out the list of things that people have suggested or are planning on the </span><a href="https://github.com/OneGet/oneget/issues/77"><span style="color:#0563c1;font-family:Calibri;">Github issues page</span></a><span style="font-family:Calibri;">.</span></span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><span style="color:black;font-size:18pt;"><span style="font-family:Calibri;">3. OneGet is not for installing PowerShell modules either.</span></span></strong></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Hmm. I&rsquo;ve seen some posts and articles that hint at this. Or more than hint at it, outright express it.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Indeed, there is a OneGet package provider called &ldquo;<strong>PowerShellGet</strong>&rdquo; that is a package manager for installing PowerShell modules, from </span><a href="http://www.powershellgallery.com/"><span style="color:#0563c1;font-family:Calibri;">a common gallery</span></a><span style="font-family:Calibri;">. This provider was developed at the same time as OneGet, is fundamental to PowerShell going forward, and is included with OneGet. PowerShellGet can be accessed by the standard set of OneGet cmdlets, as well as thru its own cmdlets (i.e., Find-Module, Install-Module, etc.)</span></span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><span style="color:black;font-size:18pt;"><span style="font-family:Calibri;">4. Heck, OneGet does not install software.</span></span></strong></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Well, not directly and certainly not on its own.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">OneGet delegates <strong><em>all </em></strong>installation operations to the installed package provider plugins. <span>&nbsp;</span>Yes, we do include a very minimal set of package providers along with OneGet&mdash;basically the bare minimum of what we need to discover and install more providers. This minimum set includes:</span></span></p>
<p style="margin:0in 0in 0pt 20.5pt;text-align:justify;line-height:normal;text-indent:-0.25in;"><span style="color:black;font-size:10pt;"><span><span style="font-family:Calibri;">-</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">An <strong>MSI</strong> provider (installs Windows Installer .MSI files). This provider does not at this time support remote feeds, just simply implements the minimum features to install MSI files that the user has acquired. </span></span></p>
<p style="margin:0in 0in 0pt 20.5pt;text-align:justify;line-height:normal;text-indent:-0.25in;"><span style="color:black;font-size:10pt;"><span><span style="font-family:Calibri;">-</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">An <strong>MSU</strong> provider (for installing Microsoft Update files). Again, a very minimal installer that just handles MSU files that the user has downloaded.</span></span></p>
<p style="margin:0in 0in 0pt 20.5pt;text-align:justify;line-height:normal;text-indent:-0.25in;"><span style="color:black;font-size:10pt;"><span><span style="font-family:Calibri;">-</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">A <strong>Programs</strong> provider&mdash;which doesn&rsquo;t even install programs, but merely exposes the inventory of the Add/Remove Programs application in Windows. It has some minimal support to allow uninstalling some software.</span></span></p>
<p style="margin:0in 0in 0pt 20.5pt;text-align:justify;line-height:normal;text-indent:-0.25in;"><span style="color:black;font-size:10pt;"><span><span style="font-family:Calibri;">-</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">A <strong>Bootstrap</strong> provider&mdash;a custom provider which can download and install new Package Providers dynamically from a feed on the internet.<span>&nbsp; </span>This is how you will be able to get more providers without having to manually download them.</span></span></p>
<p style="margin:0in 0in 8pt 20.5pt;text-align:justify;line-height:normal;text-indent:-0.25in;"><span style="color:black;font-size:10pt;"><span><span style="font-family:Calibri;">-</span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">The aforementioned <strong>PowerShellGet</strong> provider&mdash;for installing PowerShell modules.</span></span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><span style="color:black;font-size:18pt;"><span style="font-family:Calibri;">5. OneGet is not meant to replace existing infrastructure or technologies.</span></span></strong></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">When I started the OneGet project, I wanted to make it very clear that we&rsquo;re not trying to shut down existing package installers or technologies, and replace it with &ldquo;<em>The-One-True-Package-Manager-Which-Will-Replace-All-Others</em>&rdquo;&mdash;far from it. There are what, about 20 billion pieces of software available for Windows today, made over the course of the last 20-some years. It would be a bit foolish to assume that anyone would be able to&mdash;or willing to&mdash;repackage all of that software to fit a common universal package format.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Diversity is a wonderful thing, and should be celebrated, not condemned&mdash;especially in software installation.<span>&nbsp; </span>I think that experts in Python are far more capable of determining the correct behavior for installing Python modules, and the idea that I or anyone else outside of that community would be able to lay down a smarter format, is completely senseless. The same goes for Node.js, Perl, PHP, Ruby, etc.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">What I can do, is provide a means to bring it all together so that disparate package managers can work together in a common way, rather than stepping on each other&rsquo;s expertise.</span></span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><span style="color:black;font-size:18pt;"><span style="font-family:Calibri;">6. OneGet does not have a repository. Well, maybe one.</span></span></strong></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">This is an easy one, right?</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Since OneGet isn&rsquo;t a package manager, it doesn&rsquo;t have package repositories. Although, we do have the <strong><em>Bootstrap</em></strong> provider, and it <em>does</em> have one&mdash;but there isn&rsquo;t a &ldquo;OneGet Repository Server&rdquo;. So when people ask &lsquo;<em>How do I setup a OneGet repository&rsquo;</em>, the answer is &hellip; &ldquo;you can&rsquo;t&rdquo;.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Of course that&rsquo;s a bit pedantic, since the implied question is &ldquo;<em>How do I set up a Repository that OneGet can see for &lsquo;Chocolatey&rsquo; packages</em>&rdquo; since that&rsquo;s one of the most visible providers that can be used with the prelease versions of OneGet today. The answer for that is: Chocolatey is based on NuGet, and so you have to set up a </span><a href="http://docs.nuget.org/create/hosting-your-own-nuget-feeds"><span style="color:#0563c1;font-family:Calibri;">NuGet server</span></a><span style="font-family:Calibri;">. You can also check out 3<sup>rd</sup> party options like </span><a href="http://inedo.com/proget/overview"><span style="color:#0563c1;font-family:Calibri;">ProGet</span></a><span style="font-family:Calibri;"> or </span><a href="http://www.myget.org/"><span style="color:#0563c1;font-family:Calibri;">MyGet</span></a><span style="font-family:Calibri;"> which are really much simpler to deal with.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">However, since there are a lot more package manager providers just around the corner, I wouldn&rsquo;t rush out and start laying down new infrastructure for hosting your packages and installers, because it&rsquo;s certainly possible that new providers can simply use what you have available today, without having to explicitly setup something new.<span>&nbsp; </span>And if you have some sort of repository and service, well perhaps you might be able to put together a provider that brings all that together.</span></span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><span style="color:black;font-size:18pt;"><span style="font-family:Calibri;">7. OneGet does not solve all installation woes.</span></span></strong></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">I&rsquo;ve seen a lot of chatter that &ldquo;OneGet is going to solve problem XYZ&rdquo; and questions like &ldquo;how will it problem ABC go away?&rdquo; </span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Really, it&rsquo;s not going to do that overnight. </span><a href="/b/garretts/archive/2015/05/05/8-laws-of-software-installation.aspx"><span style="color:#0563c1;font-family:Calibri;">I did write a post</span></a><span style="font-family:Calibri;"> that talks about some of the fundamental things that we should all be thinking about when installing software, and while that&rsquo;s basically been my compass when building OneGet, we&rsquo;ve got a long way to go to making software installation smooth.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">OneGet does have the benefit that it sets the stage for how well-behaved package management systems should work, and the more package management system that work with it, should drive better results for everyone.<span>&nbsp; </span>If you have ideas or questions about how we can make this a reality, I wholehearted recommend that you come lend your voice to making OneGet better, by participating in the </span><a href="http://oneget.org/"><span style="color:#0563c1;font-family:Calibri;">OneGet project on Github</span></a><span style="font-family:Calibri;">.</span></span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><span style="color:black;font-size:18pt;"><span style="font-family:Calibri;">8. OneGet is not just for Windows 10.</span></span></strong></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">Ever since its inception, OneGet has been designed in such a way that its core should work with .NET 4.0, and the PowerShell cmdlets need only at least PowerShell v3 (WMF3). This makes it so that for general use it can work find on Windows 7/ Windows Server 2008 R2 and beyond. Now, certain provider may not be able to run on certain versions of Windows &ndash; for example, a provider that relies on some Windows 10 technology (like the app store?) won&rsquo;t work on Windows 7. That&rsquo;s just common sense.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">We&rsquo;re also looking at getting it to run on some of the special versions of Windows too, like Windows Nano Server, and I&rsquo;d really like to see what I can do for that version of Windows 10 that runs on Raspberry PI. At this point, I haven&rsquo;t nailed down <em>when</em>, but remember, OneGet is open source software, and others can do some work with it as well.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">I haven&rsquo;t talked much about it lately, but one of my other goals with OneGet is to port it to non-Windows operating systems too. Sure, you&rsquo;ve already got RPM and DPKG (i.e., apt-get) on Linux, but does RPM install packages from Node.js? <span>&nbsp;</span>How about installing Python modules? A universal package management layer could be useful for bringing together package installation on a variety of systems. Since OneGet isn&rsquo;t a package manager, and it&rsquo;s not designed to displace actual package managers, it&rsquo;s not a completely crazy idea to bring it to Linux. </span></span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><span style="color:black;font-size:18pt;"><span style="font-family:Calibri;">9. OneGet is not finished.</span></span></strong></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">My pappy always used to say that &ldquo;A journey of a thousand miles begins with shoeing a horse&rdquo;&hellip; Well, we&rsquo;re still writing the basic features for OneGet, and I can foresee a really long road yet ahead. </span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;line-height:normal;"><span style="color:black;font-size:10pt;"><span style="font-family:Calibri;">I think that as we go on, we&rsquo;re going to be adding more and more features into OneGet, adding more providers, and seeing its use integrated into more than just the PowerShell cmdlets&mdash;GUIs, more tools, etc&hellip; where do you think it should be integrated into?</span></span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><span style="color:black;font-size:18pt;"><span style="font-family:Calibri;">10. OneGet isn&#39;t called OneGet.&nbsp;</span></span></strong></p>
<p style="margin:0in 0in 8pt;text-align:justify;"><span style="color:black;line-height:107%;font-size:10pt;"><span style="font-family:Calibri;">And, finally we get to the weird one. We renamed the &ldquo;OneGet&rdquo; PowerShell module to &ldquo;PackageManagement&rdquo; a while back. </span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;"><span style="color:black;line-height:107%;font-size:10pt;"><span style="font-family:Calibri;">I keep telling folks, it&rsquo;s not that we changed the name, we just changed the spelling. :)</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;"><span style="color:black;line-height:107%;font-size:10pt;"><span style="font-family:Calibri;">The open source project is still called OneGet, and I will continue to call it OneGet.<span>&nbsp; </span></span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;"><span style="color:black;line-height:107%;font-size:10pt;"><span style="font-family:Calibri;">So, why did we rename the module? Well, working in a very large multinational company, you always have those guys around whose job it is to make sure things are on the level with regards to things like trademarks. Especially when you ship a feature in Windows. I don&rsquo;t know if y&rsquo;all realize this, but Windows is a big deal to a lot of folks around these parts.</span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;"><span style="color:black;line-height:107%;font-size:10pt;"><span style="font-family:Calibri;">Anyway, when there is the <em>potential</em> for ambiguity in some country somewhere, these go-getters can run off and make it all work out. The trouble is that do to so can be a smidgen pricey, and before they go do their thing, they&rsquo;ll ask you if the name is terribly important, and if using a more generic term might make it so they don&rsquo;t have to do that. </span></span></p>
<p style="margin:0in 0in 8pt;text-align:justify;"><span style="color:black;line-height:107%;font-size:10pt;"><span style="font-family:Calibri;">And the answer in this case is&hellip; yeah, we could change the spelling to &ldquo;PackageManagement&rdquo;, I&rsquo;m not going to fret about exactly what the module is named. We can still have the open source project hosted at </span><a href="http://oneget.org/"><span style="color:#0563c1;font-family:Calibri;">http://oneget.org</span></a><span style="font-family:Calibri;"> so it&rsquo;s not a really big deal.</span></span></p>
<div style="border-width:medium medium 1pt;border-style:none none solid;border-color:currentColor currentColor windowtext;padding:0in 0in 1pt;">&nbsp;</div>
<p style="margin:0in 0in 8pt;text-align:justify;"></p>
<p style="margin:0in 0in 8pt;text-align:justify;"><span style="color:black;line-height:107%;font-size:10pt;"><span style="font-family:Calibri;">I hope that clears up some of the outstanding questions, and I&rsquo;m sure it likely spawns a few more, so if y&rsquo;all have more questions, bring &lsquo;em and we&rsquo;ll see if we can&rsquo;t answer them for you.</span></span></p>
<p>&nbsp;&nbsp;</p>
<p style="margin:0in 0in 8pt;text-align:justify;"><em><span lang="EN" style="color:black;line-height:107%;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Garrett Serack</span></em><span lang="EN" style="color:black;line-height:107%;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> (<a href="https://github.com/fearthecowboy"><span style="color:#0563c1;">@fearthecowboy</span></a>)</span></p>
<p style="margin:0in 0in 8pt;text-align:justify;"></p>]]></content:encoded>
    </item>
    <item>
      <title>8 Laws of Software Installation</title>
      <link>https://docs.microsoft.com/archive/blogs/packagemanagement/8-laws-of-software-installation</link>
      <pubDate>Tue, 05 May 2015 10:49:31 GMT</pubDate>
      <dc:creator><![CDATA[Garrett Serack, MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/packagemanagement/2015/05/05/8-laws-of-software-installation/</guid>
      <description><![CDATA[Establishing an Ecosystem That Works Together
(cross-posing this from Garrett&#39;s MSDN Blog)
I...]]></description>
      <content:encoded><![CDATA[<p><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:18pt;">Establishing an Ecosystem That Works Together</span></strong></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><strong><em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">(cross-posing <a href="http://blogs.msdn.com/b/garretts/archive/2015/05/05/8-laws-of-software-installation.aspx">this</a> from </span><a href="http://blogs.msdn.com/b/garretts"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Garrett&#39;s MSDN Blog</span><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">)</span></a></em></strong></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">I started thinking about how all of this fits together and how we (as an ecosystem) need to be able to work together, and &mdash; more importantly &mdash; still allow different systems to work how they please.</span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Many years ago, <a href="http://www.identityblog.com/"><span style="color:blue;">Kim Cameron</span></a> came up with a list of <a href="http://www.identityblog.com/?p=352/"><em><span style="color:blue;">7 Laws of Identity</span></em></a>. They outline some core fundamental principles that any Identity system should follow to ensure that everyone&#39;s (users, identity providers, and relying parties) security is maximized.</span></p>
<p style="margin:0in 0in 8pt;line-height:normal;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">It occurred to me that concepts from the Laws could be recycled in a way that reflects how we can define the general parameters for an installation ecosystem.</span></p>
<p>&nbsp;</p>
<div style="border-width:medium medium 2.25pt;border-style:none none double;border-color:currentColor currentColor windowtext;padding:0in 0in 3pt;">
<p style="margin:0in 0in 12pt;padding:0in;border:currentColor;line-height:normal;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:13.5pt;">1. User Control and Consent</span></strong></p>
</div>
<p style="margin:0in 0in 8pt;line-height:normal;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Users must always be able to make the ultimate decisions about their system, and installers must never do unauthorized actions without the user&#39;s consent. Essentially, we really want to ensure that changes that the user doesn&#39;t want aren&#39;t being applied to their systems. This means that an installer should always provide a clear and accurate description of the product being installed, and ensure that the user is in control of their systems. User interfaces or tools that obscure or break this trust with the user should be avoided. Ideally, user interfaces should strive for some amount of minimalism, instead of serving up a collection of pedantic screens which users tediously press &#39;Next&#39; through. Less UI means that users are far more likely to pay attention to what is said.</span></p>
<p style="background:#f2f2f2;margin:0in 0in 8pt 0.5in;line-height:normal;"><em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Personal opinion:</span></em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> I guess at the same time, I should point out a particular gripe of mine, especially with open source software installation on Windows. The proliferation of EULAs and Licenses masquerading as EULAs in the installation process should stop. Many OSS licenses don&#39;t actually have any requirement for the end user to agree to the terms of them before installation, so please stop asking for people to &#39;agree&#39; just to make it look like you have a &#39;professional&#39; installer.<br /><br /></span><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">If you <em>actually</em> have a requirement to record an acceptance of license, perhaps you should be doing that upon first use (or whatever activity actually requires the acceptance of the license).</span></p>
<p>&nbsp;</p>
<div style="border-width:medium medium 2.25pt;border-style:none none double;border-color:currentColor currentColor windowtext;padding:0in 0in 3pt;">
<p style="margin:0in 0in 12pt;padding:0in;border:currentColor;line-height:normal;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:13.5pt;">2. Minimal Impact for a Constrained Use</span></strong></p>
</div>
<p><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Changes to a system should aim to offer the least amount of disruption to the system. Installing unnecessary or unwanted components adds to bloat, and will increase the potential attack surface for malware.</span></p>
<p style="background:#f2f2f2;margin:0in 0in 8pt 0.5in;line-height:normal;"><em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Personal opinion:</span></em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> There is a category of software out there that has opted to provide their software free, but heavily &mdash; and often with great vigilance &mdash; attempts to install toolbars, add-ons, or other pieces of trash software that serve only to funnel advertising to the user. Others nag the user to change their default search settings or their browser home page for similar purposes. These behaviors are abusive to customers, and should be avoided at all costs.</span></p>
<p>&nbsp;</p>
<div style="border-width:medium medium 2.25pt;border-style:none none double;border-color:currentColor currentColor windowtext;padding:0in 0in 3pt;">
<p style="margin:0in 0in 12pt;padding:0in;border:currentColor;line-height:normal;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:13.5pt;">3. Pluralism of Operators and Technologies</span></strong>&nbsp;</p>
</div>
<p style="margin:0in 0in 8pt;line-height:normal;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">The ecosystem should easily support many different technologies. There is no one-size-fits-all answer. Software comes in all shapes and sizes. Any well-behaved individual packaging or installation technology should be welcome to participate. Choosing one technology over another should be left to the publisher. Pushing this to the logical ends means that any attempt to unify these should permit and encourage use of any part of the ecosystem.</span></p>
<p>&nbsp;</p>
<div style="border-width:medium medium 2.25pt;border-style:none none double;border-color:currentColor currentColor windowtext;padding:0in 0in 3pt;">
<p style="margin:0in 0in 12pt;padding:0in;border:currentColor;line-height:normal;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:13.5pt;">4. Transparency, Accountability, and Reversability</span></strong></p>
</div>
<p style="margin:0in 0in 8pt;line-height:normal;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Installation technologies should never obfuscate <em>what</em> is being done, and should never place the system in a state that cannot be undone. Again, keeping in mind that the target system belongs to the user, not the publisher, end users should be able to expect that uninstallation should succeed without issue or require any additional work to clean up.</span></p>
<p style="background:#f2f2f2;margin:0in 0in 8pt 0.5in;line-height:normal;"><em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Personal opinion:</span></em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> On a slightly tangential note, I&#39;d like to talk about rebooting the system. Windows Installers seem to be over-eager to reboot the OS, either on installation or uninstallation. Now, there is a very small class of software that can actually justify having to reboot the system. But 99%+ of software should be able to deal with file conflicts, proper setup, managing their running processes or services, manipulating locked files, removing temporary files, and all of those other reasons that you think you need to reboot the system in order to finish the work. If you need help on doing this, ask. You&#39;ll be doing everyone a great service.</span></p>
<p>&nbsp;</p>
<div style="border-width:medium medium 2.25pt;border-style:none none double;border-color:currentColor currentColor windowtext;padding:0in 0in 3pt;">
<p style="margin:0in 0in 12pt;padding:0in;border:currentColor;line-height:normal;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:13.5pt;">5. Flexibility of Installation Scope</span></strong></p>
</div>
<p style="margin:0in 0in 8pt;line-height:normal;"><em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Ideally</span></em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">, a given package should be able to install into different installation scopes (OS/Global scope, Restricted/User scope, and Local/Sandboxed scope) and support installation into online and offline (VM Images) systems. Packaging systems should consider how they can help products to be fully installed in these scopes.</span></p>
<p>&nbsp;</p>
<div style="border-width:medium medium 2.25pt;border-style:none none double;border-color:currentColor currentColor windowtext;padding:0in 0in 3pt;">
<p style="margin:0in 0in 12pt;padding:0in;border:currentColor;line-height:normal;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:13.5pt;">6. Configuration Is Not Installation</span></strong></p>
</div>
<p style="margin:0in 0in 8pt;line-height:normal;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Software installers on Windows have, since time began, been conflating configuration with installation. This approach introduces several painful problems into the software installation process:</span></p>
<ul style="list-style-type:disc;direction:ltr;">
<li style="color:black;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">It increases the amount of UI during installation, which only leads to additional confusion for the end user.</span></p>
</li>
<li style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Users may not know the answers to configuration questions, and are now blocked until they can find answers.</span></p>
</li>
<li style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Configuration during installation is nearly always significantly different from configuring (or &#39;re-configuring&#39;) the product <em>after</em> installation. Again, this is confusing to the user.</span></p>
</li>
<li style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Migrating a working configuration to another system is harder when you have to configure during installation. Configuration should be easily portable between installations.</span></p>
</li>
<li style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">It increases friction for end users who are trying to automate the installation of software for a large number of systems.</span></p>
<p style="color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Really, don&#39;t be that guy.</span></p>
</li>
</ul>
<p>&nbsp;</p>
<div style="border-width:medium medium 2.25pt;border-style:none none double;border-color:currentColor currentColor windowtext;padding:0in 0in 3pt;">
<p style="margin:0in 0in 12pt;padding:0in;border:currentColor;line-height:normal;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:13.5pt;">7. Respect the Resources of the Target System</span></strong></p>
</div>
<p style="margin:0in 0in 8pt;line-height:normal;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Software publishers need to respect the system on which their software is being installed. You don&#39;t own that system, the end user does. Here are some common scenarios that can be disrespectful:</span></p>
<ul style="list-style-type:disc;direction:ltr;">
<li style="color:black;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Launching directly from the installer.</span></strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> Installation should not be considered a good opportunity to launch your application. Similar to configuration issues, this is frustrating to end users who are looking to automate the installation, and can introduce confusion for users who may not have expected that.</span></p>
</li>
<li style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Automatically starting software at system start.</span></strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> The proliferation of software that insists on starting up with the OS automatically is getting out of control. Software that wishes to launch at start-up should get explicit <em>opt-in</em> consent from the user (after the user has launched the application at least once), not require the user to hunt down the option from a sea of configuration settings to disable it. Oh, and <em>not</em> providing a method to trivially disable auto-start is very bad.</span></p>
</li>
<li style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Checking for software updates.</span></strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> There are two acceptable methods for automatically checking for software updates: </span></p>
<ul style="list-style-type:circle;">
<li style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Preferred:</span></strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> checking from within the application itself (i.e. at startup) and elegantly handling update and restart.</span></p>
</li>
<li style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Acceptable:</span></strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> Launching an update checker <em>via a scheduled task</em>, checking, and then exiting.</span></p>
</li>
<li style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;font-style:normal;font-weight:normal;">
<p style="color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Wrong:</span></strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> Auto-starting a background or tray application to constantly check for updates.</span></p>
<p style="background:#f2f2f2;color:#000000;line-height:normal;font-family:&#39;Calibri&#39;,sans-serif;font-size:11pt;font-style:normal;font-weight:normal;margin-top:0in;margin-bottom:8pt;"><em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Personal opinion:</span></em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> This last one is particularly frustrating. Since Windows doesn&#39;t currently have a built-in 3rd party update service (like Windows Update) that will periodically check for updates, download, and install them, many companies have resorted to running bloated, wasteful apps in the background, waiting for updates. This is terribly disrespectful to the end user&#39;s system, and offers absolutely nothing of value to the user that a scheduled task wouldn&#39;t accomplish with less effort.</span></p>
</li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<div style="border-width:medium medium 2.25pt;border-style:none none double;border-color:currentColor currentColor windowtext;padding:0in 0in 3pt;">
<p style="margin:0in 0in 12pt;padding:0in;border:currentColor;line-height:normal;"><strong><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:13.5pt;">8. Consistent Experience Across Contexts</span></strong></p>
</div>
<p style="margin:0in 0in 8pt;line-height:normal;"><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;">Finally, regardless of underlying technology, there should be a common set of commands, tools, and processes that allow users to install any software in the way that they would like. Currently, we see that individual installation technologies are all headed in different directions, which makes automating the installation of some pieces of software a nightmare. We as a community need to have the ability to bring all of these pieces of software together without having to manually script each individual combination.</span></p>
<p><em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"><br />Garrett Serack</span></em><span style="color:black;font-family:&#39;Arial&#39;,sans-serif;font-size:9pt;"> (<a href="https://github.com/fearthecowboy"><span style="color:blue;">@fearthecowboy</span></a>)</span></p>
<p></p>]]></content:encoded>
    </item>
    <item>
      <title>Introducing PackageManagement in Windows 10</title>
      <link>https://docs.microsoft.com/archive/blogs/packagemanagement/introducing-packagemanagement-in-windows-10</link>
      <pubDate>Tue, 28 Apr 2015 16:33:00 GMT</pubDate>
      <dc:creator><![CDATA[Xumins]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.technet.microsoft.com/packagemanagement/2015/04/28/introducing-packagemanagement-in-windows-10/</guid>
      <description><![CDATA[In Windows 10 we are launching a new PackageManagement feature (formerly referred to as OneGet) that...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family:Calibri;"><span style="font-size:medium;">In Windows 10 we are launching a new PackageManagement feature (formerly referred to as OneGet) that enables ITPros or DevOps to automate software discovery, installation, and inventory (SDII), locally or remotely, no matter what the installer technology is and where the software is located.&nbsp; </span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">So why are we implementing PackageManagement? In the Linux world, people are familiar with package managers such as Apt-Get, YUM, RPM, etc, for different Linux distros.&nbsp; In the Windows world, however, there are quite a few installer technologies, each having their own way to install software, such as&nbsp;</span><span style="font-size:medium;">MSI, MSU, APPX, and the list goes on and on. This creates a challenge for ITPros and DevOps and a need for a tool to automate the software deployment experience.&nbsp; PackageManagement is aimed at solving this problem.&nbsp; Let&rsquo;s first have a glance at the architecture.</span></span></p>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">&nbsp;</span></span></p>
<h1><span style="color:#2e74b5;font-family:Calibri Light;">Architecture</span></h1>
<p><span style="font-family:Calibri;"><span style="font-size:medium;">PackageManagement is essentially a Package Management Aggregator.&nbsp; It creates a unified and consistent PowerShell interface for users and provides a plug-in model at the back end that different installer technologies or package managers can plug-in as providers, using PackageManagement APIs.&nbsp; Each provider further manages one or multiple package sources (repositories) where software packages are stored.</span></span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/3056.oneget-architecture.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/3056.oneget_2D00_architecture.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/3056.oneget-architecture.png" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/3056.oneget_2D00_architecture.png" border="0" /></a></p>
<p><span style="font-family:Calibri;font-size:medium;">Regardless of the installation technology underneath, users can use these common cmdlets to install/uninstall packages, add/remove/query package repositories, which we call Package Sources, and query a system for the software installed.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;<a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/0216.oneget-architecture.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/0216.oneget_2D00_architecture.png"></a></span></p>
<h1><span style="font-family:Calibri;font-size:medium;">&nbsp;</span><span style="color:#2e74b5;font-family:Calibri Light;">What&rsquo;s in the box?</span></h1>
<p><span style="font-family:Calibri;font-size:medium;">In the box, we will have </span></p>
<ul>
<li>
<p>PackageManagement Core component,</p>
</li>
<li>
<p>a PowerShell module to provide cmdlets, and</p>
</li>
<li>
<p>a key set of providers.&nbsp;</p>
</li>
</ul>
<p><span style="font-family:Calibri;font-size:medium;">That&rsquo;s it, all other providers can be installed on the fly.&nbsp; This allows for a small footprint while not losing agility to dynamically bootstrap package providers and install packages from those providers.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">The key set of providers coming in the box are:</span></p>
<ul>
<li>a Bootstrap provider (the provider that knows where to get more providers from)</li>
</ul>
<ul>
<li>an MSI provider for handling MSI files</li>
</ul>
<ul>
<li>an MSU provider for handling Microsoft update files</li>
<li>an Programs provider (Add/Remove programs) for providing inventory data of anything that registered itself with Add/Remove programs</li>
</ul>
<ul>
<li>PowerShellGet -- for accessing PowerShell modules.</li>
</ul>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<h1><span style="color:#2e74b5;font-family:Calibri Light;">Quick Start</span></h1>
<p><span style="font-family:Calibri;font-size:medium;">Let&rsquo;s explore what PackageManagement can offer you. A handy <i>Get-Command</i> is a good start.</span></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/ps1.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/ps1.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/ps1.png" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/ps1.png" border="0" /></a></p>
<p><span style="font-family:Calibri;font-size:medium;">You can see that we provide three levels of management, i.e. <i>provider</i>, <i>package source</i>, and <i>package</i>. The cmdlets are pretty much self-explained. We are particularly interested at the Package level operations, so let&rsquo;s explore further on the SDII operations.</span></p>
<p><b><span style="font-family:Calibri;font-size:medium;">Discover Packages</span></b></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/ps2.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/ps2.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/ps2.png" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/ps2.png" border="0" /></a></p>
<p><span style="font-family:Calibri;font-size:medium;">This will look at all package sources for the provider PSModule and return all the versions matching the package name.</span></p>
<p><b><span style="font-family:Calibri;font-size:medium;">Install Packages</span></b></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/ps3.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/ps3.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/ps3.png" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/ps3.png" border="0" /></a></p>
<p><span style="font-family:Calibri;font-size:medium;">Once you find the package, you can simply specify the version without specifying a package source and PackageManagement will install that version of package from the correct package source.</span></p>
<p><b><span style="font-family:Calibri;font-size:medium;">Inventory</span></b></p>
<p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/ps4.png" original-url="http://blogs.technet.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/ps4.png"><img alt=" " src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/prod.evol.blogs.technet.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/01/04/71/ps4.png" original-url="http://blogs.technet.com/resized-image.ashx/__size/550x0/__key/communityserver-blogs-components-weblogfiles/00-00-01-04-71/ps4.png" border="0" /></a></p>
<p><span style="font-family:Calibri;font-size:medium;">You can specify the <i>&ndash;provider</i> parameter at Cmdlet <i>get-package</i> to check what&rsquo;s installed in the local machine. There is a special provider <i>Programs</i> included. With <i>&ndash;IncludeWindowsInstaller</i> option, it returns a superset of packages comparing to the Add-and-Remove Program, which only lists those &lsquo;volunteering&rsquo; registered MSI packages.</span></p>
<p><span style="font-family:Calibri;font-size:medium;">&nbsp;</span></p>
<h1><span style="color:#2e74b5;font-family:Calibri Light;">Where to get it for down-level platforms</span></h1>
<p><span style="font-family:Calibri;font-size:medium;">Besides Win10, PackageManagement is available for down level platforms in a few ways:</span></p>
<ul>
<li>
<p>It is included in the <a href="http://www.microsoft.com/en-us/download/details.aspx?id=46889">Windows Management Frameworks 5.0 (WMF 5.0) Preview</a>&nbsp;that supports back to Windows 7 and Windows Server 2008 R2. WMF 5.0 also contains PowerShell 5.0, DSC, and other components.&nbsp;</p>
</li>
<li>
<p>For users who only want PackageManagement, we will soon release a stable version of just PackageManagement and PowerShellGet provider as a MSI package, and plan to refresh it frequently.</p>
</li>
</ul>
<p><span style="font-family:Calibri;font-size:medium;">PackageManagement is also an open source project at </span><a href="https://github.com/OneGet"><span style="font-family:Calibri;font-size:medium;">https://github.com/OneGet</span></a><span style="font-family:Calibri;font-size:medium;">. You can check out the latest news and code from there.</span></p>
<p></p>]]></content:encoded>
    </item>
  </channel>
</rss>