Solution: Expression Web re-installs itself each time it is launched

This is a frustrating problem. You launch Expression Web and the splash screen pops up, like normal. But all of the sudden you see …

image

The time it takes for the re-install or the re-configuration to complete varies but you may sit there for 20 seconds on up to a few minutes waiting. Eventually Expression Web will launch. Now if a portion of the Expression Web installation becomes damaged then this behavior is normal. Each time you launch a Windows Installer-based application a quick check against a cached MSI file is made. That cached file contains information about all of the files and registry keys that this particular application installed. Windows Installer checks that info against the files and registry keys on your computer when the program is launched and if any discrepancy is found then a reinstall is called for and you see a dialog box like the one above. This allows the program to restore the files and folders to their original or last-patched versions. This feature of the Windows Installer is called resiliency. It’s also referred to as the self-healing or self-repair feature. Once the repair is done, it’s done. The application should function normally and you shouldn’t see the self-repair happen again.

So what happens if you see it each time you shut the program down and launch it? No, that’s not supposed to happen. That’s a problem. The good news is there is a way to fix this problem.

Important Note: Although this is similar to the issue where Expression Web tries to repair itself each time you launch Outlook or receive email in Outlook, keep in mind this problem happens when you launch Expression Web itself.

Cause

This issue usually happens because of permissions problems on one or more of the registry keys. What we don’t know yet, at the time of this writing, is what exactly is changing the permissions on those keys. The hive commonly affected is HKEY_CLASSES_ROOT. Although the root level hive is unaffected, sub-keys appear to be lacking necessary permissions for the Administrators and System groups.

How to Resolve

So here’s how you resolve this problem. I can’t take the credit for finding the fix – that goes to Aaron Stebner, a long-time Microsoft Employee.

1. Download the SubInACL tool from here and install it: https://www.microsoft.com/downloads/details.aspx?FamilyId=E8BA3E56-D8FE-4A91-93CF-ED6985E3927B&displaylang=en

By default, it will install to c:\Program Files\Windows Resource Kits\Tools

2. If you are running Windows Vista, click on the Start menu, choose All Programs, then Accessories, then right-click on the item named Command Prompt and choose Run as administrator

3. If you are running an OS other than Windows Vista, go to the Start menu, choose Run, type the following:

cmd

and click OK

4. In the command line, type the following:

notepad reset.cmd

hit ENTER and click yes to create a new file named “reset.cmd”

5. Copy and paste the following contents into reset.cmd (or download it from this location on my file server and rename it from reset.cmd.txt to reset.cmd):

cd /d "%programfiles%\Windows Resource Kits\Tools"

subinacl /subkeyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f /grant=restricted=r /grant=YOURUSERNAME=f /setowner=administrators > %temp%\subinacl_output.txt

subinacl /keyreg HKEY_CURRENT_USER /grant=administrators=f /grant=system=f /grant=restricted=r /grant=YOURUSERNAME=f /setowner=administrators >> %temp%\subinacl_output.txt

subinacl /subkeyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f /grant=users=r /grant=everyone=r /grant=restricted=r /setowner=administrators >> %temp%\subinacl_output.txt

subinacl /keyreg HKEY_LOCAL_MACHINE /grant=administrators=f /grant=system=f /grant=users=r /grant=everyone=r /grant=restricted=r /setowner=administrators >> %temp%\subinacl_output.txt

subinacl /subkeyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f /grant=users=r /setowner=administrators >> %temp%\subinacl_output.txt

subinacl /keyreg HKEY_CLASSES_ROOT /grant=administrators=f /grant=system=f /grant=users=r /setowner=administrators >> %temp%\subinacl_output.txt

subinacl /subdirectories %programfiles%\ /grant=administrators=f /grant=system=f /grant=users=e >> %temp%\subinacl_output.txt

subinacl /subdirectories %windir%\ /grant=administrators=f /grant=system=f /grant=users=e >> %temp%\subinacl_output.txt

6. Change the values named YOURUSERNAME to be the Windows user account that you are logged in with.

7. Save and close reset.cmd. 

8. Type reset.cmd and press enter to run the SubInACL tool.  This tool will take several minutes to run, and it requires that the user account you are using has administrator privileges on the system.  This is why it is necessary to run it from an elevated cmd prompt on Windows Vista.  Step 2 above can be used to start an elevated cmd prompt on Windows Vista.

After reset.cmd completes, launch Expression Web. It may configure itself once more. Close it down and launch it once again. Now it should not need to configure itself.