The Woes of Windows Store App Submissions

I recently submitted a Windows 10 / Windows Phone app to the Windows Store named Data Viewer for Dota 2. I’m here to warn the world just how awful the process of submission can be.

Microsoft first created the concept of the Windows Store with the release of Windows 8, Windows RT, and Metro Apps — I mean Windows Store Apps — I mean Universal Windows Apps. Whatever you want to call them, the store quickly became an unregulated messy disaster full of copycat and scam apps. Many, many apps were nothing more than front ends to scamming websites, copies of things like Facebook, or general do-nothing apps with a price tag and description which made it seem like a good purchase.

In order to address this problem, in normal Microsoft fashion, Microsoft decided to wait 3 years and come up with a new process of submitting the app. Every app would be held to “rigorous” standards which would guarantee all apps were clearly named and labeled to prevent confusion and scams. There are several guideline posts out there from Microsoft, and you can rest assured that all of them are vague and barely helpful.

So how did this affect my app? Originally, the app was named “Dota Database” after its sister site and had the same icon as appears on that site. The first submission resulted in this super helpful message: The app name and icon do not accurately represent the features.

Uh…OK? I’m not sure it could even get more vague than that. So as a guess, I figured maybe they were complaining about the word “Database” since the app isn’t literally a database but instead is a viewer into a database. I renamed the app to “Dota Data Viewer” and tried another submission. That was apparently a mistake because guess what message came back after failing? The app name and icon do not accurately represent the features.

At this point, I tried emailing the support address suggested by the submission report. I decided to get to the point and ask for more information about why the app was failing submission and asked about what specifically I should change. The response was kind of helpful: Hello Developer, you will need to make your app distinguished from other apps in the store with a unique name such as “Skype for Windows” or “User Guide for Microsoft Word.”

Then I changed the app name to “Data Viewer for Dota 2” which is specific and distinguished from any other apps. In addition, I changed the app icon to the one you now see in the Windows Store which clearly states the app is a data viewer and not an actual game. Surely success will come after this! Wrong. The app was rejected with the exact same copy and paste message: The app name and icon do not accurately represent the features.

Now I’m upset. I email the support desk again and receive the exact same response: Hello Developer, you will need to make your app distinguished from other apps in the store with a unique name such as “Skype for Windows” or “User Guide for Microsoft Word.” Hey Microsoft, that isn’t helpful!… Read more

How to Rename Your App in Windows Store

This applies to the Windows Store and Windows Dev Center as of March 1, 2016 and assumes you are uploading a Windows 10 Universal Platform App.

The Windows Dev Center started out badly back in Windows 8, and it hasn’t improved too much since then. I have to be honest when I describe it, because it’s sometimes nothing short of painful. One of those pain points is the UI and poor documentation regarding the concept of the “App Name”.

In order to submit to the store, you need to create “App Packages”. Each package has metadata associated with it that you define in your “App Manifest” (Package.appxmanifest in your project). This manifest is where the app’s name must match exactly with whatever names you have reserved in your Dev Center for that app.

Creating the App Name

When you create an app submission, you have to pick an “App Name”. This is the name that is displayed across your Dev Center Dashboard and the Windows Store. This name also has to match exactly in your app’s created manifest. That secret bit of information isn’t documented well and seems to only appear in tiny text when you are creating an app package through Visual Studio.

Changing the App Name

If your app has not yet been submitted to the store, then you can change the name by reserving a new one in the Dev Center, changing the manifest to that name, creating an app package, and then uploading that package. Don’t try to rename directly from the Dev Center (that’s where I kept looking). Instead, you have to reserve the name and change it in the manifest to match. There is no way to rename an app from the Dev Center!

If your app has already been submitted, you will need to reserve the new name, create a new update submission, change the manifest accordingly, create the package, and upload it to the new submission. If the submission is approved, the new name should show up in the store. I think there’s a delay in the new name showing up (16-24 hours).… Read more

Don’t Bother with WordPress on Windows/IIS

I’ve written in the past about how to setup WordPress on an Azure App Service and about connecting that WordPress instance to MySQL in an Azure VM. While these articles do contain some useful information about setting up WordPress and its interaction with Azure services, I’ve come to the conclusion that WordPress simply doesn’t function as nicely when hosted on IIS.

For about 1-2 years, I hosted several WordPress blogs in Azure App Services which connected to MySQL instances on an Azure VM (exactly as described in my articles above). I struggled endlessly with strange plugin issues and constant timeouts when attempting to connect to MySQL. For example:

  • Certain caching plugins complained that certain settings could not be applied due to IIS
  • WordPress.com and JetPack integration sometimes didn’t detect plugin and WordPress updates properly
  • When attempting to update plugins from WordPress.com or JetPack, it would simply fail with no error messages
  • Random and intermittent “Database connection” failures would occur even though I could guarantee the username/password/connection information was correct (especially since connections would succeed and then fail 30 seconds later)

I tried debugging these issues for months including monitoring incoming traffic on the VM to diagnose MySQL connection timeouts but was ultimately unsuccessful in determining a solution. Actually, that’s not entirely accurate. I did come up with a solution. I stopped using WordPress on Azure App Services.

So what to use then? I decided on using my existing VM to host the classic LAMP stack. It was already running Linux and MySQL, so I just had to add Apache and PHP. Hosting WordPress under this environment and technology stack has proven to be much more reliable and friendly with plugins.… Read more

Security, insurance, encryption, and your expensive belongings

People these days tend to buy a lot of gadgets and electronics. Between our smart phones, televisions, cars, computers, tablets, and e-readers, the expense can add up. Many times, we overlook the importance of cataloging everything that we own for various reasons.

First, it keeps us honest. Do we really need another iPhone if we just bought one a year ago? Probably not. Your stash in our service will remind you of when you purchased something (provided you are honest).

Second, theft and loss are real things. We like to pretend that bad things will never happen to our expensive stuff, but it can and probably will. A phone that costs $600 is not something to take lightly, especially if your daily activities require a lot of movement. Documenting the condition of your belongings, when you purchased them, the purchase receipts, and any other details about them can help with police reports and your home or rental insurance.

Third, it’s quite convenient and safe to store your information in online stash. You can pull up your stash on any device that you own immediately. You don’t have to go searching through paper receipts, pulling out the TV to find out what model you have, or go digging through your file cabinets. Everything in your stash is ready for you and secured with multiple levels of security.

Get started for free at https://www.saferstash.com.… Read more

Change excerpt length in WordPress

Some themes have hard coded (built in without options) lengths for excerpts on the home page, search results, and archive pages. Without the ability to change this easily, you’re left with a theme that may not suit your needs. The two choices that I find to be the easiest are to edit your functions.php file to include a filter or to install a plugin to handle this for you. Either way is fine, though you may use one over the other based on your experience with WordPress internals.

Plugin

This is by far the easiest method, though not the most customizable. You’re bound by whatever the plugin allows you to change, and there’s no guarantee that the plugin will work with whatever version of WordPress is installed on your host.

  1. Search for the Advanced Excerpt plugin.
  2. Go to its settings page and choose your options.
  3. The first setting is the excerpt length (based on words or characters).
  4. The rest allows you to change what is being filtered, what text you want to show when the user can read more, and other options.

Functions.php

If you’re more comfortable with coding, changing WordPress internals, and have general access to the source code of your host’s WordPress installation, then this is the best option for you.

  1. Using a FTP client (I use FileZilla), connect to your host’s WordPress installation.
  2. Download and edit the functions.php file.
  3. Add the following to the file, where “20” is the length of the excerpt. Change that to whatever you want to use.
  4. Save and upload the file back to your WordPress installation.

One thing to keep in mind is that the above advice is editing the theme directly and is not the best approach. If you update the theme from the author, all changes that you made will be lost. Instead, you should look into creating a child theme and performing the above steps on that.… Read more

Setup a blank WordPress site in Azure

One of the reasons WordPress is hugely popular is because it’s super easy to setup and has a large developer base around it which is responsible for creating many useful plugins. If you’re interested in setting up WordPress in Azure, look no further! Make sure you understand the pricing structure of Azure before you go this route. Often, the cost isn’t really worth the return unless you have 5+ blogs that you want to setup on Azure. You can stick to the Free or Shared ($10/mo) tiers, but the performance can suffer quite a bit depending on your site’s popularity and you may not get certain features like custom domains and SSL support.

Azure can be a little confusing for newcomers who don’t realize that some functionality is split across two different portal/management sites. One of these (the “new” portal) is in Preview status while the other (the “old” portal) is the status quo which should be used for most operations. You can follow either section below to achieve the same result, though one may be simpler than the other depending on your use cases.

“Old” Azure Portal

  1. Login to the “old” Azure Portal with your Microsoft Account.
  2. In the lower left, click New > Computer > Web App > Quick Create.
  3. Enter the URL name that you want. If you end up selecting the Shared pricing tier or above (Basic, Standard, Premium) you will have the option of setting up a custom domain. See my guide to doing this with Namecheap. Other domain name services have similar features.
  4. Choose an App Service Plan to under which the web app will be setup. This is important because it could determine how much you pay since each App Service Plan has an associated pricing tier. App Service Plans are basically collections of apps and services that you own in Azure. These will share the same resources setup by the plan and under the same pricing tiers. Read more about App Service Plans.
  5. In the lower right, click Create Web App.CreateBlankWordpress1
  6. Under the Web Apps section of the portal, you should see your new web app being setup or running.
  7. Click the web app that you just created.
  8. Click the “Download publish profile” link under the “Publish your app” section.CreateBlankWordpress2
  9. Download and install your favorite FTP software (I use FileZilla).
  10. Download the latest WordPress version.
  11. Open the publish profile file and pull out the “publishUrl”, “userName”, and “userPWD” under the “publishMethod=FTP” section.
  12. Use the above credentials with your FTP software to connect to the web app’s FTP folders.
  13. Extract the downloaded WordPress zip and upload them to the /site/wwwroot/ folder.CreateBlankWordpress3

“New” Azure Portal

  1. Login to the “new” Azure Portal with your Microsoft Account.
  2. In the upper left, click New > Web + Mobile > Web App.
  3. Enter the URL name that you want. If you end up selecting the Shared pricing tier or above (Basic, Standard, Premium) you will have the option of setting up a custom domain. See my guide to doing this with Namecheap.
Read more

Custom authorization with ELMAH and ASP.NET Identity Framework

If you’re using any of the most recent ASP.NET MVC 5 project templates with authentication and authorization built in, then you’re probably using the ASP.NET Identity Framework. With any ASP.NET project, it’s smart to add references to the ELMAH library just in case any unhandled exceptions occur. You can use both of these libraries together to restrict access to the remote ELMAH page with custom authorization.

First, install the Elmah.MVC package from NuGet. This should download the correct libraries and add the necessary lines to your web.config.

Substitute the “your_user_name” entry with your own username that you’ve setup in the ASP.NET Identity Framework backend. For example, the AspNetUsers table in SQL Server contains your usernames. It appears that ELMAH does get the authentication information from the current thread principal, which the ASP.NET Identity Framework will establish on your behalf upon login.… Read more

The required anti-forgery cookie “__RequestVerificationToken” is not present.

In your ASP.NET MVC adventures, you may come across the following error when loading a view.

The required anti-forgery cookie “__RequestVerificationToken” is not present.

After searching Google for awhile, you might become desperate with the many different solutions presented. Normally, the solution to this issue is related to the ValidateAntiForgeryToken attribute on actions. When accessing a GET action, you don’t need to use the anti-forgery token.

However, this is not the only solution. In my case, my web.config had this entry:

Checking the project settings in Visual Studio revealed that my project was not set to use SSL which caused a conflict. Either comment out the above line or set the project to always use SSL.

See more solutions to this issue on this StackOverflow answer..… Read more

Redirect your azurewebsites.net URL to your custom domain URL

If you’ve attached a custom domain to your Azure Websites setup, you probably want people and search engine crawlers to use the custom domain URL instead of the free azurewebsites.net URL. You can setup your application’s web.config to include the following.

Add the following to the system.webServer section of your web.config, but make sure you replace the “yourdomain” text with your own domain information.

Read more

Connect WordPress to Custom MySQL with Azure VM

The title is a bit of a mouthful, but I promise it’s not as crazy as it seems. If you’re anything like me, you became interested in cloud computing and stumbled upon Microsoft’s Azure platform. There are plenty of wizards built directly in to the Azure Dashboard which allow you to automatically create and setup websites, virtual machines, and databases without ever needing to perform extra configuration. However, there are some cases where you might want to setup a custom database for a specific purpose. WordPress is one great example which may require you to setup your own MySQL databases in a virtual machine. In fact, this guide assumes that you already have a WordPress Azure Website setup.… Read more