The App Compat Guy

Chris Jackson's Semantic Consonance

September, 2009

  • The App Compat Guy

    Why You Shouldn’t Listen to Me, and Why You Should

    • 6 Comments

    Ah, Karma, you rise up at the least convenient times. (This blog post is not meant to imply a belief in preordained futures, divine intervention, or the existence of the Perfectly Normal Beast.)

    Yesterday, I had somebody ask me not to speak about something at the Springboard Virtual Round Table. I didn’t react particularly well to this particular piece of … erm … guidance, so in retribution Karma decided to pair me up with a completely drained car battery and an emergency service technician with the world’s worst sense of direction. Which of course gave me plenty of time to think about things.

    And I concluded that you shouldn’t listen to me, or, really, anybody. And, at the same time, you should.

    (Perhaps I should have put the fact that you should first, to avoid losing readers.)

    So, what happened?

    I demonstrated Access 2007 and Access 2003 running side by side. What you didn’t see is that I also sequenced (and yes, ran on Windows 7) Access 2.0. Hello 1994. If you ever attend my talks at conferences, you may see me occasionally do something like that – a quick firing up of an app that brings back a wave of nostalgia that sends approximately 5% (max) of the people in the room on a trip down memory lane, and is done quickly enough that the 95% who don’t remember that ancient piece of software aren’t annoyed. Seeing it again positively delighted me, while making me wonder how we possibly ever thought that was good. (Teal with blue shadows? Seriously?)

    But I was told (not asked) flat out that I could not run that. It gives the wrong impression. We are trying to convince people that App-V is not an app compat solution, and if it doesn’t run natively on the OS we don’t want to show it running in App-V, because that applies that App-V is a remediation solution.

    The engineer in me thought that, while I certainly don’t want to mislead people into thinking App-V is an app compat solution of any significant merit, if you try to make things cut and dry, then you’ll be disappointed. Because the reality we’re trying to portray with messaging collides rather inconveniently with the actual reality where App-V does fix the one problem that keeps Access 2.0 from running natively on Windows 7, and you’d have to apply RunAsAdmin, CorrectFilePaths, or loosen ACLs to get it running without App-V. You see, in my world, the theory never gets to win, it’s reality that gets to win, and reality had spoken loud and clear via my perfectly functional and incredibly silly demo.

    But here’s the problem with that thinking: in my world, it’s my job 100% of the time to understand the system top to bottom. I have time to understand subtlety. I have the ability to dive as deep as I want, so long as it helps solve somebody’s problem somewhere. But for the rest of the world, you just want to get done. You don’t have the same luxury of time that I do. And, if my demos were the only information you ever received about App-V because you never had any more time to learn about this one little niche of technology, you’d come out having watched with your own eyes one app not being fixed by it, one app being fixed by it, and you wouldn’t know what the h*ll to think, you’d conclude that we’re all mental, and you’d go off and become a sheep farmer.

    As a result, it’s really important that, if we’re the only message you see, we don’t self-contradict (even though the contradiction exists only because we haven’t gone deep enough to resolve the paradox), and we give you the one high-level message that helps you make the best decision, even if the abstraction we give you is a leaky one. We’d rather err on the side of whatever approximation saves you the most time, money, and heartache if we have to approximate.

    The same is true of tools. I’ve looked at all kinds of output that suggests that something might have gone wrong, only to find that it works perfectly well. Believe me, the people who make these tools know that they’ll get some things wrong – they just want to get the high-level numbers that you depend on to make decisions right just as often as they can.

    I have the same problem when building a hypothesis while debugging an application. I use my imperfect knowledge of a huge system to make what is, hopefully, a pretty good guess about what’s going to happen next, but I’ve concluded and believed stuff really strongly countless times when one small failed assumption along the way led me to the completely wrong conclusion and I wasted a ton of my time.

    So, keep in mind that, while we’re always working really hard to distill this enormously complex and sometimes fiercely non-deterministic system into a set of rules you can use to actually get done with your job before we release Windows 14, that rule can be an oversimplification that isn’t always true. No matter how clever the source, nothing should trump what you see with your own eyes. A good source should always lead you to saved time, but in this world you always have to trust but verify.

    Also, if you ever have somebody tell you something that you don’t initially agree with, you should spend the time right then and there to understand why they believe so strongly in what they’re saying, in a respectful manner. Unless you like hanging out in parking lots waiting for service vehicles.

  • The App Compat Guy

    Springboard Series Virtual Roundtable - Windows 7 Application Compatibility Part 2: Virtualization

    • 1 Comments

    Date:  Thursday, September 24
    Time:  9:00am Pacific Time

    https://ms.istreamplanet.com/springboard


    The reviews on Windows 7 have been really great so far, but you obviously can’t start using it if, after installing it, all of the stuff you need in order to get your work done breaks. Application compatibility is so important, in fact, that we managed to get Mark Russinovich to come and talk about it not once, but twice!

    In our first episode, Mark talked about the overall challenge, the process, and tools to help you get there. We spoke a little bit about remediation as well, specifically in the context of what we’ve been calling the lightweight remediation. Things like shims or policy changes.

    Alas, I was unable to attend this event, because they kind of forgot to invite me. They didn’t forget to script me in, mind you, they just forgot to tell me about it until I already had a customer commitment (which I never back out of). All kinds of formulations on how I could get from Ottawa, ON, Canada to Seattle and back without the customer noticing then ensued, until eventually everyone realized the futility of this discussion. So I recommended several folks who are far smarter than me to join the panel in my stead.

    Apparently all of these people were unavailable for this round, because this time, they actually not only remembered to invite me, but actually chose to.

    This time around, we’ll be discussing the more heavyweight fixes for app compat problems. Specifically, how does virtualization fit into your application compatibility strategies? We’ll be discussing all of the different flavors of virtualization, dispelling myths, showcasing truths, and helping you get the information you need to develop a comprehensive and sensible strategy.

    We hope you’re able to join us live tomorrow!

  • The App Compat Guy

    How to Run Applications Manifested as HighestAvailable With a Logon Script Without Elevation for Members of the Administrators Group

    • 7 Comments

    Updated 17-Sept-2009

    My friend Aaron has been trying to post a comment with his recommendation. However, it never, never, ever shows up because apparently we either don’t buy good software for our blogging system, or else the software has a personal vendetta from him (perhaps it’s angry at him for not posting often enough himself). But his comment is worthwhile, so here it is:

    Rather than use that undocumented (and unsupported) environment variable, why not just change the "regedit" invocation to "REG.EXE IMPORT"? REG.EXE doesn't demand elevation -- it's manifested "asInvoker", and can import .reg files...


    Here’s a trick I used to help out a customer:

    My customer was using a logon script to set some per-user registry keys when the user logged in. This worked fine for their standard users on Windows XP, and it also worked fine for their standard users on Windows 7. However, it added an extra prompt for the few folks who had exceptions to be members of the Administrators group.

    You see, they were using regedit.exe to import a .reg file. And, even though they didn’t need administrator privileges to edit the parts of the registry they wanted to modify, the entire application is manifested as highestAvailable, so it would always prompt for their administrators.

    So I cooked up the following .bat file to achieve the same thing without annoying their administrators:

    set __COMPAT_LAYER=RunAsInvoker
    start regedit.exe

    And they were off to the races.

    Was there another way? Perhaps. But this let them keep their existing scripts and only have to add a single line at the front, so it was the path of least resistance.

  • The App Compat Guy

    FAQ: When is the Application Compatibility List (Currently Focused on Windows Vista) Going to be Updated for Windows 7?

    • 3 Comments

    There is a huge amount of excitement about Windows 7, and people are looking to get moving with app compat immediately so they can start deploying Windows 7 right away! In the enterprise, however, there are a number of risk mitigation strategies that most administrators put into place, which typically includes (among other things) ensuring that the most business critical applications are supported on Windows 7 by the vendor.

    We have tried to simplify the process of finding these support statements by creating a portal site, making this list downloadable, and integrating it into the Application Compatibility Toolkit. People like this so much that, an average of around infinity times a day, I’m asked when it’s going to be updated for Windows 7.

    It is scheduled to be updated for GA (General Availability). That’s October 22, 2009.

    What’s with the delay?

    Well, a couple of reasons.

    First of all, “compatible” and “supported” are two different things. What matters to most people is supported.

    Before most software makers support an application, they test it pretty thoroughly to ensure that there are no significant bugs that could expose them to major risks and/or higher than acceptable support costs. This takes time. Now, we’ve been giving ISVs access to builds for quite some time, and they can use the interim builds to perform software testing and identify any significant issues which will require quite a bit of time to resolve. However, the ISV can’t even begin the thorough testing to ensure that they have a supportable solution on Windows 7 RTM until they actually had access to Windows 7 RTM. So, the same day that many enterprises were able to get that build and wanted this data, ISVs received it and could start their validation for supportability. Being able to instantaneously tell if you can afford to support your software on a given platform is asking rather a lot of any ISV. This gap between RTM and GA provides each ISV a brief window of time to perform thorough testing before customers can reasonably demand to know a support statement.

    We then also leverage this time to reach out to those ISVs and find the support statement. You see, ISVs don’t have to report in to us when they make new software or create new support statements – in fact, they never have to call us at all. We tried changing the nature of this relationship once with the Works With Windows Vista logo program, and it was a colossal failure. So, in addition to an ISV needing time to test and validate something, we also need time to find these results and support statements and consolidate them into the database which you can access.

    So, we both have a lot of work to do in order to get these lists put together, so much so that 3 months is really kind of stretching it. I know of several vendors already who are pushing out their supported dates for Windows 7 into 2010. What do I do when I find that? I debug their apps. It’s much easier to fix and support an app once the hard part – debugging it – is already done. :-)

    Now, compatible is a different story. If you want to be a purist, compatible means it has no bugs on the given platform. Since no bugs on a given platform is, for this purpose, the same as saying no bugs, I can safely say that there is no compatible software for any platform that has ever been made. So, we’re forced to use a different definition – compatible meaning that there are no bugs that *stop me from getting my work done* on a given platform. So, since nobody else knows precisely how you get your work done, the only person who can fairly answer that question is you.

Page 1 of 1 (4 items)