feat(windows): as wixproj for dotnet build wip

This commit is contained in:
rc-swag 2025-11-13 16:41:46 +10:00
parent 80d789c706
commit 53ecc3665c
7 changed files with 441 additions and 310 deletions

View file

@ -0,0 +1,20 @@
WIX6PATH="C:\Users\ross_\.dotnet\tools"
# !IFDEF LINT
#WIXLIGHTLINT=()
#!ELSE
# we suppress ICE82 because it reports spurious errors with merge module keymanengine to do with duplicate sequence numbers. Safely ignored.
#WIXLIGHTLINT=(-sice:ICE82 -sice:ICE80)
#!ENDIF
if [[ "$GO_FAST" == 1 ]]; then
# for debug builds, we turn off compression because it is so hideously slow
# for test builds, we also turn off compression
WIXCOMPRESSION="-dcl none"
else
WIXCOMPRESSION="-dcl high"
fi
# WIXLIT="$WIX6PATH/lit.exe" -wx -nologo
WIX6BUILD="$WIX6PATH/wix.exe build"

View file

@ -0,0 +1,57 @@
<Project Sdk="WixToolset.Sdk/6.0.2">
<PropertyGroup>
<OutputPath>$(ProjectDir)</OutputPath>
<OutputName>keymandesktop</OutputName>
<Platform>AnyCPU</Platform>
<SuppressICEs>ICE80;ICE82</SuppressICEs>
<Cultures>en-us</Cultures>
<DefaultCompressionLevel>none</DefaultCompressionLevel>
<HarvestFileGenerateGuidsNow>true</HarvestFileGenerateGuidsNow>
<DefineConstants>
PRODUCTID=$(PRODUCTID);
RELEASE=$(RELEASE);
KEYMAN_VERSION=$(KEYMAN_VERSION);
KEYMAN_VERSION_WIN=$(KEYMAN_VERSION_WIN);
KEYMAN_VERSION_WITH_TAG=$(KEYMAN_VERSION_WITH_TAG);
CefSourceDir=$(CefSourceDir);
DESKTOPUISOURCE=$(DESKTOPUISOURCE);
LOCALESOURCE=$(LOCALESOURCE)
</DefineConstants>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="WixToolset.Heat" />
<HarvestDirectory Include="$(CefSourceDir)">
<ComponentGroupName>CEF</ComponentGroupName>
<DirectoryRefId>INSTALLDIR</DirectoryRefId>
<PreprocessorVariable>var.CefSourceDir</PreprocessorVariable>
<!-- <SuppressRootDirectory>true</SuppressRootDirectory> -->
<!-- <Excludes>*.git\;</Excludes> -->
</HarvestDirectory>
<HarvestDirectory Include="$(DESKTOPUISOURCE)">
<ComponentGroupName>DesktopUI</ComponentGroupName>
<DirectoryRefId>INSTALLDIR</DirectoryRefId>
<PreprocessorVariable>var.DESKTOPUISOURCE</PreprocessorVariable>
<!-- <SuppressRootDirectory>true</SuppressRootDirectory> -->
<SuppressUniqueIds>true</SuppressUniqueIds>
</HarvestDirectory>
<HarvestDirectory Include="$(LOCALESOURCE)">
<ComponentGroupName>Locale</ComponentGroupName>
<DirectoryRefId>LocaleDir</DirectoryRefId>
<PreprocessorVariable>var.LOCALESOURCE</PreprocessorVariable>
<!-- <SuppressRootDirectory>true</SuppressRootDirectory> -->
</HarvestDirectory>
</ItemGroup>
<!-- <ItemGroup>
<Compile Include="keymandesktop.wxs" />
</ItemGroup> -->
<ItemGroup>
<PackageReference Include="WixToolset.UI.wixext" Version="6.0.2" />
<PackageReference Include="WixToolset.Util.wixext" Version="6.0.2" />
</ItemGroup>
</Project>

View file

@ -20,7 +20,7 @@ builder_if_release_build_level builder_describe_outputs \
builder_parse "$@"
. "$KEYMAN_ROOT/resources/build/win/environment.inc.sh"
. "$KEYMAN_ROOT/resources/build/win/wix.inc.sh"
. "$KEYMAN_ROOT/resources/build/win/wix6.inc.sh"
. "$KEYMAN_ROOT/resources/build/zip.inc.sh"
# In dev environments, we'll hack the tier to alpha; CI sets this for us in real builds.
@ -62,20 +62,20 @@ function do_publish() {
#
# Build the installation archive
#
do_candle
#do_candle
do_wix_build
# ICE82: we suppress because it reports spurious errors with merge module
# keymanengine to do with duplicate sequence numbers. Safely ignored.
# ICE80: we suppress because it reports x64 components without targeting x64.
# Safely ignored.
"$WIXLIGHT" \
-sice:ICE82 -sice:ICE80 \
-nologo \
-dWixUILicenseRtf=License.rtf \
"$WIXLIGHTCOMPRESSION" \
-out keymandesktop.msi -ext WixUIExtension \
keymandesktop.wixobj desktopui.wixobj cef.wixobj locale.wixobj
#"$WIXLIGHT" \
# -sice:ICE82 -sice:ICE80 \
# -nologo \
# -dWixUILicenseRtf=License.rtf \
# "$WIXLIGHTCOMPRESSION" \
# -out keymandesktop.msi -ext WixUIExtension \
# keymandesktop.wixobj desktopui.wixobj cef.wixobj locale.wixobj
#
# Sign the installation archive
@ -135,12 +135,53 @@ function test-releaseexists() {
fi
}
function do_wix_build_OLD() {
#"${WIXCOMPRESSION}" \ this line was in the wix build cli -culture en-us \
local GUID1=$(generate_uuid)
DESKTOP_UI_SRC="../kmshell/xml"
LOCALE_SRC="../kmshell/locale"
$WIX6BUILD \
-d KEYMAN_VERSION_WITH_TAG="${KEYMAN_VERSION_WITH_TAG}" \
-d KEYMAN_VERSION="${KEYMAN_VERSION_WIN}" \
-d RELEASE="${KEYMAN_VERSION_RELEASE}" \
-d PRODUCTID="${GUID1}" \
-d CefSourceDir="${KEYMAN_CEF4DELPHI_ROOT}" \
-d DesktopUISource="${DESKTOP_UI_SRC}" \
-d LocaleSource="${LOCALE_SRC}" \
-d HarvestFileGenerateGuidsNow=true \
keymandesktop.wxs \
-ext WixToolset.Util.wixext \
-o "KeymanDesktop-${KEYMAN_VERSION_WITH_TAG}.msi" \
}
function do_wix_build() {
#"${WIXCOMPRESSION}" \ this line was in the wix build cli -culture en-us \
exclude-cef
local GUID1=$(generate_uuid)
DESKTOPUISOURCE="../kmshell/xml"
LOCALESOURCE="../kmshell/locale"
echo "Building with ProductID: $GUID1"
dotnet build KeymanDesktop.wixproj \
-p:PRODUCTID="$GUID1" \
-p:RELEASE="$KEYMAN_VERSION_RELEASE" \
-p:KEYMAN_VERSION="$KEYMAN_VERSION_WIN" \
-p:KEYMAN_VERSION_WITH_TAG="$KEYMAN_VERSION_WITH_TAG" \
-p:KEYMAN_VERSION_WIN="$KEYMAN_VERSION_WIN" \
-p:CefSourceDir="$KEYMAN_WIX_TEMP_CEF" \
-p:DESKTOPUISOURCE="$DESKTOPUISOURCE" \
-p:LOCALESOURCE="$LOCALESOURCE"
}
function do_candle() {
heat-cef
builder_heading candle
local GUID1=$(generate_uuid)
"$WIXHEAT" dir "$KEYMAN_WIX_TEMP_CEF" -o cef.wxs -ag -cg CEF -dr INSTALLDIR -var var.CefSourceDir -wx -nologo
"$WIXHEAT" dir ../kmshell/xml -o desktopui.wxs -ag -cg DesktopUI -dr INSTALLDIR -suid -var var.DESKTOPUISOURCE -wx -nologo
"$WIXHEAT" dir ../kmshell/locale -o locale.wxs -ag -cg Locale -dr INSTALLDIR -var var.LOCALESOURCE -wx -nologo
"$WIXCANDLE" -dKEYMAN_VERSION_WITH_TAG=${KEYMAN_VERSION_WITH_TAG} -dKEYMAN_VERSION=${KEYMAN_VERSION_WIN} -dRELEASE=${KEYMAN_VERSION_RELEASE} -dPRODUCTID=$GUID1 \
@ -160,6 +201,15 @@ function heat-cef() {
rm -rf "$KEYMAN_WIX_TEMP_CEF"
}
function exclude-cef() {
builder_heading exclude-cef
# We copy the files to a temp folder in order to exclude .git from harvesting
rm -rf "$KEYMAN_WIX_TEMP_CEF"
mkdir -p "$KEYMAN_WIX_TEMP_CEF"
cp -r "$KEYMAN_CEF4DELPHI_ROOT"/* "$KEYMAN_WIX_TEMP_CEF"
}
function create-setup-inf() {
builder_heading create-setup-inf

View file

@ -1,10 +1,6 @@
<?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 $(var.RELEASE)" Version="$(var.KEYMAN_VERSION)" Language="1033">
<Package Keywords="Keyman,Keyman for Windows,Keyboard,Engine"
Description="Keyman $(var.RELEASE)" Comments="Contact: Your local administrator" Compressed="yes"
Manufacturer="SIL International" InstallerVersion="400" Platform="x86" Languages="1033" SummaryCodepage="1252" />
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:ui="http://wixtoolset.org/schemas/v4/wxs/ui">
<Package UpgradeCode="c70af17c-8b9e-47a1-a099-b65aee3dc8b4" Manufacturer="SIL International" Name="Keyman $(var.RELEASE)" Version="$(var.KEYMAN_VERSION)" Language="1033" InstallerVersion="400"><SummaryInformation Keywords="Keyman,Keyman for Windows,Keyboard,Engine" Description="Keyman $(var.RELEASE)" Manufacturer="SIL International" />
<!-- ALLOW Upgrade from 7.0 Light -->
<Upgrade Id="5D7A2C7D-4CF3-4425-A1B1-411533CA006F">
@ -72,197 +68,35 @@
* DISABLEADVTSHORTCUTS: https://learn.microsoft.com/en-us/windows/win32/msi/disableadvtshortcuts
* Shortcut advertisement: https://learn.microsoft.com/en-us/windows/win32/msi/advertisement
-->
<Property Id='DISABLEADVTSHORTCUTS' Value='1' />
<Property Id="DISABLEADVTSHORTCUTS" Value="1" />
<Property Id='OLDINSTALLDIR'>
<RegistrySearch Id='oldinstalldir_search' Key='Software\Keyman\Keyman Desktop' Root='HKLM' Name='root path' Type='raw' />
<Property Id="OLDINSTALLDIR">
<RegistrySearch Id="oldinstalldir_search" Root="HKLM" Key="Software\Keyman\Keyman Desktop" Name="root path" Type="raw" />
</Property>
<Property Id='OnlineProductID' Value='30' />
<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="startmenuKeyman" Advertise="yes" Directory="ProgramMenuDir" Name="Keyman" 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="..\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="..\branding\menu.txt" KeyPath="yes" />
</Component>
<Component>
<File Name="messages.txt" Source="..\branding\messages.txt" KeyPath="yes" />
</Component>
<Component>
<File Name="menutitle.png" Source="..\branding\menutitle.png" KeyPath="yes" />
</Component>
<Component>
<File Id="trayicon.ico" Name="trayicon.ico" Source="..\branding\trayicon.ico" KeyPath="yes" />
</Component>
<Component>
<File Id="appicon.ico" Name="appicon.ico" Source="..\branding\appicon.ico" KeyPath="yes" />
</Component>
<Component>
<File Id="cfgicon.ico" Name="cfgicon.ico" Source="..\branding\cfgicon.ico" KeyPath="yes" />
</Component>
<Component>
<File Id="KeymanDesktop.chm" Name="KeymanDesktop.chm" KeyPath="yes" />
</Component>
<Component>
<File Name="unicodedata.mdb" Source="..\..\..\..\common\windows\bin\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.KEYMAN_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" />
<RemoveFile Id="Version100ShortcutKeyman" Name="Keyman Desktop.lnk" Directory="ProgramMenuDir100" On="both" />
<RemoveFile Id="Version100ShortcutKeymanD" Name="Keyman Desktop.lnk" Directory="DesktopFolder" On="both" />
<RemoveFile Id="Version100ShortcutConfig" Name="Keyman Configuration.lnk" Directory="ProgramMenuDir100" On="both" />
<RemoveFolder Id="Version100Shortcuts" Directory="ProgramMenuDir100" On="both" />
</Component>
<Directory Id="dir_locale" Name="locale" />
<Directory Id="dir_sentry_0.6.0" Name="sentry-0.6.0" />
</Directory>
</Directory>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder" Name="Programs">
<Directory Id="ProgramMenuDir" Name="Keyman for Windows" />
<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 Id="ProgramMenuDir100" Name="Keyman Desktop" />
</Directory>
<Directory Id="DesktopFolder" Name="Desktop" />
</Directory>
<ComponentGroup Id="KeymanSentryComponents" Directory="dir_sentry_0.6.0" Source="..\..\..\..\common\windows\delphi\ext\sentry">
<Component>
<File Id="sentry.dll" KeyPath="yes" />
<File Id="sentry.dll" Source="..\..\..\..\common\windows\delphi\ext\sentry\sentry.dll" KeyPath="yes" />
</Component>
<Component>
<File Id="sentry.x64.dll" KeyPath="yes" />
<File Id="sentry.x64.dll" Source="..\..\..\..\common\windows\delphi\ext\sentry\sentry.x64.dll" KeyPath="yes" />
</Component>
<Component>
<File Id="sentry.arm64.dll" KeyPath="yes" />
<File Id="sentry.arm64.dll" Source="..\..\..\..\common\windows\delphi\ext\sentry\sentry.arm64.dll" KeyPath="yes" />
</Component>
<Component>
<File Id="crashpad_handler.exe" KeyPath="yes" />
<File Id="crashpad_handler.exe" Source="..\..\..\..\common\windows\delphi\ext\sentry\crashpad_handler.exe" KeyPath="yes" />
</Component>
</ComponentGroup>
<!-- ========================================
FEATURE
======================================== -->
<Feature Id="AlwaysInstall" Title="Keyman Application Files" Description="Required program files for Keyman"
Level="1" ConfigurableDirectory="INSTALLDIR" Absent="disallow" AllowAdvertise="no">
Level="1" ConfigurableDirectory="INSTALLDIR" AllowAdvertise="no" AllowAbsent="no">
<ComponentRef Id="kmshell.exe" Primary="yes" />
<ComponentRef Id="desktop_resources.dll" />
<ComponentRef Id="menu.txt" />
@ -275,67 +109,65 @@
<ComponentRef Id="unicodedata.mdb" />
<ComponentRef Id="kmbrowserhost.exe" />
<ComponentRef Id="kmconfig.exe" />
<ComponentRef Id="Reg_RootPath" />
<ComponentRef Id="removeCU" />
<ComponentGroupRef Id="DesktopUI" />
<ComponentGroupRef Id="CEF" />
<ComponentGroupRef Id="Locale" />
<ComponentGroupRef Id="KeymanSentryComponents" />
<MergeRef Id='keymanengine' />
<MergeRef Id="keymanengine" />
</Feature>
<!-- Actions -->
<CustomAction Id="RollbackPostInstallCU" Execute="rollback" Impersonate="yes" ExeCommand='-rcu' BinaryKey='insthelp.exe' />
<CustomAction Id="RollbackPostInstallLM" Execute="rollback" Impersonate="no" ExeCommand='-rlm' BinaryKey='insthelp.exe' />
<CustomAction Id="PreUninstallUser" Execute="deferred" Impersonate="yes" ExeCommand='-uu' BinaryKey="insthelp.exe" />
<CustomAction Id='AlreadyUpdated' Error='[ProductName] has already been updated to [ProductVersion] or newer.' />
<CustomAction Id='NoDowngrade' Error='A later version of [ProductName] or a related edition is already installed.' />
<CustomAction Id="RollbackPostInstallCU" Execute="rollback" Impersonate="yes" ExeCommand="-rcu" BinaryRef="insthelp.exe" />
<CustomAction Id="RollbackPostInstallLM" Execute="rollback" Impersonate="no" ExeCommand="-rlm" BinaryRef="insthelp.exe" />
<CustomAction Id="PreUninstallUser" Execute="deferred" Impersonate="yes" ExeCommand="-uu" BinaryRef="insthelp.exe" />
<CustomAction Id="AlreadyUpdated" Error="[ProductName] has already been updated to [ProductVersion] or newer." />
<CustomAction Id="NoDowngrade" Error="A later version of [ProductName] or a related edition is already installed." />
<CustomAction Id='LocateInstallDir' Execute='immediate' Directory='INSTALLDIR' Value='[OLDINSTALLDIR]' />
<CustomAction Id="LocateInstallDir" Execute="immediate" Directory="INSTALLDIR" Value="[OLDINSTALLDIR]" />
<CustomAction Id="SaveARPInstallLocation" Property="ARPINSTALLLOCATION" Value="[INSTALLDIR]" />
<!-- I1165 - Uninstall failure on Win9x - refer to ProgramFilesFolder instead of %ProgramFiles! -->
<CustomAction Id='CachedInstallDir' Property='CachedInstallDir' Value='[ProgramFilesFolder]\Keyman\Cached Installer Files\[ProductCode]' />
<CustomAction Id='CachedInstallDirParent' Property='CachedInstallDirParent' Value='[ProgramFilesFolder]\Keyman\Cached Installer Files' />
<CustomAction Id="CachedInstallDir" Property="CachedInstallDir" Value="[ProgramFilesFolder]\Keyman\Cached Installer Files\[ProductCode]" />
<CustomAction Id="CachedInstallDirParent" Property="CachedInstallDirParent" Value="[ProgramFilesFolder]\Keyman\Cached Installer Files" />
<InstallExecuteSequence>
<Custom Action='LocateInstallDir' After='CostFinalize'>VERSION11FOUND</Custom>
<Custom Action="LocateInstallDir" After="CostFinalize" Condition="VERSION11FOUND" />
<Custom Action='CachedInstallDir' After='CostFinalize' />
<Custom Action='CachedInstallDirParent' After='CostFinalize' />
<Custom Action="CachedInstallDir" After="CostFinalize" />
<Custom Action="CachedInstallDirParent" After="CostFinalize" />
<Custom Action='AlreadyUpdated' After='FindRelatedProducts'>CURRENTVERSIONFOUND</Custom>
<Custom Action='NoDowngrade' After='AlreadyUpdated'>NEWERFOUND Or HIGHERFOUND</Custom>
<Custom Action="AlreadyUpdated" After="FindRelatedProducts" Condition="CURRENTVERSIONFOUND" />
<Custom Action="NoDowngrade" After="AlreadyUpdated" Condition="NEWERFOUND Or HIGHERFOUND" />
<!-- Note: we do not remove existing products for 10.0 or earlier, but rely on setup to
do this for us, because we actually need the uninstall to happen before InstallValidate.
But we cannot have RemoveExistingProducts in two places in the installer! -->
<RemoveExistingProducts After='InstallFinalize'>VERSION11FOUND</RemoveExistingProducts>
<RemoveExistingProducts After="InstallFinalize" Condition="VERSION11FOUND" />
<Custom Action='RollbackPostInstallLM' After='InstallInitialize'><![CDATA[Not Installed Or REINSTALL]]></Custom>
<Custom Action='RollbackPostInstallCU' After='InstallInitialize'><![CDATA[Not Installed Or REINSTALL]]></Custom>
<Custom Action="RollbackPostInstallLM" After="InstallInitialize" Condition="Not Installed Or REINSTALL" />
<Custom Action="RollbackPostInstallCU" After="InstallInitialize" Condition="Not Installed Or REINSTALL" />
<Custom Action="PreUninstallUser" After="InstallInitialize"><![CDATA[REMOVE="ALL" And Not REINSTALL And Not UPGRADINGPRODUCTCODE]]></Custom>
<Custom Action="PreUninstallUser" After="InstallInitialize" Condition="REMOVE=&quot;ALL&quot; And Not REINSTALL And Not UPGRADINGPRODUCTCODE" />
<Custom Action='SaveARPInstallLocation' After='InstallValidate'><![CDATA[Not Installed Or REINSTALL]]></Custom>
<Custom Action="SaveARPInstallLocation" After="InstallValidate" Condition="Not Installed Or REINSTALL" />
</InstallExecuteSequence>
<Media Id="1" EmbedCab="yes" Cabinet="Data1.cab" VolumeLabel="DISK1" />
<Property Id="ALLUSERS">1</Property>
<!-- <Property Id="ALLUSERS" Value="1" /> -->
<UIRef Id="WixUI_FeatureTree"/>
<ui:WixUI Id="WixUI_FeatureTree" />
<Icon Id="appicon.ico" SourceFile="..\branding\appicon.ico" />
<Icon Id="KMSHELL.ico" SourceFile="..\branding\cfgicon.ico" />
<Binary Id="insthelp.exe" SourceFile="..\..\..\bin\desktop\insthelp.exe" />
<Condition Message="Keyman requires Windows 7 or later"><![CDATA[Installed OR (VersionNT >= 601)]]></Condition>
<Launch Condition="Installed OR (VersionNT &gt;= 601)" Message="Keyman requires Windows 7 or later" />
<Property Id="ARPURLINFOABOUT" Value="http://www.keyman.com/desktop/" />
<Property Id="ARPURLUPDATEINFO" Value="http://www.keyman.com/" />
@ -343,5 +175,176 @@
<Property Id="VersionWithTag" Value="$(var.KEYMAN_VERSION_WITH_TAG)" />
</Product>
<StandardDirectory Id="ProgramFilesFolder">
<Directory Id="KEYMANROOT" Name="Keyman">
<Directory Id="KEYMAN" Name="Keyman Desktop">
<Directory Id="INSTALLDIR" Name="." FileSource="..\..\..\bin\desktop\">
<Merge Id="keymanengine"
SourceFile="..\..\engine\inst\keymanengine.msm"
Language="1033"
DiskId="1" />
<Component>
<File Id="kmshell.exe" Name="kmshell.exe" KeyPath="yes">
<Shortcut Id="startmenuKeyman" Advertise="yes" Directory="ProgramMenuDir" Name="Keyman" 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="&quot;[#kmshell.exe]&quot; -i &quot;%1&quot;" />
<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="&quot;[#kmshell.exe]&quot; -i &quot;%1&quot;" />
<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="&quot;[#kmshell.exe]&quot; -i &quot;%1&quot;" />
<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="&quot;[#kmshell.exe]&quot; -i &quot;%1&quot;" />
<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 Id="desktop_resources.dll" Name="desktop_resources.dll" Source="..\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 Id="menu.txt" Name="menu.txt" Source="..\branding\menu.txt" KeyPath="yes" />
</Component>
<Component>
<File Id="messages.txt" Name="messages.txt" Source="..\branding\messages.txt" KeyPath="yes" />
</Component>
<Component>
<File Id="menutitle.png" Name="menutitle.png" Source="..\branding\menutitle.png" KeyPath="yes" />
</Component>
<Component>
<File Id="trayicon.ico" Name="trayicon.ico" Source="..\branding\trayicon.ico" KeyPath="yes" />
</Component>
<Component>
<File Id="appicon.ico" Name="appicon.ico" Source="..\branding\appicon.ico" KeyPath="yes" />
</Component>
<Component>
<File Id="cfgicon.ico" Name="cfgicon.ico" Source="..\branding\cfgicon.ico" KeyPath="yes" />
</Component>
<Component>
<File Id="KeymanDesktop.chm" Name="KeymanDesktop.chm" KeyPath="yes" />
</Component>
<Component>
<File Id="unicodedata.mdb" Name="unicodedata.mdb" Source="..\..\..\..\common\windows\bin\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">
<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.KEYMAN_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">
<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" />
<!-- 9.0 -->
<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" />
<!-- 10.0 -->
<RemoveFile Id="Version100ShortcutKeyman" Name="Keyman Desktop.lnk" Directory="ProgramMenuDir100" On="both" />
<RemoveFile Id="Version100ShortcutKeymanD" Name="Keyman Desktop.lnk" Directory="DesktopFolder" On="both" />
<RemoveFile Id="Version100ShortcutConfig" Name="Keyman Configuration.lnk" Directory="ProgramMenuDir100" On="both" />
<RemoveFolder Id="Version100Shortcuts" Directory="ProgramMenuDir100" On="both" />
</Component>
<!-- Subdirs -->
<Directory Id="LocaleDir" Name="locale" />
<Directory Id="dir_sentry_0.6.0" Name="sentry-0.6.0" />
</Directory>
</Directory>
</Directory>
</StandardDirectory>
<StandardDirectory Id="ProgramMenuFolder">
<Directory Id="ProgramMenuDir" Name="Keyman for Windows" />
<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 Id="ProgramMenuDir100" Name="Keyman Desktop" />
</StandardDirectory>
<StandardDirectory Id="DesktopFolder" />
</Package>
</Wix>

View file

@ -34,15 +34,29 @@ function do_publish() {
#
# Build the installation archive
#
"$WIXCANDLE" -dKEYMAN_VERSION=$KEYMAN_VERSION_WIN -dRELEASE=$KEYMAN_VERSION_RELEASE -ext WixUtilExtension keymanengine.wxs components.wxs
#"$WIXCANDLE" -dKEYMAN_VERSION=$KEYMAN_VERSION_WIN -dRELEASE=$KEYMAN_VERSION_RELEASE -ext WixUtilExtension keymanengine.wxs components.wxs
# warning 1072 relates to Error table defined by WixUtilExtension. Doesn't really affect us.
"$WIXLIGHT" \
-sw1072 \
-ext WixUtilExtension \
"$WIXLIGHTCOMPRESSION" \
keymanengine.wixobj components.wixobj \
-o keymanengine.msm
#"$WIXLIGHT" \
# -sw1072 \
# -ext WixUtilExtension \
# "$WIXLIGHTCOMPRESSION" \
# keymanengine.wixobj components.wixobj \
# -o keymanengine.msm
#wix build keymanengine.wxs components.wxs \
#-ext WixToolset.Util.wixext \
#-d KEYMAN_VERSION=$KEYMAN_VERSION_WIN \
#-d RELEASE=$KEYMAN_VERSION_RELEASE \
#-sw1072 \
#-out keymanengine.msm
wix build -d KEYMAN_VERSION=$env:KEYMAN_VERSION -d RELEASE=$env:KEYMAN_VERSION_RELEASE keymanengine.wxs components.wxs -ext WixToolset.Util.wixext -sw1072 -out keymanengine.msm
echo $KEYMAN_VERSION_RELEASE
echo $KEYMAN_VERSION_WIN
echo $KEYMAN_VERSION
echo $RELEASE
#
# Sign the installation archive

View file

@ -1,10 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs" xmlns:util="http://wixtoolset.org/schemas/v4/wxs/util">
<Fragment>
<ComponentGroup Id="KeymanEngineComponents" Directory="INSTALLDIR" Source="..\..\..\bin\engine\">
<Component Id="kmcomapi.dll" Guid="{6272B8A9-B41E-49B1-A65B-23BCFDB42167}" SharedDllRefCount="yes">
<File Id="kmcomapi.dll" Name="kmcomapi.dll" KeyPath="yes" >
<File Id="kmcomapi.dll" Name="kmcomapi.dll" KeyPath="yes">
<TypeLib Id="{F16E2A9A-DA46-4EA3-BFF3-BA46B480C961}" Description="Keyman API Library" Language="0" MajorVersion="1" MinorVersion="5">
<Class Id="{CF46549D-4D2D-4679-A2E1-23A815F172F8}" Context="InprocServer32" Description="Keyman Object" ThreadingModel="apartment" Version="$(var.RELEASE)">
<ProgId Id="keymanapi.Keyman" Description="Keyman Object" />
@ -51,8 +49,8 @@
</File>
</Component>
<Component Id="kmcomapi.x64.dll" Guid="{8AE57882-9901-4E53-B6B1-F78DD7707050}" SharedDllRefCount="yes" Win64="yes">
<Condition>VersionNT64</Condition>
<Component Id="kmcomapi.x64.dll" Guid="{8AE57882-9901-4E53-B6B1-F78DD7707050}" SharedDllRefCount="yes" Condition="VersionNT64" Bitness="always64">
<File Id="kmcomapi.x64.dll" Name="kmcomapi.x64.dll" KeyPath="yes">
<TypeLib Id="{F16E2A9A-DA46-4EA3-BFF3-BA46B480C961}" Description="Keyman API Library (64-bit)" Language="0" MajorVersion="1" MinorVersion="5">
<Class Id="{CF46549D-4D2D-4679-A2E1-23A815F172F8}" Context="InprocServer32" Description="Keyman Object" ThreadingModel="apartment" Version="$(var.RELEASE)">
@ -130,7 +128,7 @@
<RegistryValue Root="HKCR" Key="Keyman.File.Diagnostics" Type="string" Value="Keyman Diagnostics File" />
<RegistryValue Root="HKCR" Key="Keyman.File.Diagnostics\Shell" Type="string" Value="open" />
<RegistryValue Root="HKCR" Key="Keyman.File.Diagnostics\Shell\open" Type="string" Value="&amp;Open" />
<RegistryValue Root="HKCR" Key="Keyman.File.Diagnostics\Shell\open\Command" Type="string" Value='"[#tsysinfo.exe]" "%1"' />
<RegistryValue Root="HKCR" Key="Keyman.File.Diagnostics\Shell\open\Command" Type="string" Value="&quot;[#tsysinfo.exe]&quot; &quot;%1&quot;" />
</Component>
<Component Guid="{4210C15D-0121-40BE-9B09-1576C08C4A78}">
@ -142,51 +140,44 @@
</Component>
<Component Guid="{6B6EF05E-E60A-4902-B5F5-EEB3F8AAB384}">
<File Id="keymanhp.x64.exe" Name='keymanhp.x64.exe' KeyPath="yes" Source="..\..\..\bin\engine\keymanhp.x64.exe" />
<File Id="keymanhp.x64.exe" Name="keymanhp.x64.exe" KeyPath="yes" Source="..\..\..\bin\engine\keymanhp.x64.exe" />
</Component>
<Component Guid="{65E99D02-6B68-4840-BEE2-0FADB0ED67A0}">
<File Id="keymanhp.arm64.exe" Name='keymanhp.arm64.exe' KeyPath="yes" Source="..\..\..\bin\engine\keymanhp.arm64.exe" />
<File Id="keymanhp.arm64.exe" Name="keymanhp.arm64.exe" KeyPath="yes" Source="..\..\..\bin\engine\keymanhp.arm64.exe" />
</Component>
<Component Guid="{FB88ED52-C8F9-44F8-91F2-D0E377504C0D}">
<File Id="mcompile.exe" Name='mcompile.exe' KeyPath="yes" Source="..\..\..\bin\engine\mcompile.exe" />
<File Id="mcompile.exe" Name="mcompile.exe" KeyPath="yes" Source="..\..\..\bin\engine\mcompile.exe" />
</Component>
<Component Guid="{7D3374DC-7B4E-4593-819E-B212E876BDAF}">
<File Id="keymanmc.dll" Name="keymanmc.dll" KeyPath="yes" Source="..\..\..\bin\engine\keymanmc.dll" />
<util:EventSource
CategoryCount="1"
CategoryMessageFile="[#keymanmc.dll]"
EventMessageFile="[#keymanmc.dll]"
Log="Application"
Name="Keyman"
SupportsInformationals="yes"
SupportsErrors="yes"
SupportsWarnings="yes"
/>
<util:EventSource CategoryCount="1" CategoryMessageFile="[#keymanmc.dll]" EventMessageFile="[#keymanmc.dll]" Log="Application" Name="Keyman" SupportsInformationals="yes" SupportsErrors="yes" SupportsWarnings="yes" />
</Component>
<Component Guid="*">
<File Id="kmrefresh.x86.exe" KeyPath="yes" />
<Component Id="kmrefresh.x86.exe">
<File Id="kmrefresh.x86.exe" KeyPath="yes" Source="..\..\..\bin\engine\kmrefresh.x86.exe"/>
</Component>
<Component Guid="*">
<File Id="kmrefresh.x64.exe" KeyPath="yes" />
<Component Id="kmrefresh.x64.exe">
<File Id="kmrefresh.x64.exe" KeyPath="yes" Source="..\..\..\bin\engine\kmrefresh.x64.exe"/>
</Component>
<Component Guid="{FA89BC70-11F3-4DAF-A0B4-6EBA64FC6C5C}" Id="tsysinfo.xslts">
<File Id="base.xslt" Name='base.xslt' Source='..\..\engine\tsysinfo\base.xslt' />
<File Id="si_browsers.xslt" Name='si_browsers.xslt' Source='..\..\engine\tsysinfo\si_browsers.xslt' />
<File Id="si_fonts.xslt" Name='si_fonts.xslt' Source='..\..\engine\tsysinfo\si_fonts.xslt' />
<File Id="si_hookdlls.xslt" Name='si_hookdlls.xslt' Source='..\..\engine\tsysinfo\si_hookdlls.xslt' />
<File Id="si_keyman.xslt" Name='si_keyman.xslt' Source='..\..\engine\tsysinfo\si_keyman.xslt' />
<File Id="si_language.xslt" Name='si_language.xslt' Source='..\..\engine\tsysinfo\si_language.xslt' />
<File Id="si_office.xslt" Name='si_office.xslt' Source='..\..\engine\tsysinfo\si_office.xslt' />
<File Id="si_overview.xslt" Name='si_overview.xslt' Source='..\..\engine\tsysinfo\si_overview.xslt' />
<File Id="si_processes.xslt" Name='si_processes.xslt' Source='..\..\engine\tsysinfo\si_processes.xslt' />
<File Id="si_processes_x64.xslt" Name='si_processes_x64.xslt' Source='..\..\engine\tsysinfo\si_processes_x64.xslt' />
<File Id="si_startup.xslt" Name='si_startup.xslt' Source='..\..\engine\tsysinfo\si_startup.xslt' />
<File Id="base.xslt" Name="base.xslt" Source="..\..\engine\tsysinfo\base.xslt" />
<File Id="si_browsers.xslt" Name="si_browsers.xslt" Source="..\..\engine\tsysinfo\si_browsers.xslt" />
<File Id="si_fonts.xslt" Name="si_fonts.xslt" Source="..\..\engine\tsysinfo\si_fonts.xslt" />
<File Id="si_hookdlls.xslt" Name="si_hookdlls.xslt" Source="..\..\engine\tsysinfo\si_hookdlls.xslt" />
<File Id="si_keyman.xslt" Name="si_keyman.xslt" Source="..\..\engine\tsysinfo\si_keyman.xslt" />
<File Id="si_language.xslt" Name="si_language.xslt" Source="..\..\engine\tsysinfo\si_language.xslt" />
<File Id="si_office.xslt" Name="si_office.xslt" Source="..\..\engine\tsysinfo\si_office.xslt" />
<File Id="si_overview.xslt" Name="si_overview.xslt" Source="..\..\engine\tsysinfo\si_overview.xslt" />
<File Id="si_processes.xslt" Name="si_processes.xslt" Source="..\..\engine\tsysinfo\si_processes.xslt" />
<File Id="si_processes_x64.xslt" Name="si_processes_x64.xslt" Source="..\..\engine\tsysinfo\si_processes_x64.xslt" />
<File Id="si_startup.xslt" Name="si_startup.xslt" Source="..\..\engine\tsysinfo\si_startup.xslt" />
</Component>
<Component Id="kmtip.dll" Guid="{48060517-BD85-494C-B2FF-F9C4FFE1A987}" SharedDllRefCount="yes">
@ -215,8 +206,8 @@
</RegistryKey>
</Component>
<Component Guid="{238931D6-CC32-4C71-8455-887318F2A963}" Id="kmtip_reg_win8">
<Condition>VersionNT &gt;= 602</Condition>
<Component Guid="{238931D6-CC32-4C71-8455-887318F2A963}" Id="kmtip_reg_win8" Condition="VersionNT &gt;= 602">
<RegistryValue KeyPath="yes" Id="registry_win8_keypath" Root="HKLM" Key="Software\Keyman\Keyman Engine" Name="win8 tip install" Value="installed" Type="string" />
@ -234,16 +225,16 @@
</RegistryKey>
</Component>
<Component Id="kmtip64.dll" Guid="{7511B389-24C5-4C79-9050-934791014682}" SharedDllRefCount="yes" Win64="yes">
<Condition>VersionNT64</Condition>
<Component Id="kmtip64.dll" Guid="{7511B389-24C5-4C79-9050-934791014682}" SharedDllRefCount="yes" Condition="VersionNT64" Bitness="always64">
<File Id="kmtip64.dll" Name="kmtip64.dll" KeyPath="yes" Source="..\..\..\bin\engine\kmtip64.dll">
<Class Id="FE0420F1-38D1-4B4C-96BF-E7E20A74CFB7" Context="InprocServer32" ThreadingModel="apartment" Description="Keyman Engine Text Service x64" />
</File>
<!-- we will register post-install? -->
</Component>
<Component Id="kmtiparm64.dll" Guid="{BDF0DAFB-09F9-4121-9859-90E847EA75F8}" SharedDllRefCount="yes" Win64="yes">
<Condition>VersionNT64 AND ProcessorArchitecture="ARM64"</Condition>
<Component Id="kmtiparm64.dll" Guid="{BDF0DAFB-09F9-4121-9859-90E847EA75F8}" SharedDllRefCount="yes" Condition="VersionNTARM64" Bitness="always64">
<File Id="kmtiparm64.dll" Name="kmtiparm64.dll" KeyPath="yes" Source="..\..\..\bin\engine\kmtiparm64.dll">
<Class Id="FE0420F1-38D1-4B4C-96BF-E7E20A74CFB7" Context="InprocServer32" ThreadingModel="apartment" Description="Keyman Engine Text Service ARM64" />
</File>
@ -260,16 +251,16 @@
<ComponentGroup Id="KeymanEngineSentryComponents" Directory="dir_sentry_0.6.0" Source="..\..\..\bin\engine">
<Component Guid="{95AB1B5C-2556-4282-B327-E2E417B26926}">
<File Id="sentry.dll" KeyPath="yes" />
<File Id="sentry.dll" Name="sentry.dll" KeyPath="yes" />
</Component>
<Component Guid="{3E5DACB3-055A-41EC-8890-15A30A40548B}">
<File Id="sentry.x64.dll" KeyPath="yes" />
<File Id="sentry.x64.dll" Name="sentry.x64.dll" KeyPath="yes" />
</Component>
<Component Guid="{B63B5989-7303-469E-AD00-BFAEEE38D1D3}">
<File Id="sentry.arm64.dll" KeyPath="yes" />
<File Id="sentry.arm64.dll" Name="sentry.arm64.dll" KeyPath="yes" />
</Component>
<Component Guid="{AA5AF288-4D67-49F4-A10B-E5725A42599B}">
<File Name="crashpad_handler.exe" KeyPath="yes" />
<File Id="crashpad_handler.exe" Name="crashpad_handler.exe" KeyPath="yes" />
</Component>
</ComponentGroup>
</Fragment>

View file

@ -1,15 +1,23 @@
<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Module Id="engine" Version="$(var.KEYMAN_VERSION)" Language="1033">
<Package Id="{CE38CB16-4448-4432-851B-B3FCE3AF464F}" Keywords="Keyman,Keyboard,Engine"
Description="Keyman Engine $(var.RELEASE)" Comments="Contact: Your local administrator"
Manufacturer="SIL International" InstallerVersion="200" Platform="x86" Languages="1033" SummaryCodepage="1252" />
<Wix xmlns="http://wixtoolset.org/schemas/v4/wxs">
<Module Id="engine" Version="$(var.KEYMAN_VERSION)" Language="1033" Guid="{CE38CB16-4448-4432-851B-B3FCE3AF464F}" InstallerVersion="200"><SummaryInformation Keywords="Keyman,Keyboard,Engine" Description="Keyman Engine $(var.RELEASE)" Manufacturer="SIL International" />
<ComponentGroupRef Id="KeymanEngineComponents" />
<ComponentGroupRef Id="KeymanEngineSentryComponents" />
<Directory Id="TARGETDIR" Name="SourceDir" ComponentGuidGenerationSeed="50d43807-710f-4ed9-b503-637558eb0651">
<Directory Id="CommonFilesFolder">
<CustomAction Id="PreUninstallA" Execute="deferred" Impersonate="no" DllEntry="PreUninstall" BinaryRef="insthelper.dll" />
<CustomAction Id="EnginePostInstall" Execute="deferred" Impersonate="no" DllEntry="EnginePostInstall" BinaryRef="insthelper.dll" />
<InstallExecuteSequence>
<Custom Action="PreUninstallA" After="InstallInitialize" Condition="REMOVE=&quot;ALL&quot; And Not REINSTALL And Not UPGRADINGPRODUCTCODE" />
<Custom Action="EnginePostInstall" Before="InstallFinalize" Condition="NOT Installed OR UPGRADINGPRODUCTCODE Or REINSTALL" />
</InstallExecuteSequence>
<Binary Id="insthelper.dll" SourceFile="..\..\..\bin\engine\insthelper.dll" />
<StandardDirectory Id="CommonFilesFolder">
<Directory Id="KEYMANROOT" Name="Keyman">
<Directory Id="KEYMAN_ENGINE" Name="Keyman Engine">
<Directory Id="INSTALLDIR">
@ -21,30 +29,30 @@
guid rules with merge modules, as we end up with LGHT0231, as the CommonFilesFolder root folder seems to be
ignored when building the merge module. Therefore we list these files in a single component for now. -->
<File Id="osk.xsl" Name="osk.xsl" />
<File Id="keyaltl.gif" Name="key-altl.gif" />
<File Id="keyaltr.gif" Name="key-altr.gif" />
<File Id="keybackspace.gif" Name="key-backspace.gif" />
<File Id="keybkslash.gif" Name="key-bkslash.gif" />
<File Id="keycapslock.gif" Name="key-capslock.gif" />
<File Id="keyctrll.gif" Name="key-ctrll.gif" />
<File Id="keyctrlr.gif" Name="key-ctrlr.gif" />
<File Id="keyenter.gif" Name="key-enter.gif" />
<File Id="keyplain.gif" Name="key-plain.gif" />
<File Id="keyshift102.gif" Name="key-shift102.gif" />
<File Id="keyshiftl.gif" Name="key-shiftl.gif" />
<File Id="keyshiftr.gif" Name="key-shiftr.gif" />
<File Id="keyspace.gif" Name="key-space.gif" />
<File Id="keytab.gif" Name="key-tab.gif" />
<File Id="keyaltl.gif" Name="key-altl.gif" />
<File Id="keyaltr.gif" Name="key-altr.gif" />
<File Id="keybackspace.gif" Name="key-backspace.gif" />
<File Id="keybkslash.gif" Name="key-bkslash.gif" />
<File Id="keycapslock.gif" Name="key-capslock.gif" />
<File Id="keyctrll.gif" Name="key-ctrll.gif" />
<File Id="keyctrlr.gif" Name="key-ctrlr.gif" />
<File Id="keyenter.gif" Name="key-enter.gif" />
<File Id="keyplain.gif" Name="key-plain.gif" />
<File Id="keyshift102.gif" Name="key-shift102.gif" />
<File Id="keyshiftl.gif" Name="key-shiftl.gif" />
<File Id="keyshiftr.gif" Name="key-shiftr.gif" />
<File Id="keyspace.gif" Name="key-space.gif" />
<File Id="keytab.gif" Name="key-tab.gif" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</StandardDirectory>
<Directory Id="CommonAppDataFolder" Name="CADF">
<Directory Id="CommonApp_KeymanRoot" Name="Keyman" >
<StandardDirectory Id="CommonAppDataFolder">
<Directory Id="CommonApp_KeymanRoot" Name="Keyman">
<Directory Id="CommonApp_TS_Keyman" Name="Keyman Engine">
<Directory Id="CommonApp_TS_Keyman_Kbd" Name="Keyboard">
<Directory Id="CommonApp_TS_Keyman_Kbd_Pkg" Name="_Package" />
@ -61,9 +69,9 @@
<RemoveFolder Id="CAD_ts_Keyman_Kbd_Pkg_Uninst" On="uninstall" Directory="CommonApp_TS_Keyman_Kbd_Pkg" />
</Component>
</Directory>
</Directory>
<Directory Id="AppDataFolder" Name="ADF">
<Directory Id="App_KeymanRoot" Name="Keyman" >
</StandardDirectory>
<StandardDirectory Id="AppDataFolder">
<Directory Id="App_KeymanRoot" Name="Keyman">
<Directory Id="App_TS_Keyman" Name="Keyman Engine">
<Directory Id="App_TS_Keyman_Keyboard" Name="Keyboard">
<Directory Id="App_TS_Keyman_Kbd_Pkg" Name="_Package" />
@ -80,18 +88,6 @@
<RemoveFolder Id="AD_ts_Keyman_Kbd_Pkg_Uninst" On="uninstall" Directory="App_TS_Keyman_Kbd_Pkg" />
</Component>
</Directory>
</Directory>
</Directory>
<CustomAction Id="PreUninstallA" Execute="deferred" Impersonate="no" BinaryKey="insthelper.dll" DllEntry="PreUninstall" />
<CustomAction Id="EnginePostInstall" Execute="deferred" Impersonate="no" BinaryKey="insthelper.dll" DllEntry="EnginePostInstall" />
<InstallExecuteSequence>
<Custom Action="PreUninstallA" After="InstallInitialize"><![CDATA[REMOVE="ALL" And Not REINSTALL And Not UPGRADINGPRODUCTCODE]]></Custom>
<Custom Action="EnginePostInstall" Before="InstallFinalize"><![CDATA[NOT Installed OR UPGRADINGPRODUCTCODE Or REINSTALL]]></Custom>
</InstallExecuteSequence>
<Binary Id="insthelper.dll" SourceFile="..\..\..\bin\engine\insthelper.dll" />
</Module>
</StandardDirectory>
</Module>
</Wix>