<commit_before>﻿<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product UpgradeCode="c70af17c-8b9e-47a1-a099-b65aee3dc8b4" Manufacturer="SIL International"
           Id="*" Name="Keyman Desktop $(var.RELEASE)" Version="$(var.VERSION)" Language="1033">
    <Package Keywords="Keyman,Keyman Desktop,Keyboard,Engine"
             Description="Keyman Desktop $(var.RELEASE)" Comments="Contact:  Your local administrator" Compressed="yes"
             Manufacturer="SIL International" InstallerVersion="400" Platform="x86" Languages="1033" SummaryCodepage="1252" />

    <!-- ALLOW Upgrade from 7.0 Light -->
    <Upgrade Id="5D7A2C7D-4CF3-4425-A1B1-411533CA006F">
      <UpgradeVersion OnlyDetect="no" Minimum="172.16.17.32" IncludeMinimum="yes"
                      Maximum="8.0.0.0" IncludeMaximum="no" MigrateFeatures="yes" Property="OLDERFOUNDL70" />
    </Upgrade>

    <!-- ALLOW Upgrade from 7.0 Pro -->
    <Upgrade Id="76CACC8E-7024-40ba-BA60-4E2F9FF95C2B">
      <UpgradeVersion OnlyDetect="no" Minimum="172.16.17.32" IncludeMinimum="yes"
                      Maximum="8.0.0.0" IncludeMaximum="no" MigrateFeatures="yes" Property="OLDERFOUND70" />
    </Upgrade>

    <!-- PREVENT Upgrade from Corporate -->
    <Upgrade Id="63299AFB-F396-43bb-86F2-B8EB0C167E87">
      <UpgradeVersion OnlyDetect="yes" Minimum="172.16.17.32" Property="HIGHERFOUND" />
    </Upgrade>

    <!-- ALLOW Upgrade from 8.0 -->
    <Upgrade Id="E756C3BC-A261-427f-91BE-37955544A126">
      <UpgradeVersion OnlyDetect="no" Minimum="8.0.300.0" IncludeMinimum="yes"
                      Maximum="9.0.0.0" IncludeMaximum="no" MigrateFeatures="yes" Property="OLDERFOUND80" />
    </Upgrade>

    <!-- ALLOW Upgrade from 9.0 -->
    <Upgrade Id="593EA657-7DF2-4799-B90E-B9E95A8E66D3">
      <UpgradeVersion OnlyDetect="no" Minimum="9.0.454.0" IncludeMinimum="yes"
                      Maximum="10.0.0.0" IncludeMaximum="no" MigrateFeatures="yes" Property="VERSION9FOUND" />
    </Upgrade>

    <!-- ALLOW Upgrade from 10.0 -->
    <Upgrade Id="1211D5B5-AAF5-4AE5-8D3D-67E3C19E3C13">
      <UpgradeVersion OnlyDetect="no" Minimum="10.0.0.0" IncludeMinimum="yes"
                      Maximum="172.16.58.3" IncludeMaximum="no" MigrateFeatures="yes" Property="VERSION10FOUND" />
    </Upgrade>

    <!-- PREVENT or ALLOW Upgrade from 11.0 or later versions -->
    <Upgrade Id="c70af17c-8b9e-47a1-a099-b65aee3dc8b4">
      <UpgradeVersion OnlyDetect="no" Minimum="172.16.58.3" IncludeMinimum="yes"
                      Maximum="$(var.VERSION)" IncludeMaximum="no" MigrateFeatures="yes" Property="VERSION11FOUND" />
      <UpgradeVersion OnlyDetect="yes" Minimum="$(var.VERSION)" IncludeMinimum="yes"
                      Maximum="$(var.VERSION)" IncludeMaximum="yes" Property="CURRENTVERSIONFOUND" />
      <UpgradeVersion OnlyDetect="yes" Minimum="$(var.VERSION)" IncludeMinimum="no" Property="NEWERFOUND" />
    </Upgrade>

    <Property Id='OLDINSTALLDIR'>
      <RegistrySearch Id='oldinstalldir_search' Key='Software\Keyman\Keyman Desktop' Root='HKLM' Name='root path' Type='raw' />
    </Property>

    <Property Id='OnlineProductID' Value='30' />

    <Directory Id="TARGETDIR" Name="SourceDir" DiskId="1">

      <Merge Id="keymanengine" Language='1033' SourceFile='..\..\engine\inst\keymanengine.msm' />

      <Directory Id="ProgramFilesFolder" Name=".">
        <Directory Id="KEYMANROOT" Name="Keyman">
          <Directory Id="KEYMAN" Name="Keyman Desktop">
            <Directory Id="INSTALLDIR" Name="." FileSource="..\..\..\bin\desktop\">

              <Component>
                <File Name="kmshell.exe" KeyPath="yes">
                  <Shortcut Id="desktopKeyman" Advertise="yes" Directory="DesktopFolder" Name="Keyman Desktop" WorkingDirectory='INSTALLDIR' Icon="appicon.ico" IconIndex="0" />
                  <Shortcut Id="startmenuKeyman" Advertise="yes" Directory="ProgramMenuDir" Name="Keyman Desktop" WorkingDirectory='INSTALLDIR' Icon="appicon.ico" IconIndex="0" />
                  <Shortcut Id="startmenuKeymanConfiguration" Advertise="yes" Directory="ProgramMenuDir" Arguments="-c" Name="Keyman Configuration" WorkingDirectory='INSTALLDIR' Icon="KMSHELL.ico" IconIndex="0" />
                </File>

                <RegistryValue Root="HKCR" Key=".kmp" Type="string" Value="Keyman.File.Package" />
                <RegistryValue Root="HKCR" Key=".kmx" Type="string" Value="Keyman.File.Keyboard" />
                <RegistryValue Root="HKCR" Key=".kvk" Type="string" Value="Keyman.File.OnScreenKeyboard" />

                <RegistryValue Root="HKCR" Key="Keyman.File.Package" Type="string" Value="Keyman Package File" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Package\Shell" Type="string" Value="install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Package\Shell\install" Type="string" Value="&amp;Install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Package\Shell\install\Command" Type="string" Value='"[#kmshell.exe]" -i "%1"' />

                <RegistryValue Root="HKCR" Key="Keyman.File.Keyboard" Type="string" Value="Keyman Keyboard File" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Keyboard\Shell" Type="string" Value="install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Keyboard\Shell\install" Type="string" Value="&amp;Install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Keyboard\Shell\install\Command" Type="string" Value='"[#kmshell.exe]" -i "%1"' />

                <RegistryValue Root="HKCR" Key="Keyman.File.OnScreenKeyboard" Type="string" Value="Keyman On Screen Keyboard File" />
                <RegistryValue Root="HKCR" Key="Keyman.File.OnScreenKeyboard\Shell" Type="string" Value="install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.OnScreenKeyboard\Shell\install" Type="string" Value="&amp;Install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.OnScreenKeyboard\Shell\install\Command" Type="string" Value='"[#kmshell.exe]" -i "%1"' />

                <RegistryValue Root="HKCR" Key="keyman" Type="string" Value="URL:Keyman Protocol" />
                <RegistryValue Root="HKCR" Key="keyman" Name="URL Protocol" Type="string" Value="" />
                <RegistryValue Root="HKCR" Key="keyman\DefaultIcon" Type="string" Value="" />
                <RegistryValue Root="HKCR" Key="Keyman\shell\open" Name="FriendlyAppName" Type="string" Value="Keyman Configuration" />
                <RegistryValue Root="HKCR" Key="keyman\shell\open\command" Type="string" Value='"[#kmshell.exe]" -i "%1"' />

                <RemoveFile Id="CachedInstallDirFiles" Property="CachedInstallDir" On="uninstall" Name="*" />
                <RemoveFolder Id="CachedInstallDir" Property="CachedInstallDir" On="uninstall" />
                <RemoveFolder Id="CachedInstallDirParent" Property="CachedInstallDirParent" On="uninstall" />
              </Component>

              <Component>
                <File Name="desktop_resources.dll" Source="..\..\desktop\inst\desktop_resources.dll" KeyPath="yes" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Package\DefaultIcon" Type="string" Value="[#desktop_resources.dll],0" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Keyboard\DefaultIcon" Type="string" Value="[#desktop_resources.dll],1" />
                <RegistryValue Root="HKCR" Key="Keyman.File.OnScreenKeyboard\DefaultIcon" Type="string" Value="[#desktop_resources.dll],2" />
              </Component>

              <Component>
                <File Name="menu.txt" Source="..\..\desktop\branding\menu.txt" KeyPath="yes" />
              </Component>

              <Component>
                <File Name="messages.txt" Source="..\..\desktop\branding\messages.txt" KeyPath="yes" />
              </Component>

              <Component>
                <File Name="menutitle.png" Source="..\..\desktop\branding\menutitle.png" KeyPath="yes" />
              </Component>

              <Component>
                <File Id="trayicon.ico" Name="trayicon.ico" Source="..\..\desktop\branding\trayicon.ico" KeyPath="yes" />
              </Component>

              <Component>
                <File Id="appicon.ico" Name="appicon.ico" Source="..\..\global\res\90\desktop\appicon.ico" KeyPath="yes" />
              </Component>

              <Component>
                <File Id="cfgicon.ico" Name="cfgicon.ico" Source="..\..\global\res\90\desktop\cfgicon.ico" KeyPath="yes" />
              </Component>

              <Component>
                <File Id="KeymanDesktop.chm" Name="KeymanDesktop.chm" KeyPath="yes" />
              </Component>

              <Component>
                <File Name="unicodedata.mdb" Source="..\..\global\inst\data\unicodedata.mdb" />
              </Component>

              <Component>
                <File Id="kmbrowserhost.exe" Name="kmbrowserhost.exe" KeyPath="yes" />
              </Component>

              <Component>
                <File Id="kmconfig.exe" Name="kmconfig.exe" KeyPath="yes" />
              </Component>

              <Component Id="Reg_RootPath" Guid="*">
                <RegistryValue KeyPath="yes" Root="HKLM" Key="SOFTWARE\Keyman\Keyman Desktop" Name="root path" Type="string" Value="[INSTALLDIR]" />
                <RegistryValue Root="HKLM" Key="SOFTWARE\Keyman\Keyman Desktop" Name="version" Type="string" Value="$(var.VERSION)" />
                <RegistryValue Root="HKLM" Key="SOFTWARE\Keyman\Keyman Desktop" Name="release" Type="string" Value="$(var.RELEASE)" />
                <RegistryValue Root="HKLM" Key="SOFTWARE\Keyman\Keyman Desktop" Name="charmap source data" Type="string" Value="[INSTALLDIR]" />
                <RegistryKey ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes" Root="HKLM" Key="Software\Keyman\Keyman Desktop" />
              </Component>

              <Component Id="removeCU" Guid="*">
                <RegistryValue KeyPath="yes" Root="HKCU" Key="Software\Keyman\Keyman Desktop" Name="Install" Type="string" Value="1" />
                <RegistryKey ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes" Root="HKCU" Key="Software\Keyman\Keyman Desktop" />
                <RemoveFolder Id="ProgramMenuDir" Directory="ProgramMenuDir" On="uninstall" />

                <RemoveFile Id="Version70ShortcutKeyman"   Name="Keyman Desktop Light 7.0.lnk"  Directory="ProgramMenuDirLight70" On="both" />
                <RemoveFile Id="Version71ShortcutKeyman"   Name="Keyman Desktop Light 7.1.lnk"  Directory="ProgramMenuDirLight71" On="both" />
                <RemoveFile Id="Version70ShortcutKeymanD"  Name="Keyman Desktop Light 7.0.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version71ShortcutKeymanD"  Name="Keyman Desktop Light 7.1.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version70ShortcutConfig"   Name="Keyman Configuration.lnk"  Directory="ProgramMenuDirLight70" On="both" />
                <RemoveFile Id="Version71ShortcutConfig"   Name="Keyman Configuration.lnk"  Directory="ProgramMenuDirLight71" On="both" />

                <RemoveFile Id="Version70ShortcutKeymanP"  Name="Keyman Desktop Professional 7.0.lnk"  Directory="ProgramMenuDirPro70" On="both" />
                <RemoveFile Id="Version71ShortcutKeymanP"  Name="Keyman Desktop Professional 7.1.lnk"  Directory="ProgramMenuDirPro71" On="both" />
                <RemoveFile Id="Version70ShortcutKeymanDP" Name="Keyman Desktop Professional 7.0.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version71ShortcutKeymanDP" Name="Keyman Desktop Professional 7.1.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version70ShortcutConfigP"  Name="Keyman Configuration.lnk"  Directory="ProgramMenuDirPro70" On="both" />
                <RemoveFile Id="Version71ShortcutConfigP"  Name="Keyman Configuration.lnk"  Directory="ProgramMenuDirPro71" On="both" />

                <RemoveFolder Id="Version70ShortcutsL" Directory="ProgramMenuDirLight70" On="both" />
                <RemoveFolder Id="Version70ShortcutsP" Directory="ProgramMenuDirPro70" On="both" />
                <RemoveFolder Id="Version71ShortcutsL" Directory="ProgramMenuDirLight71" On="both" />
                <RemoveFolder Id="Version71ShortcutsP" Directory="ProgramMenuDirPro71" On="both" />

                <RemoveFile Id="Version80ShortcutKeyman"   Name="Keyman Desktop 8.0.lnk"  Directory="ProgramMenuDir80" On="both" />
                <RemoveFile Id="Version80ShortcutKeymanD"  Name="Keyman Desktop 8.0.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version80ShortcutConfig"   Name="Keyman Configuration.lnk"  Directory="ProgramMenuDir80" On="both" />

                <RemoveFolder Id="Version80Shortcuts" Directory="ProgramMenuDir80" On="both" />

                <RemoveFile Id="Version90ShortcutKeyman"   Name="Keyman Desktop 9.0.lnk"  Directory="ProgramMenuDir90" On="both" />
                <RemoveFile Id="Version90ShortcutKeymanD"  Name="Keyman Desktop 9.0.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version90ShortcutConfig"   Name="Keyman Configuration.lnk"  Directory="ProgramMenuDir90" On="both" />

                <RemoveFolder Id="Version90Shortcuts" Directory="ProgramMenuDir90" On="both" />
              </Component>

              <Directory Id="dir_locale" Name="locale" />

            </Directory>
          </Directory>
        </Directory>
      </Directory>

      <Directory Id="ProgramMenuFolder" Name="Programs">
        <Directory Id="ProgramMenuDir" Name="Keyman Desktop" />
        <Directory Id="ProgramMenuDirLight70" Name="Tavultesoft Keyman Desktop Light 7.0" />
        <Directory Id="ProgramMenuDirLight71" Name="Tavultesoft Keyman Desktop Light 7.1" />
        <Directory Id="ProgramMenuDirPro70" Name="Tavultesoft Keyman Desktop Professional 7.0" />
        <Directory Id="ProgramMenuDirPro71" Name="Tavultesoft Keyman Desktop Professional 7.1" />
        <Directory Id="ProgramMenuDir80" Name="Tavultesoft Keyman Desktop 8.0" />
        <Directory Id="ProgramMenuDir90" Name="Tavultesoft Keyman Desktop 9.0" />
      </Directory>

      <Directory Id="DesktopFolder" Name="Desktop" />

    </Directory>

    <Feature Id="AlwaysInstall" Title="Keyman Desktop Application Files" Description="Required program files for Keyman Desktop"
             Level="1" ConfigurableDirectory="INSTALLDIR" Absent="disallow" AllowAdvertise="no">
      <ComponentRef Id="kmshell.exe" Primary="yes" />
      <ComponentRef Id="desktop_resources.dll" />
      <ComponentRef Id="menu.txt" />
      <ComponentRef Id="messages.txt" />
      <ComponentRef Id="trayicon.ico" />
      <ComponentRef Id="KeymanDesktop.chm" />
      <ComponentRef Id="appicon.ico" />
      <ComponentRef Id="cfgicon.ico" />
      <ComponentRef Id="menutitle.png" />
      <ComponentRef Id="unicodedata.mdb" />
      <ComponentRef Id="kmbrowserhost.exe" /><commit_msg>fix(windows): add kmconfig.exe to install feature<commit_after>﻿<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <Product UpgradeCode="c70af17c-8b9e-47a1-a099-b65aee3dc8b4" Manufacturer="SIL International"
           Id="*" Name="Keyman Desktop $(var.RELEASE)" Version="$(var.VERSION)" Language="1033">
    <Package Keywords="Keyman,Keyman Desktop,Keyboard,Engine"
             Description="Keyman Desktop $(var.RELEASE)" Comments="Contact:  Your local administrator" Compressed="yes"
             Manufacturer="SIL International" InstallerVersion="400" Platform="x86" Languages="1033" SummaryCodepage="1252" />

    <!-- ALLOW Upgrade from 7.0 Light -->
    <Upgrade Id="5D7A2C7D-4CF3-4425-A1B1-411533CA006F">
      <UpgradeVersion OnlyDetect="no" Minimum="172.16.17.32" IncludeMinimum="yes"
                      Maximum="8.0.0.0" IncludeMaximum="no" MigrateFeatures="yes" Property="OLDERFOUNDL70" />
    </Upgrade>

    <!-- ALLOW Upgrade from 7.0 Pro -->
    <Upgrade Id="76CACC8E-7024-40ba-BA60-4E2F9FF95C2B">
      <UpgradeVersion OnlyDetect="no" Minimum="172.16.17.32" IncludeMinimum="yes"
                      Maximum="8.0.0.0" IncludeMaximum="no" MigrateFeatures="yes" Property="OLDERFOUND70" />
    </Upgrade>

    <!-- PREVENT Upgrade from Corporate -->
    <Upgrade Id="63299AFB-F396-43bb-86F2-B8EB0C167E87">
      <UpgradeVersion OnlyDetect="yes" Minimum="7.0.213.0" Property="HIGHERFOUND" />
    </Upgrade>

    <!-- ALLOW Upgrade from 8.0 -->
    <Upgrade Id="E756C3BC-A261-427f-91BE-37955544A126">
      <UpgradeVersion OnlyDetect="no" Minimum="8.0.300.0" IncludeMinimum="yes"
                      Maximum="9.0.0.0" IncludeMaximum="no" MigrateFeatures="yes" Property="OLDERFOUND80" />
    </Upgrade>

    <!-- ALLOW Upgrade from 9.0 -->
    <Upgrade Id="593EA657-7DF2-4799-B90E-B9E95A8E66D3">
      <UpgradeVersion OnlyDetect="no" Minimum="9.0.454.0" IncludeMinimum="yes"
                      Maximum="10.0.0.0" IncludeMaximum="no" MigrateFeatures="yes" Property="VERSION9FOUND" />
    </Upgrade>

    <!-- ALLOW Upgrade from 10.0 -->
    <Upgrade Id="1211D5B5-AAF5-4AE5-8D3D-67E3C19E3C13">
      <UpgradeVersion OnlyDetect="no" Minimum="10.0.0.0" IncludeMinimum="yes"
                      Maximum="172.16.58.3" IncludeMaximum="no" MigrateFeatures="yes" Property="VERSION10FOUND" />
    </Upgrade>

    <!-- PREVENT or ALLOW Upgrade from 11.0 or later versions -->
    <Upgrade Id="c70af17c-8b9e-47a1-a099-b65aee3dc8b4">
      <UpgradeVersion OnlyDetect="no" Minimum="172.16.58.3" IncludeMinimum="yes"
                      Maximum="$(var.VERSION)" IncludeMaximum="no" MigrateFeatures="yes" Property="VERSION11FOUND" />
      <UpgradeVersion OnlyDetect="yes" Minimum="$(var.VERSION)" IncludeMinimum="yes"
                      Maximum="$(var.VERSION)" IncludeMaximum="yes" Property="CURRENTVERSIONFOUND" />
      <UpgradeVersion OnlyDetect="yes" Minimum="$(var.VERSION)" IncludeMinimum="no" Property="NEWERFOUND" />
    </Upgrade>

    <Property Id='OLDINSTALLDIR'>
      <RegistrySearch Id='oldinstalldir_search' Key='Software\Keyman\Keyman Desktop' Root='HKLM' Name='root path' Type='raw' />
    </Property>

    <Property Id='OnlineProductID' Value='30' />

    <Directory Id="TARGETDIR" Name="SourceDir" DiskId="1">

      <Merge Id="keymanengine" Language='1033' SourceFile='..\..\engine\inst\keymanengine.msm' />

      <Directory Id="ProgramFilesFolder" Name=".">
        <Directory Id="KEYMANROOT" Name="Keyman">
          <Directory Id="KEYMAN" Name="Keyman Desktop">
            <Directory Id="INSTALLDIR" Name="." FileSource="..\..\..\bin\desktop\">

              <Component>
                <File Name="kmshell.exe" KeyPath="yes">
                  <Shortcut Id="desktopKeyman" Advertise="yes" Directory="DesktopFolder" Name="Keyman Desktop" WorkingDirectory='INSTALLDIR' Icon="appicon.ico" IconIndex="0" />
                  <Shortcut Id="startmenuKeyman" Advertise="yes" Directory="ProgramMenuDir" Name="Keyman Desktop" WorkingDirectory='INSTALLDIR' Icon="appicon.ico" IconIndex="0" />
                  <Shortcut Id="startmenuKeymanConfiguration" Advertise="yes" Directory="ProgramMenuDir" Arguments="-c" Name="Keyman Configuration" WorkingDirectory='INSTALLDIR' Icon="KMSHELL.ico" IconIndex="0" />
                </File>

                <RegistryValue Root="HKCR" Key=".kmp" Type="string" Value="Keyman.File.Package" />
                <RegistryValue Root="HKCR" Key=".kmx" Type="string" Value="Keyman.File.Keyboard" />
                <RegistryValue Root="HKCR" Key=".kvk" Type="string" Value="Keyman.File.OnScreenKeyboard" />

                <RegistryValue Root="HKCR" Key="Keyman.File.Package" Type="string" Value="Keyman Package File" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Package\Shell" Type="string" Value="install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Package\Shell\install" Type="string" Value="&amp;Install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Package\Shell\install\Command" Type="string" Value='"[#kmshell.exe]" -i "%1"' />

                <RegistryValue Root="HKCR" Key="Keyman.File.Keyboard" Type="string" Value="Keyman Keyboard File" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Keyboard\Shell" Type="string" Value="install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Keyboard\Shell\install" Type="string" Value="&amp;Install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Keyboard\Shell\install\Command" Type="string" Value='"[#kmshell.exe]" -i "%1"' />

                <RegistryValue Root="HKCR" Key="Keyman.File.OnScreenKeyboard" Type="string" Value="Keyman On Screen Keyboard File" />
                <RegistryValue Root="HKCR" Key="Keyman.File.OnScreenKeyboard\Shell" Type="string" Value="install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.OnScreenKeyboard\Shell\install" Type="string" Value="&amp;Install" />
                <RegistryValue Root="HKCR" Key="Keyman.File.OnScreenKeyboard\Shell\install\Command" Type="string" Value='"[#kmshell.exe]" -i "%1"' />

                <RegistryValue Root="HKCR" Key="keyman" Type="string" Value="URL:Keyman Protocol" />
                <RegistryValue Root="HKCR" Key="keyman" Name="URL Protocol" Type="string" Value="" />
                <RegistryValue Root="HKCR" Key="keyman\DefaultIcon" Type="string" Value="" />
                <RegistryValue Root="HKCR" Key="Keyman\shell\open" Name="FriendlyAppName" Type="string" Value="Keyman Configuration" />
                <RegistryValue Root="HKCR" Key="keyman\shell\open\command" Type="string" Value='"[#kmshell.exe]" -i "%1"' />

                <RemoveFile Id="CachedInstallDirFiles" Property="CachedInstallDir" On="uninstall" Name="*" />
                <RemoveFolder Id="CachedInstallDir" Property="CachedInstallDir" On="uninstall" />
                <RemoveFolder Id="CachedInstallDirParent" Property="CachedInstallDirParent" On="uninstall" />
              </Component>

              <Component>
                <File Name="desktop_resources.dll" Source="..\..\desktop\inst\desktop_resources.dll" KeyPath="yes" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Package\DefaultIcon" Type="string" Value="[#desktop_resources.dll],0" />
                <RegistryValue Root="HKCR" Key="Keyman.File.Keyboard\DefaultIcon" Type="string" Value="[#desktop_resources.dll],1" />
                <RegistryValue Root="HKCR" Key="Keyman.File.OnScreenKeyboard\DefaultIcon" Type="string" Value="[#desktop_resources.dll],2" />
              </Component>

              <Component>
                <File Name="menu.txt" Source="..\..\desktop\branding\menu.txt" KeyPath="yes" />
              </Component>

              <Component>
                <File Name="messages.txt" Source="..\..\desktop\branding\messages.txt" KeyPath="yes" />
              </Component>

              <Component>
                <File Name="menutitle.png" Source="..\..\desktop\branding\menutitle.png" KeyPath="yes" />
              </Component>

              <Component>
                <File Id="trayicon.ico" Name="trayicon.ico" Source="..\..\desktop\branding\trayicon.ico" KeyPath="yes" />
              </Component>

              <Component>
                <File Id="appicon.ico" Name="appicon.ico" Source="..\..\global\res\90\desktop\appicon.ico" KeyPath="yes" />
              </Component>

              <Component>
                <File Id="cfgicon.ico" Name="cfgicon.ico" Source="..\..\global\res\90\desktop\cfgicon.ico" KeyPath="yes" />
              </Component>

              <Component>
                <File Id="KeymanDesktop.chm" Name="KeymanDesktop.chm" KeyPath="yes" />
              </Component>

              <Component>
                <File Name="unicodedata.mdb" Source="..\..\global\inst\data\unicodedata.mdb" />
              </Component>

              <Component>
                <File Id="kmbrowserhost.exe" Name="kmbrowserhost.exe" KeyPath="yes" />
              </Component>

              <Component>
                <File Id="kmconfig.exe" Name="kmconfig.exe" KeyPath="yes" />
              </Component>

              <Component Id="Reg_RootPath" Guid="*">
                <RegistryValue KeyPath="yes" Root="HKLM" Key="SOFTWARE\Keyman\Keyman Desktop" Name="root path" Type="string" Value="[INSTALLDIR]" />
                <RegistryValue Root="HKLM" Key="SOFTWARE\Keyman\Keyman Desktop" Name="version" Type="string" Value="$(var.VERSION)" />
                <RegistryValue Root="HKLM" Key="SOFTWARE\Keyman\Keyman Desktop" Name="release" Type="string" Value="$(var.RELEASE)" />
                <RegistryValue Root="HKLM" Key="SOFTWARE\Keyman\Keyman Desktop" Name="charmap source data" Type="string" Value="[INSTALLDIR]" />
                <RegistryKey ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes" Root="HKLM" Key="Software\Keyman\Keyman Desktop" />
              </Component>

              <Component Id="removeCU" Guid="*">
                <RegistryValue KeyPath="yes" Root="HKCU" Key="Software\Keyman\Keyman Desktop" Name="Install" Type="string" Value="1" />
                <RegistryKey ForceCreateOnInstall="yes" ForceDeleteOnUninstall="yes" Root="HKCU" Key="Software\Keyman\Keyman Desktop" />
                <RemoveFolder Id="ProgramMenuDir" Directory="ProgramMenuDir" On="uninstall" />

                <RemoveFile Id="Version70ShortcutKeyman"   Name="Keyman Desktop Light 7.0.lnk"  Directory="ProgramMenuDirLight70" On="both" />
                <RemoveFile Id="Version71ShortcutKeyman"   Name="Keyman Desktop Light 7.1.lnk"  Directory="ProgramMenuDirLight71" On="both" />
                <RemoveFile Id="Version70ShortcutKeymanD"  Name="Keyman Desktop Light 7.0.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version71ShortcutKeymanD"  Name="Keyman Desktop Light 7.1.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version70ShortcutConfig"   Name="Keyman Configuration.lnk"  Directory="ProgramMenuDirLight70" On="both" />
                <RemoveFile Id="Version71ShortcutConfig"   Name="Keyman Configuration.lnk"  Directory="ProgramMenuDirLight71" On="both" />

                <RemoveFile Id="Version70ShortcutKeymanP"  Name="Keyman Desktop Professional 7.0.lnk"  Directory="ProgramMenuDirPro70" On="both" />
                <RemoveFile Id="Version71ShortcutKeymanP"  Name="Keyman Desktop Professional 7.1.lnk"  Directory="ProgramMenuDirPro71" On="both" />
                <RemoveFile Id="Version70ShortcutKeymanDP" Name="Keyman Desktop Professional 7.0.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version71ShortcutKeymanDP" Name="Keyman Desktop Professional 7.1.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version70ShortcutConfigP"  Name="Keyman Configuration.lnk"  Directory="ProgramMenuDirPro70" On="both" />
                <RemoveFile Id="Version71ShortcutConfigP"  Name="Keyman Configuration.lnk"  Directory="ProgramMenuDirPro71" On="both" />

                <RemoveFolder Id="Version70ShortcutsL" Directory="ProgramMenuDirLight70" On="both" />
                <RemoveFolder Id="Version70ShortcutsP" Directory="ProgramMenuDirPro70" On="both" />
                <RemoveFolder Id="Version71ShortcutsL" Directory="ProgramMenuDirLight71" On="both" />
                <RemoveFolder Id="Version71ShortcutsP" Directory="ProgramMenuDirPro71" On="both" />

                <RemoveFile Id="Version80ShortcutKeyman"   Name="Keyman Desktop 8.0.lnk"  Directory="ProgramMenuDir80" On="both" />
                <RemoveFile Id="Version80ShortcutKeymanD"  Name="Keyman Desktop 8.0.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version80ShortcutConfig"   Name="Keyman Configuration.lnk"  Directory="ProgramMenuDir80" On="both" />

                <RemoveFolder Id="Version80Shortcuts" Directory="ProgramMenuDir80" On="both" />

                <RemoveFile Id="Version90ShortcutKeyman"   Name="Keyman Desktop 9.0.lnk"  Directory="ProgramMenuDir90" On="both" />
                <RemoveFile Id="Version90ShortcutKeymanD"  Name="Keyman Desktop 9.0.lnk"  Directory="DesktopFolder" On="both" />
                <RemoveFile Id="Version90ShortcutConfig"   Name="Keyman Configuration.lnk"  Directory="ProgramMenuDir90" On="both" />

                <RemoveFolder Id="Version90Shortcuts" Directory="ProgramMenuDir90" On="both" />
              </Component>

              <Directory Id="dir_locale" Name="locale" />

            </Directory>
          </Directory>
        </Directory>
      </Directory>

      <Directory Id="ProgramMenuFolder" Name="Programs">
        <Directory Id="ProgramMenuDir" Name="Keyman Desktop" />
        <Directory Id="ProgramMenuDirLight70" Name="Tavultesoft Keyman Desktop Light 7.0" />
        <Directory Id="ProgramMenuDirLight71" Name="Tavultesoft Keyman Desktop Light 7.1" />
        <Directory Id="ProgramMenuDirPro70" Name="Tavultesoft Keyman Desktop Professional 7.0" />
        <Directory Id="ProgramMenuDirPro71" Name="Tavultesoft Keyman Desktop Professional 7.1" />
        <Directory Id="ProgramMenuDir80" Name="Tavultesoft Keyman Desktop 8.0" />
        <Directory Id="ProgramMenuDir90" Name="Tavultesoft Keyman Desktop 9.0" />
      </Directory>

      <Directory Id="DesktopFolder" Name="Desktop" />

    </Directory>

    <Feature Id="AlwaysInstall" Title="Keyman Desktop Application Files" Description="Required program files for Keyman Desktop"
             Level="1" ConfigurableDirectory="INSTALLDIR" Absent="disallow" AllowAdvertise="no">
      <ComponentRef Id="kmshell.exe" Primary="yes" />
      <ComponentRef Id="desktop_resources.dll" />
      <ComponentRef Id="menu.txt" />
      <ComponentRef Id="messages.txt" />
      <ComponentRef Id="trayicon.ico" />
      <ComponentRef Id="KeymanDesktop.chm" />
      <ComponentRef Id="appicon.ico" />
      <ComponentRef Id="cfgicon.ico" />
      <ComponentRef Id="menutitle.png" />
      <ComponentRef Id="unicodedata.mdb" />
      <ComponentRef Id="kmbrowserhost.exe" />
      <ComponentRef Id="kmconfig.exe" />
{'fraction_non_alphanumeric': 0.15125521626813274, 'fraction_numerical': 0.02878055242763463, 'mean_word_length': 3.1081632653061226, 'pattern_counts': {'":': 0, '<': 352, '<?xml version=': 2, '>': 352, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 4}, 'pii_count': 20, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6428279', 'n_tokens_mistral': 9964, 'n_tokens_neox': 8799, 'n_words': 1513}