Windows install error 0x80070002 unable to install App

Yesterday I tried to install a Windows App via its built in App Store. Usually this works like a charm. This time the download seemed to succees (judged by the progress bar) but the installation failed with error 0x80070002;

Googling (and Bing’ing) found various issues with kind of the same description, ranging from “download failed” to “broken registry” (including repair guides). Yet none of the proposed solutions worked for me.

Hoping it would just be a temporary failure on the store side, I hit “retry” again and again while I was searching for other solutions (interrupted by a reboot – well you never know, sometimes it just helps). And suddenly a message appeared saying that a Microsoft account was required to install the app. That was strange as I had just switched to a MS account this day – and this message appeared just once! When I wanted to reproduce it it just failed with 0x80070002 again.

So I disconnected my account from MS again, reconnected afterwards and suddenly: The installation succeeded!

To make a long story short

If you experience an error 0x80070002 when installing an App from the store in Windows 8.1: Try to disconnect and reconnect your account from and to a Microsoft account:

  • Win-C (open charms bar)
  • Go down to settings
  • Go down to PC settings
  • Go to Accounts >> your account
  • Disconnect your account
  • Repeat the above to reconnect to your MS account
  • Try to install the App

How to ignore Maven build erros due to JavaDoc with Java 8

Java 8 is a bit more strict in JavaDoc parsing. This can lead to build failures in Maven when building the repo with warnings like:

Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.7:jar (attach-javadocs) on project [projectname]: MavenReportException: Error while creating archive:
Exit code: 1 - [path-to-file]:[linenumber]: warning: no description for @param

Sure, the good solution would be to fix the JavaDocs. But in cases where you just clone a foreign repo, you probably just want to get it run and not start fixing it.

To ignore the erros, just turn off doclint by adding the following <configuration> tag to your pom.xml:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-javadoc-plugin</artifactId>
    <version>2.10.2</version>
    <executions>
        <execution>
            <id>attach-javadocs</id>
            <goals>
                <goal>jar</goal>
            </goals>
            <configuration> <!-- add this to disable checking -->
                <additionalparam>-Xdoclint:none</additionalparam>
            </configuration>
        </execution>
    </executions>
</plugin>

Some more solutions can be found in this StackOverflow thread.

How to write useful error messages

Each programmer has to deal with error mesages in some way. Either we have to check our data (and possibly raise an error/exception) or we are using libraries and have to deal with error messages or exceptions that are raised in these libraries. The purpose of this post is to point out how meaningfull error messages can save you time. Either your own time (by avoiding answering support questions) or your own debugging time.

So how can an error message save or waste time? Imagine the situation where you try to open a file and all you get is an error. What do you do next? I guess you’ll probably check if you’re trying to open the correct path. Maybe you did, then you possibly check if the permissions are okay, if you’re trying to open a directory or a file, etc until you found the problem that is causing the error. Actually this can be quite some wasted time – why? Becasue you’re doing all the stuff that the system already checked. The system decided that one of the condidtions failed and exited. So – shouldn’t the system just TELL the exact reason? And even better: shouldn’t it also just tell you a possible solution? Well – actually I do not blame “the system” but the guy who write the line that threw the error without any further information. Everytime I get an absolutely uninformative error I think “was it really so damn hard to add one more line of code that just mentions WHAT went wrong?!”.

Assume the situation where you try to open a file with the path being configured in an external config.properties file.
I think the quality of an error message can be categorized in one of the three categories:

  1. Reporting: The system just reports that there was an error.
    Example: IO Exception occured.
  2. Informing: Same as 1, just with more information.
    Example:  IO Exception occured while opening file: <filename>, null=false, exists=true, is file=false, is directory=false, readable=false, writable=false
  3. Supporting: same as 2 with additional information of how to solve the problem.
    Example: IO Exception occured while opening file: <filename>, null=false, exists=true, is file=false, is directory=true, readable=false, writable=false; Was the pat set correctly in config.properties?

In the past weeks I have seen very useful error messages in Google’s Android (“… Have you declared this activity in your AndroidManifest.xml?”) or in twitter4j (Displaying a shortURL to an FAQ page explaingin a very common error).
Bad examples are plain NullPointerExceptions when 3 parameters were checked, one of them was null and the according is just followed by a throw new NullPointerException so that you even did not recognize from the message WHICH parameter was null.

Conclusion: Please write robust code and please provide helpful and supportive error messages to the folks using your code!

Drupal shows warnings after migrating to new server

Recently we migrated a Drupal managed website to  a new server. – Everything was fine, just on some pages, some php-warnings showed up that did not show up on the original site.
After some investigation I checked php’s error_reporting setting and realized that the settings of the new new server were more sensitive than the old one.

The solution was pretty simple. As I definately didn’t want to start hacking around in Drupal, I just turned off showing the errors to the user:

Administer > Site configuration > Error reporting
(or in german:) Verwalten > Einstellungen > Error reporting
/admin/settings/error-reporting
Error Reporting: Write errors to the log (instead: Write errors to the log and to the screen).

Pretty easy.