A look at Project Centennial
Project Centennial is an upcoming feature of Windows 10 that allows users to run converted desktop programs as UWP apps on PCs running the OS.
If you have followed Microsoft's Build 2016 Developer Conference last week -- if not check out our summary of the keynote -- you may know already that Microsoft plans to release release a converter that turns desktop programs into Universal Windows Platform apps.
Microsoft demonstrated the conversion of two games during the keynote but did not reveal information about the process at that time.
One of the sessions held later on however did. You can watch it on Microsoft's Developer site if you want, or continue reading first.
The main idea of Project Centennial is to provide developers with an easy to use converter to convert their Win32 or Net programs to the UWP.
Programs get converted ideally without the requirement to rewrite any code, and while that is the case for many desktop programs, some will require code rewrites while others cannot be ported right now at all.
The process begins with the converter which takes the installer file (this does not need to be a msi, it can be something else, even a batch installer), to create a packaged app with UWP manifest out of it.
What's interesting here is that it will monitor what the program does during installation. This includes all of its writes to the Registry as well as files and folders that it creates. The package will simulate these writes using redirects to make the app believe that the files and Registry keys exist, when in fact, they don't on the underlying system.
This AppX package can be sideloaded to be installed on the system, or made available on Windows Store so that users can download and install it from there.
Why would developers do that?
Developers mayÂ have certain advantages when they convert their desktop programs to Universal Platform Applications.
Apart from being able to sell their app in Windows Store, being listed in Windows Store may improve the discoverability of the program.
Since they can continue to offer the program on their website (either as a Win32/Net program or Appx package), and third-party sites, they don't lose out on customers necessarily when they do.
Additionally, it may be easier to bring the converted app to other devices running Windows 10.
Last but not least, developers may add features of the UWP such as tiles, background notifications or app services.
Microsoft hopes that the conversion is just the first part of the process of turning Win32 or Net programs into full UWP apps that will run on all platforms.
What about users?
Project Centennial is a Windows 10 only feature that will require the Anniversary Update that comes out later this year on top of that.
This means that most Windows users cannot download and install these converted programs right now.
Since file and Registry writes use redirects during installation only, it means that everything is removed thoroughly when the app is uninstalled from the system. Please note that this does not include writes that happen while the app is being used.
Theoretically, security should be better as well as Windows Store apps get vetted by Microsoft before they are allowed to be offered in the Store.
Microsoft tries to improve security as well by preventing converted desktop programs from installing services or drivers, or using elevation.
These converted apps are not sandboxed however like UWP apps which means that there is more of a chance that they will do something questionable or even outright malicious.
Much of it comes down to Microsoft's review process for Windows Store apps, and how fast the company reacts when problematic applications slip through and are offered in Store for a period of time.
If the converted desktop apps are not sandboxed when opened as a UWP, there is little to nothing to offer the end user. The enhanced security of UWP is the only reason I would choose a UWP version over the same item as a desktop program. This seems like an odd thing for Microsoft to do.
Does it really seem like an odd thing for them to do when they’re trying to push their new platform in order to take absolute control over what PC software you can run? No, it is entirely in-line with their goals.
As a user, I would prefer this the other way round. They did have some strange news this week, but this isn’t it.
They’re not trying to control what you can do since you can do anything you want. The enforcement of sandboxing for Win32 apps packaged using AppX is important because it finally solves real issues like the lack of a proper uninstallation mechanism. What they’re doing here already exists in a similar fashion and it’s called Application Virtualization or App-V: https://technet.microsoft.com/en-us/windows/hh826068
Let’s re-visit this topic in 5 years when “what they’re trying to do” becomes more obvious and less about conjecture.
Don’t see the point of this at all. I would rather convert UWP apps to Desktop apps if possible.
So you don’t the see point in standardizing the installation process and solving DLL hell, Registry bloat, and abuse of administrative privileges? Win32 is a mess and this allows Win32 apps to remain the same while improving the way they are packaged and deployed. They’re not converted to UWP (WinRT) but they become capable of taking advantage of UWP APIs.
DLL hell and Registry bloated was fixed ages ago by .NET, side by side statically linked assemblies for native apps and the interdependency and resource protection mechanisms introduced in Windows Vista. Registry performance was no longer an issue starting with Windows XP since they moved the whole Registry into the system cache, outside of the paged pool. What era are you living in? Windows 9x? Win32 is powerful but idiots just don’t know which programs to install and so they use those apps which damage the OS and then blame the design of Windows. Don’t forget that UWP apps have many restrictions. The downsides easily outweigh the advantages. On Win32, nobody’s preventing you from making a portable app that does not even use the Registry. Think of Win32 like a powerful platform with unrestricted freedom and UWP as a locked down walled garden that is soon going to become more and more restrictive.
Would that be the same DLL hell, Registry bloat, and abuse of administrative privileges problem that Microsoft created in the first place? Call me skeptical but i don’t trust a company to fix a problem they created in the first place.
A lot of Win32 applications need admin privileges to do the the things they do. I think the writing is on the wall for Win32 applications. MS will simply no longer incrementally improve it as they did up to Windows 8.1 and it looks like they will focus evolving UWP api giving it access to things in Windows 10 to the exclusion of Win32 and that has many people rightfully upset. The side loading argument is bs too b/c like android and the Amazon appstore has shown only a small amount of people want turn that option on if a when a trusted vendor like Amazon gives peoples instructions to do so.
Whether you making a living selling customers your production software like CAD and Photoshop or you run your own application store like Steam or GOG, the fact that what you developing on is now considered legacy is bad for everyone except MS. You think CAD, which makes money selling a relatively small amount of licenses to repeat customers for thousands of dollars each, is going to be happy with UWP and MS getting 30 percent cut? The 30 percent cut precludes Steam or any other storefront from operating UWP too and many of the functions of UWP is still tied with getting your application vetted by MS.
They even brought out the registry argument is patently false and the argument the snake oil registry optimizer industry uses to the determent of users. So all we Windows users have to look for is a slow decay of Win32 or embrace the suck with UWP.
@Jeff @Corky I’m well aware that they fixed those issues but if they brought them up is because most developers simply don’t care. And Microsoft even takes all the blame for the mess they created (they called themselves dumb and stupid during the presentation). I believe their long-term plan is to remove the Registry altogether by virtualizing all the Registry reads and writes into individual files on the filesystem for both built-in and external first-party software and for all third-party software.
You mentioned portable software as an example of avoiding the Registry. Being portable doesn’t mean it doesn’t write data to the Registry. Some portable apps write to the Registry unless you configure them to use regular files (.ini, .cfg, etc.). An example of a popular Win32 portable app that does this is MPC-HC: instead of downloading the installer, get the .zip or .7z they provide, then run the binary. It will store the settings in the Registry unless you tick the setting for storing that data in an .ini file.
What Microsoft is trying to do is enforce the solutions they already created long ago while expanding them along the way.
You also say that the Universal Windows Platform (just an extension of the Windows Runtime from Windows 8 and 8.1) is limited. Win32 (itself a subset of the Windows API) was also limited when it came out with Windows NT 3.1 in 1993. .NET was meant to replace Win32 but it didn’t succeed because it wasn’t enforced. So now you have WinRT/UWP to replace both Win32 and .NET in the long term.
@neal Win32 might no longer be improved but Microsoft corrected people who called Win32 software “legacy desktop apps” during the presentation of Centennial. A Win32 app which installer is converted into AppX automatically becomes a “modern desktop app” ready to be distributed through the Windows Store or any other distribution method you want such as a website.
What is being converted is the installer, not the app. Your Win32 app will still be the same. This is good because you no longer have to bother writing installers, especially ones that are terrible at uninstalling. Windows itself will handle that for you while allowing you to do absolutely nothing to the code of your app itself.
@anon, The problem is everything you say Microsoft is try to fix with UWP has been attempted to be fixed before and every attempt seems to have just made the matter worse, the registry was used because Microsoft didn’t want programs storing settings in individual .ini files, .NET ended up being a bloated POS with multiple different version that were forced on the user (installed with the OS).
Microsoft’s biggest problem isn’t that X, Y, or Z is or isn’t secure, better, worse, it’s that Microsoft developed Windows in such a way that it’s impossible for them to remove legacy features in a sensible way, in a way that doesn’t cause problems. If Microsoft had a sensible package management system like Linux they wouldn’t have any of these problems as people who wanted to run legacy software could just install the relevant package.
.NET doesn’t solve DLL Hell. It certainly makes it _better_; however, many .NET programs have interop dependencies on DLLs in the system, these pose problems during servicing, version mismatches, etc. Similarly, the Windows Registry should have _never_ been exposed as a data contract; that is, developers should have never been able to peek and poke into HKLM\… and HKCR\… registry hives. It’s created massive headaches. Many apps leave garbage behind when they uninstall; furthermore, as the registry grows, it increases the size of memory that has to be committed to preallocated page pool. That’s one of the reasons why your system seems to run slower over time.
Centennial addresses all of these problems. First, it redirects Registry access to a private hive so that apps can’t pollute the system. Since the hive is private, it doesn’t bloat the real registry and slow down your machine. Centennial does this transparently, so that your app isn’t even aware of what’s going on. That’s a good thing. It provides better app compat. Second, Centennial redirects certain known folders so that, for example, the app doesn’t leave behind garbage in AppData. Third, Centennial apps run within a logical job (NOT A SANDBOX) that can be brought down (like any other UWP app) for servicing. Fourth, Centennial app DLLs cannot be loaded into any process that isn’t part of the app; which means that one app can’t block another app from being serviced. This is a “sensible package management system” that was specifically designed with servicing in mind.
Which makes them a good fit for the Store. Centennial is the future of Win32 apps.
@ Martin Brinkmann ;
Cant wait.. HURRY PLEASE ! Asus Notebook/PC with Sonic Master,bought new,I Live n a assisted living facility,Need smart gestures 2 work(touchpad), Need Cortana 2 work. Need all the functions I bought this Asus Notebook/PC with Win 8.1 built n 2 work.May 2016. May 2016 I Ran the compatibility test 4 Win10.Test said,Notebook/PC Compatible,no conflicts found,option 2 install Win 10 r keep Win 8.1 b4 trial period ended. June 2016,Pleased with Win10s proved greatness,I accept the update. June 2016-1 day after accepting Win10,8.1 Driver failures,will not allow Win10 updated drivers 2 install. I was instructed 2 uninstall the 8.1 drivers ,uninstall Win 10,Reinstall Win 10 after deleting 8.1 drivers 2 allow Windows 10 2 install, then reinstall the updated win 10 drivers . I deleted the 8.1 drivers,they reinstalled themselves after I deleted them over the attempted updating 10 drivers. The 8.1 drivers r incompatible with Win10 (version ) now downloaded ,not able to run on Asus Notebook/Pc,no function,rendered useless. Asus Notebook with Windows 8.1 platform built on board incompatible with its own platform..MS,ASUS,Forums,help,all and any geekified person I know,No resolve r fix 4 incompatible drivers built n Asus Win 8.1 on Win10 updated version . Win10 was so wonderful during the trial phase…the incompatible list boggles what is left of my brain. Asus Win8.1 software? How could that b ? Windows platform’ built n Asus product(r another corporate’s product) is owned by Windows regardless. Windows Owned. A agreement had 2 exist. A partnership had 2 exist, compatibilities had 2 exist -known. Existing r not existing- had 2 exist-known, updatable hardware(drivers,sys data mod,dev,so on )existed,HAD TO…WHY you ask…The reason 4 a compatible test 2 b performed is the existed reason known… Exist known 4 Windows own hardware 2 be incompatible with itself built into another’s corp branded product, this case- Asus- Asus takes’ ownership of Windows hardware on their existing software,the exact existing case . While the update tried 2 install updated Win10 drivers,8.1 drivers override Win10 drivers,reinstalling 8.1 drivers,leaving me with a useless Notebook/PC . Running Win10 version without updated Win10 drivers troubleshoot details, incompatible drivers .. duh..continuously sending a reverse command. No modifications to factory set priorities,variables,sys settings can b changed. The exact settings needed to b changed 2 allow the Win10 drivers 2 install on this Asus has greyed these settings.You know what Greyed means…Uninstalled Windows 10 ,did a back up . Reinstalled 8.1. Reinstalled from Asus corporation downloads, all the uninstalled drivers,apps,any changes to any setting that changed ran recovery on as well after the reinstall back to 8.1.Rejected installs on the attempted reinstalled Win 8.1. Reinstalled a fresh signed version of Win10 after uninstalling 8.1 after the failed reinstall,A fresh Win10 tried to install the updated drivers ( smart gestures,cortana,zoom,accessories ,all or any priority changes,apps loaded when bought, drivers ..so on ) all settings factory set 2 not allow any manipulation to the sys build with Windows updatable drivers (supposably updateable, according 2 the compatability test I ran ,told compatable by Windows) on board sends warnings-Taking ownership warning,errors-too many 2 put n this ALREADY book report. Windows own platform -Apps,Hard/Software 8.1- Priority settings,Win System settings -can not b manipulated,changed from r 2 automatic r manual ,they are greyed out,set by Asus during build .There had to be a reason Win compatibility test said this Asus Win 8.1 was compatable with no found conflicts. All corp,tech,geekified fix attempts failed. Brainstormed my limp brain 2 another time … take 2 -2min away,2 steps back b4 regret’..Memories floated n2 my frontal cortex .. mid 80s to bout 1995…Controller Area Network (CAN) wires,software protocols connecting a cars computer 2 sensors (CANbus) cars r smarter..data sent 2 each ECU plays a different roll -electronic control units(ECUs)detect variables,listen 2 control modules,sensors,switches,data command errors from other ECUs,in/output 2 n from r a continuous stream,when ECUs detect errors they reverse direction,(OBD-II,2nd generation)On Board Diagnostics sends codes 4 CAN 2 self-diagnose. You developed an algorithm 2 upload new software in this error to run Win 10 drivers ! – Fixing windows incompatibilities with itself . During my Win10 trial phase on my Asus Win 8.1 notebook/pc I was running on the retail promo feature !! Thats why Win10 was wonderful during the trial phase ! I was running on Asus Backed up Diagnostics. As soon as I accepted Win 10,Asus software denied Win 10 hardware applied as retail promo during the initial trial period onto the Asus 8.1 Windows build !! ASUS & WINDOWS – Pegasus ,your window wings have been clipped n 8.1 after updated version download 2 Win10,you can not fly n Window’s 8.1 any longer,you are not allowed n Window 10. Asus Window’ Toss. Window’s Closed,Locked,Applied Bars Secured, Securities Tinted,Blocking Their own Siblings,Children,Parents,GUI,Multiple Critical Constraints,Trusted Certificates,Deleted 8.1 Drivers reinstalling , unimaginable- 489 attempted installs with Windows auto-update on. Event view confirmed . Unplugged this lame horse til you release this install ! Please hurry ,Google Chrome is beating on my door !
as far things are understood besides whatever from the whatsoever then thinking about programming of a kind;
Registry settings to still be handled by the system::
[^] to become files on a folder \ would be the same as whatever registry entries would had being deleted;
[?] so it would be about encrypted files handled by the system that would manage the load and handle of the entries of these registry files; .:fast\slower ?
Pack Installer (converted)::
[^] to be specific for a party, applications where only interested to playing Windows Tiles\Notifications;
[?] so it would be about pre-made programming environment just as to set a text to a label, so to create\update these Tiles and Notifications;
[^] another party from who just plays money clicks just like somehow are seem with livestreams donations [whatever it is true];
[?] so it would be about to explicitly just split the undertitle of the concept and simply wide available as an application search engine from a digital magazine of the virtual tiny captions besides the covers;
all besides whatever the operating system works to handle all the productivity;