June 2013

Volume 28 Number 6

Windows 8 - Getting Your App into the Windows Store

By Bruno Terkaly | June 2013

With the right guidance, getting an application into the Windows Store is surprisingly easy. I should know—I’ve done it myself for two applications (Kids Car Colors and Teach Kids Music) and I’ve helped others submit hundreds of apps. I believe you can get a quality, useful app into the store in a weekend or two and in this article I’ll show you how to do just that in 10 simple steps.

There are many reasons you should consider writing a Windows Store application for Windows 8. To start, with more than 100 million app downloads, the Windows Store is proving to be a viable ecosystem for entrepreneurs and developers. The opportunity to monetize your Windows developer skills has never been greater. One of my colleagues is already making more than $30,000 per month with a card game!

Another good reason to think seriously about writing apps for software marketplaces is that the future of software development is clearly headed in this direction. Not too long ago, companies or individual developers identified or branded themselves by creating a Web site presence. Although that’s still the case, the emerging trend is to create and distribute software through Web-based marketplaces, such as the Windows Store.

This software model solves a lot of headaches for budding entrepreneurs, because it minimizes the distracting challenges of customer acquisition, billing and collection, deployment, and installation—to name just a few. Windows 8 and the Windows Store make it simple for millions of customers to find, try and buy high-quality, certified apps from practically anywhere in the world; for the developer, it’s easy to distribute, update and get paid for the apps you develop.

Before getting started, I want to mention that this article is focused on Windows 8, not on Windows Phone. Windows Phone has a separate store (Marketplace) and its own separate SDK.

10 Simple Steps

My goal in this article is to explain the steps I took to get my two apps into the Windows Store. As you can imagine, I had to learn some new skills, and I want to pass these along to you. Let’s take a look at those steps.

  1. Come up with an idea—a game, a productivity or information app, or just about anything appropriate for the format.
  2. Download the tooling, SDKs and so forth. You need to be running Windows 8 and you’ll need to download and install Visual Studio 2012 Express for Windows Desktop (free), as well as optional SDKs such as the Windows SDK for Windows 8 and the Advertising SDK.
  3. Establish a Windows Store Developer Account at the Microsoft Dev Center Portal. This is where you sign up and enter information about your app, such as the name, pricing, in-app purchasing, a description and screenshots for the store (you’ll have screenshots once you’ve completed step 5). You may be eligible for a free Windows Store account.
  4. Consider whether your app will display ads. If so, you’ll need an account at the Microsoft Advertising pubCenter. You’ll get an AdUnitId, which will be used in an AdControl within the application.
  5. Create a project in Visual Studio after selecting from various project templates and languages. When development is complete, you’ll create an app package (essentially a zipped-up version of the application).
  6. Upload your app package to the Dev Center Portal. You already entered information about the app (in step 3). Now you’re uploading the finished application package.
  7. Complete the remaining work at the Dev Center Portal. After you upload the app package, fill in the remaining two sections—the App Description and the Notes to testers.
  8. Now you wait for certification. If the app fails compliance testing, you’ll need to fix the issues.
  9. Resubmit the app. It’s not unusual to fail at certification your first time through. This document can help: bit.ly/rVo1VY.
  10. Adjust and enhance the app. An app should be improved over time. Its revenue model may change as well. For example, you might choose to go to a trial model instead of a free model with ads. Huge scale is needed to make money with ads.

Now let’s look at some of the details.

Idea Conception You can’t really get started until you come up with a good idea. In my case, this was easy. I have a 2-year-old boy who much prefers to learn with a device than with a book. I realized that he loved two things—cars and music. So the goal of my first app was to use cars to teach him colors. With the second app, I wanted to show him the instruments in an orchestra, both in terms of how they look and how they sound.

By a significant margin, games dominate in popularity, both in terms of downloads and in terms of time spent in the application. The next most popular application category is social networking, followed by entertainment and utilities (read the slide deck, “The Future of Mobile,” at read.bi/ZGIUV6 for more information). If your goal is to maximize popularity and, hence, monetization, you’ll want to consider the type of application in which to invest your resources.

Design Windows 8 represents a major leap forward in UI design. It’s fast and fluid to use, and optimized for mobile, touch-enabled form factors such as laptops, tablets and convertibles. The new design paradigm is formally known as Microsoft UI Design Language, also known as Modern UI. It focuses more on beautiful typography and less on fancy graphics, while putting content at the forefront for the end user rather than commands on the chrome. The cornerstone of application development with Modern UI design is a minimalistic approach with balance, symmetry and hierarchy as key pillars, as shown in the Bing News application in Figure 1. Forget about drop shadows, transparencies and 3D. All applications that get accepted to the Windows Store must conform to the Windows Store UX Design guidelines (see design.windows.com and bit.ly/R1mlWH  for more design guidance).

New Windows UI Design in Practice
Figure 1 New Windows UI Design in Practice

Great for .NET Developers—and Others Although there’s a new design paradigm, .NET developers will feel right at home because you’ll use many familiar technologies. Much of the new framework, the Windows Runtime (WinRT), can be thought of as both a subset and superset of the Microsoft .NET Framework. You can access Windows Runtime with a variety of languages, such as C++/Component Extensions (CX), C#, Visual Basic .NET and JavaScript/TypeScript. Windows Runtime is a subset because it supports many, but not all, of the typical .NET elements, which amounts to about 1,800 types. But it’s also a superset because it can utilize touch and natively supports sensors, such as a camera, ambient light sensor and accelerometer. C# developers will be happy to know that C# is a first-class citizen, minimizing the need to drop into C++ to gain additional efficiencies. Existing Silverlight and Windows Presentation Foundation (WPF) developers will feel most at home writing programs for Windows Runtime because of the strong emphasis on XAML, the declarative markup language used to build UIs.

That said, C++ offers some strong advantages, in particular that you can leverage Direct2D and Direct3D. Direct2D is a 2D and vector graphics API that provides fast, high-quality graphics performance, taking advantage of hardware acceleration through compatible graphics cards, which frees the main CPU to perform other operations. Direct2D is built on top of Direct3D, which is the graphics API on the Xbox and Xbox 360 console systems. Direct3D also takes advantage of hardware acceleration and is used to render 3D graphics applications, typically games. If you’re among the many developers who have existing C++ legacy code, you’ll be happy to know it can be easily ported to a Windows Store application.

You'll need to choose the technology that best suits your skills and the requirements of your app. Web developers will typically choose HTML5/JavaScript and leverage the Windows Library for JavaScript (WinJS) APIs, while .NET developers will choose C# or Visual Basic. High-end game developers will choose C++, along with Direct2D/Direct3D. Developers are not limited to a single language. WinRT allows the creation of C++ components that can be called from C# or JS code, and C# components that can be called from JS code. The common theme across most of these languages is the support for XAML (note that HTML5 and JS apps cannot be written in XAML).

Getting Set UpGetting your machine ready to produce Windows Store applications is a matter of downloading and installing the right software. Obviously, you’ll need a copy of Windows 8 as the base OS. If you already have Windows 7, you’ll probably find the upgrade to Windows 8 fairly seamless. Windows 8 still has a desktop that Windows 7 users will find familiar and that can be accessed at any time using the Windows Key+D shortcut.

Once you’ve installed Windows 8, you need to download developer tooling and sign up for an account at the Windows Store Developer Portal. Visual Studio 2012 is required, and it comes in a free Express version that has everything you need to build a full-featured Windows Store app. You can find a comparison of the various Visual Studio versions at bit.ly/Pzan9Y. Figure 2 provides some links to get you started.

Figure 2 Links to Get You Started

Windows 8 Not Free bit.ly/Sar392
Visual Studio 2012 Express Free bit.ly/QLJsJT
Get a Developer License Free bit.ly/17SWdpd
Sign up for a Developer Account $49 for Developers bit.ly/Y4tTkK
Sign up for Ads in Your App Free bit.ly/L6xNAh

You can develop and test your Windows Store applications for free by simply signing up for a developer license with your Microsoft Account. If you wish to deploy to the Windows Store, you’ll need to sign up for a developer account. Check Microsoft programs such as BizSpark (microsoft.com/bizspark), DreamSpark (bit.ly/QGbma7) and MSDN (bit.ly/­2ludR3). If you plan to make money by showing advertisements, you’ll need to sign up for at an additional portal known as the Microsoft Advertising pubCenter (see pubcenter.microsoft.com). One of the best and most thorough learning resources can be found on Channel 9 (bit.ly/VP7IO0): “Windows Store apps for Absolute Beginners with C#.” This 34-part series features video and sample code, and results in a full-featured application.

Learning How Once you set up your development environment, you’ll want to learn how to design and develop Windows Store applications. I’ll show you some of my personal journey developing Teach Kids Music and provide some follow-up learning resources later in this article. Figure 3 provides links to some quick tutorials to get you started.

Figure 3 Tutorials for All Developer Types

Create your first Windows Store app using JavaScript bit.ly/vVbVHC
Create your first Windows Store app using C# or Visual Basic bit.ly/KvKxkt
Create your first Windows Store app using C++ bit.ly/11CnUlI
Create your first Windows Store app using DirectX bit.ly/A5eZIF

MonetizationThis is something you’ll want to think about right from the beginning. There are many ways to monetize your Windows Store application. The first and most obvious way is to specify a purchase price. The Windows Store Dev Center is where you define the pricing details of your app as it appears in the Windows Store. You can charge anywhere from $1.49 to $999.99. You can even specify a trial period of one day to 30 days. The second way to monetize is through advertising, which works particularly well with game applications, where users spend significant time interacting with the app. As noted previously, to make use of advertising, you’ll need to establish an account at the pubCenter. You then add an advertising control to the application by including an AdControl with an AdUnitId, which binds the ad to a specific application.

A growing trend and one of the more interesting ways to monetize your application is through in-app purchases. Similar to Web storefronts, some apps are being created as vehicles to sell products. This means that app customers can make purchases directly from within a Windows Store application. For example, Rovio Entertainment Ltd., the creator of Angry Birds, made 45 percent of its 2012 revenue from in-app purchases, selling merchandise (toys, apparel and accessories) based on its popular games. Think about artists or clothing retailers displaying products and making them available for purchase by app users. But while selling merchandise is typical for in-app purchasing, a more common approach is to give away some aspect of an application for free, then offer new content or complementary features for purchase. To support in-app purchases in your application, you’ll need to indicate a product ID, which can be obtained from the Dev Center Portal. The product ID isn’t seen by customers; it’s used as an internal reference to the offer in the app’s program code. The Windows Store supports in-app purchases directly through the store or through third-party fulfillment services. Use the CurrentAppSimulator class (bit.ly/Ry0Imp) for testing and see “Verifying purchases using receipts” (bit.ly/UrK8jA) for more information on programmatically verifying services.

Creating an App

When creating Teach Kids Music, I found the Grid App template, shown in the New Project Window in Figure 4, to be quite useful.

Selecting the Grid App Template in the New Project Window
Figure 4 Selecting the Grid App Template in the New Project Window

The tooling built into Visual Studio 2012 is pretty powerful. A toolbar combo box lets you choose among the local machine (full screen), the simulator or a remote device (such as my Surface RT). The simulator makes it possible to run and test an application without physically deploying it to a device. Many developers are able to deploy an application to the Windows Store without ever physically deploying it to a Surface device. The simulator supports multiple resolutions as well as changing the orientation, and various touch modes.

Figure 5 shows the default Grid App template running in the simulator. Notice it includes sample data that can be changed to support the real data your application will need (which is exactly what I did when I created Teach Kids Music). When you create the Grid App template project, it includes a file called SampleDataSource.cs. This is the file you can edit with your own data.

The Grid App Template Running in the Simulator
Figure 5 The Grid App Template Running in the Simulator

Notice in Figure 6 that Teach Kids Music closely resembles the look and feel of the default Grid App template.

Teach Kids Music Running in the Simulator
Figure 6 Teach Kids Music Running in the Simulator

The important point is that it’s really easy to take one of the out-of-the-box templates and modify the code to create a compelling Windows Store application. This means you don’t have to build an application from scratch (though that’s an option with the “Blank” template). I built Teach Kids Music as a series of steps. The first step was to add my own data, which can be done by simply modifying SampleDataSource.cs. The parent-child relationship is represented in the code by two main objects, SampleDataItem (child) and SampleDataGroup (parent). You’re free to modify these two classes to support the data model needed in your application. Because Teach Kids Music actually plays the sound of each instrument, I added properties in the SampleDataItem class to represent .mp3 files that were added to the project, as shown in Figure 7.

Figure 7. Adding Properties in the SampleDataItem Class

SampleDataGroup strings_group = new SampleDataGroup(
  "Strings"
  ,Strings"
    );
strings_group.Items.Add(new SampleDataItem(
  "Violin"
  ,"There are usually 30 violins in an orchestra" + "," +
   " more than any other instrument."
  ,"Images/Viola.jpg"
  ,"Images/ViolaThumb.jpg"
  ,"Sounds/Violin.mp3"
  ,"Images/PlayButtonBig.png"
  ,strings_group));
// And more ...
this.AllGroups.Add(strings_group);

Modifying the Template-Generated Code

I made a number of other modifications that were straightforward. First, as you can see in Figure 6, I included several images of musical instruments. To make the app beautiful, I went into Photoshop and removed the background. I made two sizes of the images, a thumbnail size for the images you see in Figure 6 and a much bigger full-screen size that appears when a user clicks on a thumbnail. Second, I purchased a number of .mp3 files to represent the sound of each instrument. I used the free audio editor Audacity to enhance the audio and normalize the volume to be consistent across all instruments. I made a “Sounds” folder in the Visual Studio Solution Explorer and copied the .mp3 files to it. Third, I made some stylistic changes to the XAML code. I changed the screen background to white and shortened the description of each instrument to just one line (the name of the instrument). Finally, because I needed to play sound, I made use of the MediaElement control, which can be used to play sounds and video.

Accelerating Your Development Effort

The built-in Grid App template greatly accelerated my understanding of a number of important developer skills. I already knew a fair amount about C#, including such topics as LINQ, anonymous types, lambdas and so on. And I have a decent understanding of the basics of Visual Studio, such as using the debugger, adding content to a solution, and working with the XAML designers (including Blend) and codebehind. But the real benefit of the Grid App template is that I was able to master some of the more complex topics, such as data binding, change notifications, gridview controls, data templates, type converters, device-orientation changes, snapped state, semantic zoom, share contracts, search contracts, app bars, flyouts, lifetime management (saving and restoring state), saving user preferences, tile management, push notifications, toasts and in-app purchasing. The multipart video series on Channel 9 I mentioned earlier can help you start from ground zero and go all the way to expert.

Certification Requirements

Microsoft specifies a clear set of certification requirements (bit.ly/rVo1VY) for applications that get submitted to the Windows Store. The goal of these requirements is to support a diverse catalog of high-quality, engaging apps for Windows customers worldwide. Every app that gets submitted to the store must undergo significant scrutiny to make sure it conforms to the Windows Store app certification requirements. For example, and perhaps most obvious, Windows Store apps must provide value to the customer. The application must be fully functional. The image on an app’s tile “must be reasonably related to the content of the app.” Other obvious requirements include the app behaving predictably, without crashes or long launch times (no more than 5 seconds); the Windows App Certification Kit (bit.ly/13CDLnX) will perform automated tests on this. Apps that take more than 5 seconds to load or resume from suspend will be terminated by the runtime broker, so you shouldn’t call out to a Web service when suspending and you should optimize your app’s initial loading. If you find the initial loading exceeds the allotted time, review the MSDN Splash screen sample at bit.ly/GUrVKn—it has a creative approach to solving initial loading performance issues. Also, remember to test your app in snapped mode, both landscape and portrait modes, and on different resolutions. There’s a lot to consider when preparing to release your app globally.

I’ve noticed two very common reasons for failed Windows 8 certification. The first relates to the app having an appropriate privacy policy (see section 4.1.1 of the requirements). If an app has the technical ability to transmit data, then it must provide access to a privacy policy in both the app’s published Description page as well as in the app itself. The policy should be located in the app's Description page on the Store Developer Dashboard and the app's Settings charm flyout available from the Charms menu. The privacy policy links must be the same on the description page and in the app's Settings charm flyout. Linking to external Web sites doesn’t require Internet (client) capability. Many developers choose to have the privacy statement link go to a Web site instead of hosting another page within the app. It’s important to note that the Internet (client) capability is turned on by default and this then requires a privacy statement even if your app doesn’t use that capability. Capabilities that aren’t used shouldn’t be checked—review them in your Package.appxmanifest.

The other reason apps frequently fail certification relates to age ratings (see bit.ly/Ta4Rdq). You must assign a Windows Store age rating, indicating for whom the content is suitable. There are various standards bodies that define rating systems, such as the Pan European Game Information (PEGI), which provides guidelines on appropriate levels of violence, sexual content and explicit language. You’ll be required to submit documentation from a third party if age rating is required. Your app must target 12+ if it collects or transmits personal information, or if it’s an app not specifically designed for young kids (age rating categories 3+ and 7+), or an app that streams or consumes user-generated content. Most apps for those older than 12+ don’t require an age rating. To help you determine if your app’s age rating can be lower than 12+, look at Figure 8 (note that this is provided only as guidance; the information may change over time).

Figure 8 Age Rating Indications for Apps

Information Collected /Capability Accessed
SMS
Text messages
Location
Microphone
Webcam
Documents Library
Internet connection (incoming or outgoing)
Requires a sign-in account where the name on the account is not required to be an e-mail address or user’s name (in real life), but any made-up name
Collects or transmits personal information: user’s name, address, account number, e-mail address, phone number, contacts
Collects or transmits images of computer desktop or screen shots
Collects or transmits browsing history

Support

You’ll want to take advantage of the free, in-person developer support options from Microsoft. Windows Store App Labs (WSAL) offers a place where you can come in and test your app on a variety of different hardware and get authoritative developer advice and assistance from a Windows 8 expert. The labs are located in more than 30 cities worldwide and they’ve helped with more than 7,000 apps to date. If you can’t get to one of the lab locations, virtual options are available for remote review and assistance directly with a Microsoft engineer. Best of all—it’s free! See www.windowsstore.com/applabs for more information and to sign up.

Creating an App Package

Once you’ve conceived, created and tested your Windows Store application, you’re ready to create your app package. You no longer need to write code to install or uninstall Windows applications. There’s no concept of patch files or setup executables. Instead, Windows Store apps are packaged and submitted. An app package can be thought of as a container or .zip file, with code, data and resources that conform to the Open Packaging Conventions (OPC) standards. In fact, if you rename your generated .appx to .zip, you can open it and look at the contents.

There are a few tasks to accomplish before you can create an app package, as shown in Figure 9. You’ll need to work your way down the list to Packages before you can upload the package you create. This is where you go back to Visual Studio to physically create the package for upload.

Filling out App Information at the Windows Store Portal
Figure 9 Filling out App Information at the Windows Store Portal

As Figure 10 illustrates, a simple right-click on an app—in this case, the TeachKidsMusic project—can create an app package.

Creating an App Package in Visual Studio 2012 Solution Explorer
Figure 10 Creating an App Package in Visual Studio 2012 Solution Explorer

To create the package, you need to log in and associate your application with the Windows Store application you defined previously at the Windows Dev Center Portal. (This assumes you’ve already established a Windows Store account and have entered information about your application into the Dev Center Portal.) See bit.ly/WHnWq2 for more information on building app packages.

During the process, you’ll be asked if you want to use the same technical tests the Windows Store runs during app certification. This means you can run a local copy of the Windows App Certification Kit before uploading a package, and it’s very much advised. By running this kit locally you can find and fix any issues early on to increase the likelihood your app will pass technical certification.

The app package will be created in a sub-folder of your main project folder called AppPackages. The file you upload will be called something similar to YOURAPPNAME_1.0.0.1_AnyCPU.appxupload.

App Submission

If you look back at Figure 9, you’ll see there are just a few remaining steps before your app submission is complete—the Description and Notes to testers sections need to be filled in. The Description section is very important because it’s what a potential customer will see at the Windows Store (see Figure 11). You need to create a screenshot after running the app in the simulator, as discussed previously. The simulator has a built-in Copy Screenshot button. You save this image as a .png file and upload it to the Dev Center Portal.

Viewing an Application from the Windows Store
Figure 11 Viewing an Application from the Windows Store

The Description section includes some information critical to app certification—I mentioned earlier how problems with the privacy policy information are responsible for a great many app failures. You also use the Description section to include an optional Web site, e-mail address and promotional images (should the Windows Store choose to showcase your application).

You’ll find a very helpful walk-through and discussion at the Microsoft Windows Store blog at bit.ly/zFZNAd.

The Notes to testers section is visible to testers only during the certification process, to indicate features or behavior that may not be immediately discoverable. For example, if the app must log into a service or get a username or password, you should include those notes to Microsoft testers. These notes can also be useful if an app uses background audio. In such cases, you should provide a sample that lets testers verify the audio file, making sure the sample takes less than a minute for a single tester to reproduce.

The final step in the entire process is clicking on the Submit for certification button, which becomes enabled only when you’ve completed all the sections and uploaded the app package at the Dev Center Portal. This process can take up to a few days to complete. If your app passes certification, you’ll see the results shown in Figure 12. If it doesn’t pass certification, you’ll get a report telling you why. It’s generally a simple matter of fixing the problem and resubmitting the app.

Receiving Approval
Figure 12 Receiving Approval

If the reasons for your app’s failure are unclear, go to dev.windows.com, click Support and scroll to Help with your developer account, then indicate the problem type and category and choose the type of support you need.

It takes just 10 simple steps to get your app into the Windows Store. But that doesn’t mean your work is over. Be sure to check your Developer Portal frequently for any error reports and to review your customer rating and feedback. Successful apps evolve over time and develop richer feature sets. Because there are many monetization strategies, many developers will continue to adjust their revenue model.

Successful apps also continue to drive awareness through a Web site or through social marketing. You can find the link to the Web portal for your app in your app details and link to that from various social media hubs. Also, if you have a Web site associated with your app, you can have Internet Explorer 10 show a “Get the app” pop-up to allow users to directly install your app (see bit.ly/AcEc1J for more information).


Bruno Terkaly is a developer evangelist for Microsoft. His depth of knowledge comes from years of experience in the field, writing code using a multitude of platforms, languages, frameworks, SDKs, libraries and APIs. He spends time writing code, blogging and giving live presentations on building cloud-based applications, specifically using the Windows Azure platform. He has published two applications to the Windows Store: Teach Kids Music and Kids Car Colors. You can read his blog at blogs.msdn.com/b/brunoterkaly.

Thanks to the following technical expert for reviewing this article: Robert Evans (Microsoft)
Robert Evans is a Senior Premier Field Engineer and the world-wide Technical Lead for Windows 8: Windows Store App Labs. He is a Microsoft Certified Professional Developer and a Windows 8 Dev Bootcamp Master Instructor.  He has presented at TechReady, GeekReady, The Tablet Show, and hosted the Windows 8 Hardware Lab at Build conference in addition to numerous Windows 8 Hackathon events. Prior to becoming a Premier Field Engineer, Robert spent 12 years as a Software Development Engineer at Microsoft working on various products such as Xbox Live, MSN, Mobile Engineering and in Microsoft IT.