...ShellExecuteEx might not actually end-up running Google Earth.
It should, if you run the file (not the exe) and there is a file association for the extension. My applications use it and it works.
I tried to add that KMZ file to Basecamp with no success.
It's easy to override the file association.
Yes, it is, but if the end user messes with a KML/KMZ file association that renders Google Earth inoperative that is the responsibility of the end user, not the developer.
But, if you call GE (the exe) by passing input parameters or some such, as I suspect is the case here, you are the mercy of Google; one change in the way they handle input parameters and the calling app bombs.
That doesn't appear to be the case here because there would be an error message from Google Earth (not from Basecamp)....
...It's mostly moot anyway. As long as they get it to work.
Yes, but the error message does not go to the user, that is not how ShellExecuteEx works with robust apps. If BC is using the function Windows will first return a code to the calling app, not to the user. The calling app (BC in this case) will then interpret the code and, if there's an error, it (BC) will show its own error dialog ("not installed") to the user.