Intellipad has been live for about 3 weeks now and we're really glad to see the excitement around it. Lots of folks have been following examples on this blog and others that describe the many ways to customize Intellipad. We've already received a great deal of feedback and we love it so keep it coming.

Here are a few tips for anyone customizing Intellipad after installing it with the Oslo SDK:

Intellipad Configuration Files

At startup, Intellipad loads extensions and customizations based on a configuration file that specifies where to look for extensions and how they should be loaded. By default, it loads ipad.xaml but you can load other ones using the /config option. Creating custom configuration files is a great way to launch Intellipad with different customizations or to load extensions from a different location. On my laptop I have an ipad.xaml that looks like this:


<ipad:IntellipadCore
  xmlns:ipad='clr-namespace:Microsoft.Intellipad;assembly=Microsoft.Intellipad.Core'
  xmlns:mi='clr-namespace:Microsoft.Intellipad;assembly=Microsoft.Intellipad.Core'
  xmlns:cm='clr-namespace:System.ComponentModel.Activation;assembly=Activation'
  xmlns:s='clr-namespace:System;assembly=mscorlib'
  xmlns:scg='clr-namespace:System.Collections.Generic;assembly=mscorlib'
  xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'>
  <ipad:IntellipadCore.CatalogSources>
    <cm:FileCatalogSource RelativeCacheFilePath='ipad\root.catalog'>
      <cm:FileCatalogSource.Files>
        <s:String>Microsoft.Intellipad.Core.dll</s:String>
        <s:String>Microsoft.Intellipad.Framework.dll</s:String>
        <s:String>Microsoft.VisualStudio.Platform.Editor.dll</s:String>
      </cm:FileCatalogSource.Files>
    </cm:FileCatalogSource>
    <mi:IntellipadCatalogSource SubDirectoriesOnly='true' DirectoryPath='Components' RelativeCacheFilePath='ipad\components.catalog'/>
    <mi:IntellipadCatalogSource SubDirectoriesOnly='true' DirectoryPath='Samples' RelativeCacheFilePath='ipad\samples.catalog' />
  </ipad:IntellipadCore.CatalogSources>
  <ipad:IntellipadCore.SettingsSources>
    <mi:IntellipadCatalogSource DirectoryPath='C:\Users\hsomu\AppData\Local\intellipad\Settings' RelativeCacheFilePath='ipad\settings.catalog'/>
    <mi:IntellipadCatalogSource DirectoryPath='C:\Users\hsomu\AppData\Local\intellipad\Settings\VisualStudio' RelativeCacheFilePath='ipad\settings-visualstudio.catalog'/>
  </ipad:IntellipadCore.SettingsSources>
</ipad:IntellipadCore>

I made a copy of the Intellipad settings folder at " C:\Users\hsomu\AppData\Local\intellipad\Settings" and pointed my xaml file there instead of the default location. I can now customize the files in that directory and launch Intellipad using a shortcut " ipad.exe /config: C:\Users\hsomu\AppData\Local\intellipad\ipad.xaml". This allows me to customize Intellipad to my heart's content and not worry about breaking anything.

UAC Virtualization Compatibility

The PDC build of Intellipad doesn't contain an application manifest so users can run into compatibility issues with UAC enabled. The Oslo SDK installs Intellipad to the 32-bit program files folder under " Microsoft Oslo SDK 1.0\Bin\Intellipad". Trying to customize files in that folder can result in files seeming to appear and disappear depending on how you're looking for them. As an example open Intellipad, create a text file and save it to %ProgramFiles%\test.txt. Then try finding that file in Windows Explorer or via the command prompt. (Hint: it's not under " %ProgramFiles%\test.txt". Try " %LOCALAPPDATA%\VirtualStore\Program Files\test.txt"). Virtualization is a UAC compatibility feature to support legacy applications that need to write these locations. You can learn more about UAC virtualization here.

Note

  • This only occurs on versions of Windows with UAC (Windows Vista, Windows Server 2008 and Windows 7)
  • This only occurs if the user running Intellipad is an administrator otherwise the user will simply be denied access.
  • This does not occur if Intellipad is running as a 64-bit process (this is the default on 64-bit Windows).
  • This behavior will be more consistent in a future build of Intellipad. We will have a better story for customizing Intellipad and non-elevated processes will simply be denied write permissions to administrator writable locations.

Intellipad Startup Issues

We've seen incidents where users run into problems starting Intellipad because of the UAC virtualization issues above. If you made changes to your Intellipad files and are trying to undo them, make sure to check under "" %LOCALAPPDATA%\VirtualStore" to make sure there are no files in there that are getting picked up. The fastest way to get there is to use the "Compatibility Files" button in Windows Explorer (This button only shows up if there are files in VirtualStore). If you have files in the VirtualStore, Intellipad may pick them up when it's loading extensions and settings. Uninstalling the Oslo SDK does not clean up files in the virtual store.