<?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>
