blob: 1b1384b13b3f9eb22356c18485efd4060efdac3d [file] [log] [blame]
<?xml version='1.0' encoding='utf-8'?>
<!--
Copyright 2010-2015, Google Inc.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following disclaimer
in the documentation and/or other materials provided with the
distribution.
* Neither the name of Google Inc. nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-->
<?ifdef var.MozcVersionFile ?>
<?include $(var.MozcVersionFile) ?>
<?endif?>
<!-- Define variables with default values if not exist. WiX compiler does not
allow to use any undefined variable even when the variable is referenced
between ifdef conditional block. -->
<?ifndef MozcZinniaModelDataPath ?>
<?define MozcZinniaModelDataPath="" ?>
<?endif?>
<?ifndef DebugCrtMergeModuleIdPrefix ?>
<?define DebugCrtMergeModuleIdPrefix="" ?>
<?endif?>
<?ifndef ReleaseCrtMergeModuleIdPrefix ?>
<?define ReleaseCrtMergeModuleIdPrefix="" ?>
<?endif?>
<?ifndef DebugCrtMergeModulePath ?>
<?define DebugCrtMergeModulePath="" ?>
<?endif?>
<?ifndef ReleaseCrtMergeModulePath ?>
<?define ReleaseCrtMergeModulePath="" ?>
<?endif?>
<?ifndef QtCore4DllPath ?>
<?define QtCore4DllPath="" ?>
<?endif?>
<?ifndef QtCored4DllPath ?>
<?define QtCored4DllPath="" ?>
<?endif?>
<?ifndef QtGui4DllPath ?>
<?define QtGui4DllPath="" ?>
<?endif?>
<?ifndef QtGuid4DllPath ?>
<?define QtGuid4DllPath="" ?>
<?endif?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<!--
It appears that Windows Installer emits error on upgrade saying "Another
version of this product is already installed" unless we change the product
ID even when we follow the instructions in "Changing the Product Code"
http://msdn.microsoft.com/en-us/library/aa367850.aspx.
So we change the product ID for every new version.
-->
<Product Name='Google 日本語入力' Id='*'
Language='1041' Codepage='932' Version='$(var.MozcVersion)'
Manufacturer='Google Inc.' UpgradeCode='$(var.UpgradeCode)'>
<Package Keywords='Installer' Description='Google 日本語入力 インストーラー'
Manufacturer='Google Inc.' Languages='1041' SummaryCodepage='932'
InstallerVersion='405' InstallPrivileges='elevated'
Compressed='yes'/>
<!-- Check if the user have the administrative privileges. -->
<Condition
Message='Google 日本語入力をインストールするには管理者権限が必要です。'>
Privileged
</Condition>
<Condition
Message='32-bit 版パッケージを 64-bit 環境にインストールしようとしたためインストールを中止しました。64-bit 版を利用して下さい。'>
(NOT VersionNT64)
</Condition>
<Media Id='1' Cabinet='GoogleJapaneseInput.cab' EmbedCab='yes'
CompressionLevel='high'/>
<!-- Set Add/Remove Program Icon -->
<Icon Id="add_remove_program_icon.ico"
SourceFile="$(var.AddRemoveProgramIconPath)" />
<Property Id="ARPPRODUCTICON"
Value="add_remove_program_icon.ico" />
<!-- Install the product for all users. -->
<Property Id='ALLUSERS' Value='1' />
<!-- Disable Modify and Repair buttons. -->
<Property Id='ARPNOMODIFY' Value='1' />
<Property Id='ARPNOREPAIR' Value='1' />
<!--
A fail-fast mechanism against channel mismatch. Currently we focus on
preventing existing/initial beta users from upgrading/installing
dev package by mistakes in update configuration.
Note that we should allow users to uninstall the product regardless of
the registered channel name. Never remove (REMOVE="ALL") from the
condition below.
-->
<?if ($(var.VSConfigurationName) = "Release") and ($(var.OmahaChannelType) = "dev") ?>
<!-- Retrieves previous channel name for Omaha -->
<Property Id="PREVIOUSCHANNELNAME">
<RegistrySearch Id='OmahaApValue' Type='raw' Root='HKLM'
Key='$(var.OmahaClientStateKey)' Name='ap' Win64='no'>
</RegistrySearch>
</Property>
<Condition
Message='このパッケージは開発版です。配布サーバーの設定ミスの可能性があるため、インストールを中止しました。Google 日本語入力チームまでご連絡下さい。'>
(PREVIOUSCHANNELNAME="external-dev32") OR
(PREVIOUSCHANNELNAME="internal-dev32") OR
(PREVIOUSCHANNELNAME="external-dev-universal") OR
(PREVIOUSCHANNELNAME="internal-dev-universal") OR
(REMOVE="ALL")
</Condition>
<?endif?>
<Directory Id='TARGETDIR' Name='SourceDir'>
<!-- Install CRT DLLs.
Better not to in include policy MSMs.
http://blogs.msdn.com/b/astebner/archive/2007/02/13/building-an-msi-using-wix-v3-0-that-includes-the-vc-8-0-runtime-merge-modules.aspx
-->
<?if $(var.VSConfigurationName) = "Debug" ?>
<?if $(var.DebugCrtMergeModuleIdPrefix) != "" ?>
<Merge Id='$(var.DebugCrtMergeModuleIdPrefix)' Language='0'
DiskId='1' SourceFile='$(var.DebugCrtMergeModulePath)' />
<?endif?>
<?else?>
<?if $(var.ReleaseCrtMergeModuleIdPrefix) != "" ?>
<Merge Id='$(var.ReleaseCrtMergeModuleIdPrefix)' Language='0'
DiskId='1' SourceFile='$(var.ReleaseCrtMergeModulePath)' />
<?endif?>
<?endif?>
<Directory Id='SystemFolder'>
<Component Id='GIMEJaIME32' Guid='*' Permanent='no'>
<File Id='GIMEJa32.ime' Name='GIMEJa.ime'
DiskId='1' Checksum='yes'
Source='$(var.MozcIME32Path)' Vital='yes' />
</Component>
</Directory>
<Directory Id='ProgramFilesFolder' Name='PFiles'>
<Directory Id='GoogleDir' Name='Google'>
<Directory Id='GIMEJaDir' Name='Google Japanese Input'>
<Component Id='GIMEJaConverter' Guid='*'>
<File Id='GoogleIMEJaConverter.exe'
Name='GoogleIMEJaConverter.exe' DiskId='1'
Checksum='yes' Source='$(var.MozcServer32Path)' Vital='yes' />
</Component>
<Component Id='GIMEJaCacheService' Guid='*'>
<File Id='GoogleIMEJaCacheService.exe'
Name='GoogleIMEJaCacheService.exe' DiskId='1'
Checksum='yes' Source='$(var.MozcCacheService32Path)'
Vital='yes' KeyPath='yes' />
<!--
Localized description of a Win32 service is not supported until
Windows Vista.
http://msdn.microsoft.com/en-us/library/ms685156.aspx
To use localized description in Vista or later,
set Description like this:
Description='@[#GoogleIMEJaCacheService.exe],-100'
where 100 is the resource ID for the description.
Parameters 'Name', 'DisplayName', 'Description' have to be
synced manually to the ones defined in cache_manager.
TODO(yukawa): Share these parameters. http://b/2357270
-->
<ServiceInstall Id='GoogleIMEJaCacheService'
Name='GoogleIMEJaCacheService'
DisplayName='Google Japanese Input Cache Service'
Description='Google 日本語入力 の辞書を常に物理メモリに配置し、変換を高速化します。停止しても日本語入力はできますが、パフォーマンスが低下する場合があります。'
Type='ownProcess' Start='auto' ErrorControl='normal' />
<!--
The following entry which stops our cache service both on
installation and uninstallation should be the first entry in
the ServiceControl table. Otherwise, restart manager does not
recognise that the specified service will be stopped during the
instalaltion. See http://b/2440272 for details.
-->
<ServiceControl Id='StopGoogleIMEJaCacheService'
Name='GoogleIMEJaCacheService' Stop='both' Remove='uninstall'
Wait='yes' />
</Component>
<Component Id='GIMEJaTIP32' Guid='*' Permanent='no'>
<File Id='GoogleIMEJaTIP32.dll'
Name='GoogleIMEJaTIP32.dll'
DiskId='1' Checksum='yes'
Source='$(var.MozcTIP32Path)' Vital='yes' />
</Component>
<Component Id='GIMEJaBroker32' Guid='*' Permanent='no'>
<File Id='GoogleIMEJaBroker32.exe'
Name='GoogleIMEJaBroker32.exe'
DiskId='1' Checksum='yes'
Source='$(var.MozcBroker32Path)' Vital='yes' />
</Component>
<Component Id='GIMEJaRenderer' Guid='*'>
<File Id='GoogleIMEJaRenderer.exe'
Name='GoogleIMEJaRenderer.exe' DiskId='1' Vital='yes'
Checksum='yes' Source='$(var.MozcRenderer32Path)' />
</Component>
<Component Id='GIMEJaTool' Guid='*'>
<File Id='GoogleIMEJaTool.exe'
Name='GoogleIMEJaTool.exe' DiskId='1'
Checksum='yes' Source='$(var.MozcToolPath)' Vital='yes' />
</Component>
<?if $(var.MozcZinniaModelDataPath) != "" ?>
<Component Id='ZinniaModelData' Guid='*'>
<File Id='handwriting_ja.model'
Name='handwriting-ja.model' DiskId='1' Vital='yes'
Checksum='yes' Source='$(var.MozcZinniaModelDataPath)' />
</Component>
<?endif?>
<?if $(var.VSConfigurationName) = "Debug" ?>
<?if $(var.QtCored4DllPath) != "" ?>
<Component Id='QtCored4Dll' Guid='*'>
<File Id='QtCored4.dll'
Name='QtCored4.dll' DiskId='1' Vital='yes'
Checksum='yes' Source='$(var.QtCored4DllPath)' />
</Component>
<?endif?>
<?if $(var.QtGuid4DllPath) != "" ?>
<Component Id='QtGuid4Dll' Guid='*'>
<File Id='QtGuid4.dll'
Name='QtGuid4.dll' DiskId='1' Vital='yes'
Checksum='yes' Source='$(var.QtGuid4DllPath)' />
</Component>
<?endif?>
<?else?>
<?if $(var.QtCore4DllPath) != "" ?>
<Component Id='QtCore4Dll' Guid='*'>
<File Id='QtCore4.dll'
Name='QtCore4.dll' DiskId='1' Vital='yes'
Checksum='yes' Source='$(var.QtCore4DllPath)' />
</Component>
<?endif?>
<?if $(var.QtGui4DllPath) != "" ?>
<Component Id='QtGui4Dll' Guid='*'>
<File Id='QtGui4.dll'
Name='QtGui4.dll' DiskId='1' Vital='yes'
Checksum='yes' Source='$(var.QtGui4DllPath)' />
</Component>
<?endif?>
<?endif?>
<Directory Id='DocumentsDir' Name='documents'>
<Component Id='CreditsJa' Guid='*'>
<File Id='credits_ja.html' Name='credits_ja.html' DiskId='1'
Checksum='yes' Vital='yes'
Source='$(var.DocumentsDir)/credits_ja.html' />
</Component>
<Component Id='CreditsEn' Guid='*'>
<File Id='credits_en.html' Name='credits_en.html' DiskId='1'
Checksum='yes' Vital='yes'
Source='$(var.DocumentsDir)/credits_en.html' />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
<!-- Write registry keys to make the installer compatible with Omaha. -->
<Component Id='OmahaRegister' Guid='*'>
<RegistryValue Id='OmahaClientRegPv' Root='HKLM'
Key='$(var.OmahaClientKey)'
Name='pv' Value='$(var.MozcVersion)' Action='write'
Type='string' />
<RegistryValue Id='OmahaClientRegName' Root='HKLM'
Key='$(var.OmahaClientKey)'
Name='name' Value='Google 日本語入力' Action='write'
Type='string' />
<RegistryValue Id='OmahaClientRegLang' Root='HKLM'
Key='$(var.OmahaClientKey)'
Name='lang' Value='ja' Action='write'
Type='string' />
<RegistryValue Id='OmahaClientRegOOPCrashes' Root='HKLM'
Key='$(var.OmahaClientKey)'
Name='oopcrashes' Value='1' Action='write'
Type='integer' />
<!-- enable usagestats for dev channel users -->
<?if ($(var.OmahaChannelType) = "dev") ?>
<RegistryValue Id='OmahaUsageStats' Root='HKLM'
Key='$(var.OmahaClientStateKey)'
Name='usagestats' Value='1' Action='write'
Type='integer' />
<?endif?>
</Component>
<!--
Write registry keys to make sure GoogleIMEJaConverter.exe and
GoogleIMEJaRenderer.exe exit when a user logoff via remote desctop
connection.
-->
<Component Id='SysProcs' Guid='*'>
<RegistryValue Id='SysProcsGIMEJaConverter' Root='HKLM'
Key='SYSTEM\CurrentControlSet\Control\Terminal Server\SysProcs'
Name='GoogleIMEJaConverter.exe' Value='0' Action='write'
Type='integer' />
<RegistryValue Id='SysProcsGIMEJaRenderer' Root='HKLM'
Key='SYSTEM\CurrentControlSet\Control\Terminal Server\SysProcs'
Name='GoogleIMEJaRenderer.exe' Value='0' Action='write'
Type='integer' />
</Component>
<!--
Write registry keys to set an elevation policy of Internet Explorer 7
so that IE does not prompt the user when GoogleIMEJaTool.exe are
launched. See the following link for more information.
http://msdn.microsoft.com/en-us/library/bb250462.aspx
-->
<Component Id='GIMEJaElevationPolicy32' Guid='*'>
<RegistryValue Id='GIMEJaToolElevationPolicyAppPath32' Root='HKLM'
Key='$(var.MozcToolElevationPolicyRegKey)'
Name='AppPath' Action='write' Type='string'
Value='[GIMEJaDir]' />
<RegistryValue Id='GIMEJaToolElevationPolicyAppName32' Root='HKLM'
Key='$(var.MozcToolElevationPolicyRegKey)'
Name='AppName' Action='write' Type='string'
Value='GoogleIMEJaTool.exe' />
<RegistryValue Id='GIMEJaToolElevationPolicyPolicy32' Root='HKLM'
Key='$(var.MozcToolElevationPolicyRegKey)'
Name='Policy' Action='write' Type='integer'
Value='3' />
<RegistryValue Id='GIMEJaBroker32ElevationPolicyAppPath32' Root='HKLM'
Key='$(var.MozcBroker32ElevationPolicyRegKey)'
Name='AppPath' Action='write' Type='string'
Value='[GIMEJaDir]' />
<RegistryValue Id='GIMEJaBroker32ElevationPolicyAppName32' Root='HKLM'
Key='$(var.MozcBroker32ElevationPolicyRegKey)'
Name='AppName' Action='write' Type='string'
Value='GoogleIMEJaBroker32.exe' />
<RegistryValue Id='GIMEJaBroker32ElevationPolicyPolicy32' Root='HKLM'
Key='$(var.MozcBroker32ElevationPolicyRegKey)'
Name='Policy' Action='write' Type='integer'
Value='3' />
</Component>
<Component Id='OmahaRegLaunchCmdLine' Guid='*' Permanent='no'>
<Condition>(NOT UPGRADING)</Condition>
<RegistryValue Id='OmahaLaunchCmdLineValue' Root='HKLM'
Key='$(var.OmahaClientStateKey)'
Name='InstallerSuccessLaunchCmdLine' Action='write' Type='string'
Value='&quot;[GIMEJaDir]GoogleIMEJaTool.exe&quot; --mode=post_install_dialog' />
</Component>
<!--
Write a registry key to launch GoogleIMEJaConverter.exe and
GoogleIMEJaRenderer.exe automatically after user logon.
-->
<Component Id='PrelaunchProcesses' Guid='*'>
<RegistryValue Id='RunBroker' Root='HKLM'
Key='Software\Microsoft\Windows\CurrentVersion\Run'
Name='Google Japanese Input Prelauncher' Action='write' Type='string'
Value='&quot;[GIMEJaDir]GoogleIMEJaBroker32.exe&quot; --mode=prelaunch_processes' />
</Component>
</Directory>
<Upgrade Id='$(var.UpgradeCode)'>
<UpgradeVersion
Minimum='0.0.0.0' IncludeMinimum='yes'
Maximum='$(var.MozcVersion)' IncludeMaximum='no'
OnlyDetect='no' Property='UPGRADING'/>
<UpgradeVersion
Minimum='$(var.MozcVersion)' IncludeMinimum='yes'
OnlyDetect='yes' Property='NEWERVERSIONDETECTED' />
</Upgrade>
<UI>
<Error Id="4000">新しいバージョンの Google 日本語入力が既にインストールされています。</Error>
</UI>
<!-- List of actions to be performed. -->
<?if $(var.VSConfigurationName) = "Debug" ?>
<?if $(var.DebugCrtMergeModuleIdPrefix) != "" ?>
<Feature Id='$(var.DebugCrtMergeModuleIdPrefix)'
Title='Visual C++ Runtime Library' AllowAdvertise='no'
Display='hidden' Level='1'>
<MergeRef Id='$(var.DebugCrtMergeModuleIdPrefix)' />
</Feature>
<?endif?>
<?else?>
<?if $(var.ReleaseCrtMergeModuleIdPrefix) != "" ?>
<Feature Id='$(var.ReleaseCrtMergeModuleIdPrefix)'
Title='Visual C++ Runtime Library' AllowAdvertise='no'
Display='hidden' Level='1'>
<MergeRef Id='$(var.ReleaseCrtMergeModuleIdPrefix)' />
</Feature>
<?endif?>
<?endif?>
<Feature Id='GIMEJaInstall' Title='Google 日本語入力' Level='1'>
<ComponentRef Id='GIMEJaIME32' />
<ComponentRef Id='GIMEJaTIP32' />
<ComponentRef Id='GIMEJaBroker32' />
<ComponentRef Id='GIMEJaConverter' />
<ComponentRef Id='GIMEJaCacheService' />
<ComponentRef Id='GIMEJaRenderer' />
<ComponentRef Id='GIMEJaTool' />
<?if $(var.MozcZinniaModelDataPath) != "" ?>
<ComponentRef Id='ZinniaModelData' />
<?endif?>
<?if $(var.VSConfigurationName) = "Debug" ?>
<?if $(var.QtCored4DllPath) != "" ?>
<ComponentRef Id='QtCored4Dll' />
<?endif?>
<?if $(var.QtGuid4DllPath) != "" ?>
<ComponentRef Id='QtGuid4Dll' />
<?endif?>
<?else?>
<?if $(var.QtCore4DllPath) != "" ?>
<ComponentRef Id='QtCore4Dll' />
<?endif?>
<?if $(var.QtGui4DllPath) != "" ?>
<ComponentRef Id='QtGui4Dll' />
<?endif?>
<?endif?>
<ComponentRef Id='OmahaRegister' />
<ComponentRef Id='OmahaRegLaunchCmdLine' />
<ComponentRef Id='SysProcs' />
<ComponentRef Id='PrelaunchProcesses' />
<ComponentRef Id='GIMEJaElevationPolicy32' />
<ComponentRef Id='CreditsJa' />
<ComponentRef Id='CreditsEn' />
</Feature>
<Binary Id='CustomActions32' SourceFile='$(var.CustomActions32Path)' />
<!--
InstallIME need to be called by an impersonated thread since it
registers per-user settings.
-->
<CustomAction Id='InstallIME' BinaryKey='CustomActions32'
DllEntry='InstallIME' Execute='deferred' Impersonate='yes' />
<CustomAction Id='InstallIMERollback'
BinaryKey='CustomActions32' DllEntry='InstallIMERollback'
Execute='rollback' Impersonate='yes' />
<CustomAction Id='UninstallIME' BinaryKey='CustomActions32'
DllEntry='UninstallIME' Execute='deferred' Impersonate='no' />
<CustomAction Id='UninstallIMERollback'
BinaryKey='CustomActions32' DllEntry='UninstallIMERollback'
Execute='rollback' Impersonate='no' />
<CustomAction Id='RegisterTIP32' BinaryKey='CustomActions32'
DllEntry='RegisterTIP' Execute='deferred' Impersonate='no' />
<CustomAction Id='RegisterTIPRollback32' BinaryKey='CustomActions32'
DllEntry='RegisterTIPRollback' Execute='rollback' Impersonate='no' />
<CustomAction Id='UnregisterTIP32' BinaryKey='CustomActions32'
DllEntry='UnregisterTIP' Execute='deferred' Impersonate='no'
Return='ignore' />
<CustomAction Id='UnregisterTIPRollback32' BinaryKey='CustomActions32'
DllEntry='UnregisterTIPRollback' Execute='rollback' Impersonate='no'
Return='ignore' />
<CustomAction Id='RefreshPolicy' BinaryKey='CustomActions32'
DllEntry='RefreshPolicy' Execute='commit' Impersonate='no' />
<CustomAction Id='OpenUninstallSurveyPage' BinaryKey='CustomActions32'
DllEntry='OpenUninstallSurveyPage' Impersonate='yes' Return='ignore' />
<CustomAction Id='ShutdownServer' BinaryKey='CustomActions32'
DllEntry='ShutdownServer' Impersonate='yes' Return='ignore' />
<CustomAction Id='RestoreUserIMEEnvironment' BinaryKey='CustomActions32'
DllEntry='RestoreUserIMEEnvironment' Impersonate='yes' Return='ignore'/>
<CustomAction Id='EnsureIMEIsDisabledForServiceAccountBeforeUninstall'
BinaryKey='CustomActions32' Execute='deferred'
DllEntry='EnsureIMEIsDisabledForServiceAccount' Impersonate='no'
Return='ignore'/>
<CustomAction Id='EnsureIMEIsDisabledForServiceAccountAfterInstall'
BinaryKey='CustomActions32' Execute='deferred'
DllEntry='EnsureIMEIsDisabledForServiceAccount' Impersonate='no'
Return='ignore'/>
<CustomAction Id='InitialInstallation' BinaryKey='CustomActions32'
DllEntry='InitialInstallation' Execute='deferred'
Impersonate='no' />
<CustomAction Id='InitialInstallationCommit' BinaryKey='CustomActions32'
DllEntry='InitialInstallationCommit' Execute='commit'
Impersonate='no' />
<CustomAction Id='HideCancelButton' BinaryKey='CustomActions32'
DllEntry='HideCancelButton' Return='ignore' />
<CustomAction Id='SaveCustomActionData' BinaryKey='CustomActions32'
DllEntry='SaveCustomActionData' />
<CustomAction Id='RestoreServiceState' BinaryKey='CustomActions32'
DllEntry='RestoreServiceState' Impersonate='no' Execute='deferred'
Return='ignore' />
<CustomAction Id='StopCacheServiceForRollback' BinaryKey='CustomActions32'
DllEntry='StopCacheService' Impersonate='no'
Execute='rollback' Return='ignore' />
<CustomAction Id='WriteApValue' BinaryKey='CustomActions32'
DllEntry='WriteApValue' Execute='deferred' Impersonate='no' />
<CustomAction Id='WriteApValueRollback' BinaryKey='CustomActions32'
DllEntry='WriteApValueRollback' Execute='rollback' Impersonate='no' />
<CustomAction Id="NewerVersionError" Error="4000"/>
<InstallExecuteSequence>
<Custom Action='HideCancelButton' After='InitialInstallation' />
<Custom Action='InitialInstallation' After='InstallInitialize'>
(NOT (REMOVE="ALL")) AND (NOT UPGRADING)
</Custom>
<Custom Action='SaveCustomActionData' Before='StopServices' >
(NOT (REMOVE="ALL"))
</Custom>
<Custom Action='WriteApValueRollback' Before='WriteApValue' >
(NOT (REMOVE="ALL"))
</Custom>
<Custom Action='WriteApValue' Before='SelfUnregModules' >
(NOT (REMOVE="ALL"))
</Custom>
<SelfUnregModules />
<Custom Action='RestoreUserIMEEnvironment' After='SelfUnregModules'>
(REMOVE="ALL") AND (NOT UPGRADINGPRODUCTCODE)
</Custom>
<!--
EnsureIMEIsDisabledForServiceAccountBeforeUninstall should be invoked
before Mozc's KLID is removed, which means you should call this action
before UninstallIME.
-->
<Custom Action='EnsureIMEIsDisabledForServiceAccountBeforeUninstall'
After='RestoreUserIMEEnvironment' >
(REMOVE="ALL") AND (NOT UPGRADINGPRODUCTCODE)
</Custom>
<!-- This action invoked only when removal of the old product failed. -->
<Custom Action='UninstallIMERollback'
After='EnsureIMEIsDisabledForServiceAccountBeforeUninstall' >
(REMOVE="ALL") AND UPGRADINGPRODUCTCODE
</Custom>
<Custom Action='UninstallIME' After='UninstallIMERollback' >
(REMOVE="ALL") AND (NOT UPGRADINGPRODUCTCODE)
</Custom>
<!-- This action invoked only when removal of the old product failed. -->
<Custom Action='UnregisterTIPRollback32' After='UninstallIME' >
(REMOVE="ALL") AND UPGRADINGPRODUCTCODE AND (VersionNT &gt;= 602)
</Custom>
<Custom Action='UnregisterTIP32' After='UnregisterTIPRollback32' >
(REMOVE="ALL") AND (NOT UPGRADINGPRODUCTCODE) AND (VersionNT &gt;= 602)
</Custom>
<Custom Action='OpenUninstallSurveyPage' After='UnregisterTIP32' >
(REMOVE="ALL") AND (NOT UPGRADINGPRODUCTCODE) AND (UILevel &gt;= 3)
</Custom>
<SelfRegModules />
<Custom Action='RefreshPolicy' After='SelfRegModules'>
(NOT (REMOVE="ALL")) AND (VersionNT &gt;= 600)
</Custom>
<!--
The InstallValidate action notifies the user
if GoogleIMEJaConverter.exe and GoogleIMEJaRenderer.exe
are currenly running. So the ShutdownServer action
needs to be callled before the InstallValidate action.
-->
<Custom Action='ShutdownServer' Before='InstallValidate' >
(REMOVE="ALL") AND (NOT UPGRADINGPRODUCTCODE)
</Custom>
<Custom Action='NewerVersionError' After='FindRelatedProducts'>
NEWERVERSIONDETECTED
</Custom>
<!--
RemoveExistingProducts needs to be scheduled between InstallExecute and
InstallFinalize to correctly deal with errors which occur when the old
product is removed on upgrade.
http://msdn.microsoft.com/en-us/library/aa371197(VS.85).aspx
-->
<InstallExecute Before='RemoveExistingProducts' />
<RemoveExistingProducts Before='StopCacheServiceForRollback' />
<!--
When the installer enters rollback mode, the cache service should be
stopped before RemoveExistingProducts is invoked.
-->
<Custom Action='StopCacheServiceForRollback' Before='RestoreServiceState'>
(NOT (REMOVE="ALL"))
</Custom>
<Custom Action='RestoreServiceState' Before='InstallIMERollback'>
(NOT (REMOVE="ALL"))
</Custom>
<!--
If error occurs after InstallIME,
the registration needs to be canceled by registering the old product.
So InstallIME needs to be scheduled after RemoveExistingProduct.
-->
<Custom Action='InstallIMERollback' Before='InstallIME' >
(NOT (REMOVE="ALL")) AND (VersionNT &lt; 602) AND (NOT UPGRADING)
</Custom>
<Custom Action='InstallIME' Before='RegisterTIPRollback32' >
(NOT (REMOVE="ALL")) AND (VersionNT &lt; 602)
</Custom>
<Custom Action='RegisterTIPRollback32' Before='RegisterTIP32' >
(NOT (REMOVE="ALL")) AND (VersionNT &gt;= 602) AND (NOT UPGRADING)
</Custom>
<Custom Action='RegisterTIP32' Before='EnsureIMEIsDisabledForServiceAccountAfterInstall' >
(NOT (REMOVE="ALL")) AND (VersionNT &gt;= 602)
</Custom>
<Custom Action='EnsureIMEIsDisabledForServiceAccountAfterInstall'
Before='InstallFinalize' >
(NOT (REMOVE="ALL"))
</Custom>
<Custom Action='InitialInstallationCommit'
After='EnsureIMEIsDisabledForServiceAccountAfterInstall'>
(NOT (REMOVE="ALL")) AND (NOT UPGRADING)
</Custom>
<!-- show reboot dialog to execute pending file opartions -->
<?if ($(var.VSConfigurationName) = "Release") ?>
<ScheduleReboot After='InstallFinalize'>
(REMOVE="ALL")
</ScheduleReboot>
<?endif?>
</InstallExecuteSequence>
</Product>
</Wix>