| <?xml version="1.0"?> |
| <Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> |
| <!-- Note: Including Win64 components in a 32-bit installer usually triggers |
| a consistency error. We suppress that error in our build to allow the |
| installer to set 64-bit registry keys on 64-bit Windows. Care must be |
| taken when adding Win64 components to ensure they are not installed on |
| 32-bit Windows. --> |
| |
| <?define EventSourceName = "chromoting" ?> |
| <?define ServiceName = "chromoting" ?> |
| |
| <!-- TODO(alexeypa): There strings should be localized, |
| see http://crbug.com/121785 --> |
| <?if $(var.Branding) ~= Chrome ?> |
| <?define ChromotingHost = "Chrome Remote Desktop Host" ?> |
| <?define Manufacturer = "Google Inc." ?> |
| <?else?> |
| <?define ChromotingHost = "Chromoting Host" ?> |
| <?define Manufacturer = "The Chromium Authors" ?> |
| <?endif?> |
| |
| <?if $(sys.BUILDARCH) = "x64" ?> |
| <?define ProgramFilesFolderForPlatform = "ProgramFiles64Folder" ?> |
| <?else?> |
| <?define ProgramFilesFolderForPlatform = "ProgramFilesFolder" ?> |
| <?endif?> |
| |
| <?if $(var.OfficialBuild) != 0 ?> |
| <?define ChromotingKeyPath = "Google\Chrome Remote Desktop" ?> |
| <?else?> |
| <?define ChromotingKeyPath = "Chromoting" ?> |
| <?endif?> |
| |
| <?define FirewallName = "$(var.ChromotingHost)" ?> |
| |
| <?define OmahaAppid = "{b210701e-ffc4-49e3-932b-370728c72662}" ?> |
| <?define UpgradeCode = "2b21f767-e157-4fa6-963c-55834c1433a6" ?> |
| |
| <?define CoreBinary = "remoting_core.dll" ?> |
| <?define HostBinary = "remoting_host.exe" ?> |
| <?define RemoteSecurityKeyBinary = "remote_security_key.exe" ?> |
| |
| <?define ChromotingTypelib = "{b6396c45-b0cc-456b-9f49-f12964ee6df4}" ?> |
| |
| <!-- AppIDs used by the COM components. --> |
| <?define RdpAppid = "{52e6fd1a-f16e-49c0-aacb-5436a915448b}" ?> |
| |
| <?define IRdpDesktopSessionId = "{6a7699f0-ee43-43e7-aa30-a6738f9bd470}" ?> |
| <?define IRdpDesktopSessionEventHandlerId = |
| "{b59b96da-83cb-40ee-9b91-c377400fc3e3}" ?> |
| |
| <!-- |
| The long hex value(s) below are security descriptors generated from SDDL |
| definition using the PowerShell script below: |
| |
| $sddl = "<SDDL definition goes here>" |
| $i = ([wmiclass]"Win32_SecurityDescriptorHelper").SDDLToBinarySD($sddl).BinarySD |
| -join ($i | foreach {$_.ToString("X2")}) |
| --> |
| |
| <!-- |
| A security descriptor that gives SYSTEM, built-in administrators and |
| LocalService accounts COM_RIGHTS_EXECUTE, COM_RIGHTS_EXECUTE_LOCAL, and |
| COM_RIGHTS_ACTIVATE_LOCAL rights. It specifies a mandatory label that |
| specifies "no execute up" policy for medium integrity level. |
| |
| $sddl = "O:BAG:BAD:(A;;0xb;;;SY)(A;;0xb;;;BA)(A;;0xb;;;LS)S:(ML;;NX;;;ME)" |
| --> |
| <?define RdpSd = "010014807800000088000000140000003000000002001C000100000011001400040000000101000000000010002000000200480003000000000014000B000000010100000000000512000000000018000B00000001020000000000052000000020020000000014000B0000000101000000000005130000000102000000000005200000002002000001020000000000052000000020020000" ?> |
| |
| <!-- Verify that all required parameters are defined. --> |
| <?ifndef RdpDesktopSessionClsid ?> |
| <?error RdpDesktopSessionClsid must be defined ?> |
| <?endif?> |
| |
| <?ifndef Version ?> |
| <?error Version must be defined ?> |
| <?endif?> |
| |
| <Product Id="*" |
| Language="1033" |
| Manufacturer="$(var.Manufacturer)" |
| Name="$(var.ChromotingHost)" |
| UpgradeCode="$(var.UpgradeCode)" |
| Version="$(var.Version)"> |
| |
| <Package Comments="$(var.ChromotingHost) Package" |
| Compressed="yes" |
| Description="$(var.ChromotingHost) Package" |
| InstallerVersion="200" |
| Manufacturer="$(var.Manufacturer)" |
| InstallScope="perMachine"/> |
| |
| <PropertyRef Id="WIX_ACCOUNT_LOCALSYSTEM" /> |
| <PropertyRef Id="WIX_ACCOUNT_ADMINISTRATORS" /> |
| |
| <Condition |
| Message="$(var.ChromotingHost) is only supported on Windows 7 and above."> |
| <![CDATA[Installed OR (VersionNT >= 601)]]> |
| </Condition> |
| |
| <!-- The upgrade rules below could be expressed with MajorUpgrade element. |
| Unfortunately, there is a bug in WiX decompiler (Dark) corrupting |
| InstallExecuteSequence table. The installation compiled from |
| the disassembled .msi schedules RemoveExistingProducts after |
| InstallFinalize while the original installation schedules it after |
| InstallInitialize. Fortunately, the verbose version of the upgrade |
| rules below decompiles correctly, so we use it instead. |
| See http://crbug.com/145265 for more details. |
| --> |
| <Upgrade Id="$(var.UpgradeCode)"> |
| <UpgradeVersion IncludeMinimum="no" |
| Minimum="$(var.Version)" |
| OnlyDetect="yes" |
| Property="NEWERVERSIONDETECTED" /> |
| <UpgradeVersion IncludeMaximum="yes" |
| IncludeMinimum="yes" |
| Maximum="$(var.Version)" |
| Minimum="0.0.0.0" |
| Property="OLDERVERSIONBEINGUPGRADED" /> |
| <!-- Detect versions that didn't handle the usagestats value properly. --> |
| <UpgradeVersion IncludeMaximum="yes" |
| IncludeMinimum="yes" |
| Maximum="24.0.1312.29" |
| Minimum="0.0.0.0" |
| Property="BROKENUSAGESTATSVERSION" /> |
| </Upgrade> |
| |
| <Condition Message="A later version of [ProductName] is already installed. Setup will now exit."> |
| NOT NEWERVERSIONDETECTED |
| </Condition> |
| |
| <Media Id="1" Cabinet="chromoting.cab" EmbedCab="yes"/> |
| |
| <Directory Id="TARGETDIR" Name="SourceDir"> |
| <Directory Id="$(var.ProgramFilesFolderForPlatform)"> |
| <?if $(var.OfficialBuild) != 0 ?> |
| <Directory Id="program_files_google" Name="Google"> |
| <Directory Id="chromoting" Name="Chrome Remote Desktop"> |
| <Directory Id="binaries" Name="$(var.Version)"/> |
| </Directory> |
| </Directory> |
| <?else?> |
| <Directory Id="chromoting" Name="Chromoting"> |
| <Directory Id="binaries" Name="$(var.Version)"/> |
| </Directory> |
| <?endif?> |
| </Directory> |
| <Directory Id="CommonAppDataFolder"> |
| <?if $(var.OfficialBuild) != 0 ?> |
| <Directory Id="common_app_data_google" Name="Google"> |
| <Directory Id="config_files" Name="Chrome Remote Desktop"/> |
| </Directory> |
| <?else?> |
| <Directory Id="config_files" Name="Chromoting"/> |
| <?endif?> |
| </Directory> |
| </Directory> |
| |
| <DirectoryRef Id="binaries"> |
| <Component Id="credits" Guid="*"> |
| <File Id="CREDITS.txt" |
| DiskId="1" |
| Name="CREDITS.txt" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="remoting_core" Guid="*"> |
| <File Id="$(var.CoreBinary)" |
| DiskId="1" |
| KeyPath="yes" |
| Name="$(var.CoreBinary)" |
| Vital="yes"/> |
| |
| <util:EventSource xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" |
| Name="$(var.EventSourceName)" |
| Log="Application" |
| CategoryCount="1" |
| CategoryMessageFile="[#$(var.CoreBinary)]" |
| EventMessageFile="[#$(var.CoreBinary)]" |
| SupportsErrors="yes" |
| SupportsInformationals="yes"/> |
| </Component> |
| |
| <Component Id="remoting_desktop" Guid="*"> |
| <File Id="remoting_desktop.exe" |
| DiskId="1" |
| KeyPath="yes" |
| Name="remoting_desktop.exe" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="remoting_native_messaging_host" Guid="*"> |
| <File Id="remoting_native_messaging_host.exe" |
| DiskId="1" |
| KeyPath="yes" |
| Name="remoting_native_messaging_host.exe" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="remoting_start_host" Guid="*"> |
| <File Id="remoting_start_host.exe" |
| DiskId="1" |
| KeyPath="yes" |
| Name="remoting_start_host.exe" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="remote_assistance_host" Guid="*"> |
| <File Id="remote_assistance_host.exe" |
| DiskId="1" |
| KeyPath="yes" |
| Name="remote_assistance_host.exe" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="remote_assistance_host_uiaccess" Guid="*"> |
| <File Id="remote_assistance_host_uiaccess.exe" |
| DiskId="1" |
| KeyPath="yes" |
| Name="remote_assistance_host_uiaccess.exe" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="native_messaging_host_manifest" Guid="*"> |
| <File Id="com.google.chrome.remote_desktop.json" |
| DiskId="1" |
| KeyPath="yes" |
| Name="com.google.chrome.remote_desktop.json" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="native_messaging_host_firefox_manifest" Guid="*"> |
| <File Id="com.google.chrome.remote_desktop_firefox.json" |
| DiskId="1" |
| KeyPath="yes" |
| Name="com.google.chrome.remote_desktop-firefox.json" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="remote_assistance_host_manifest" Guid="*"> |
| <File Id="com.google.chrome.remote_assistance.json" |
| DiskId="1" |
| KeyPath="yes" |
| Name="com.google.chrome.remote_assistance.json" |
| Vital="yes"/> |
| </Component> |
| |
| |
| <Component Id="remote_assistance_host_firefox_manifest" Guid="*"> |
| <File Id="com.google.chrome.remote_assistance_firefox.json" |
| DiskId="1" |
| KeyPath="yes" |
| Name="com.google.chrome.remote_assistance-firefox.json" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="icudtl" Guid="*"> |
| <File Id="icudtl.dat" |
| DiskId="1" |
| KeyPath="yes" |
| Name="icudtl.dat" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="remoting_host" Guid="*"> |
| <File Id="remoting_host.exe" |
| DiskId="1" |
| Name="remoting_host.exe" |
| Vital="yes"/> |
| |
| <ServiceInstall Id="install_service" |
| Type="ownProcess" |
| Vital="yes" |
| Name="$(var.ServiceName)" |
| DisplayName="[chromoting_service_display_name]" |
| Description="[chromoting_service_description]" |
| Arguments="--type=daemon --host-config="[config_files]host.json"" |
| Start="demand" |
| Account="LocalSystem" |
| ErrorControl="ignore" |
| Interactive="no"> |
| <!-- Configure the service to restart after one minute when it |
| crashes. |
| --> |
| <util:ServiceConfig |
| xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" |
| FirstFailureActionType="restart" |
| ResetPeriodInDays="1" |
| RestartServiceDelayInSeconds="60" |
| SecondFailureActionType="restart" |
| ThirdFailureActionType="restart"/> |
| </ServiceInstall> |
| |
| <ServiceControl Id="start_service" |
| Stop="both" |
| Remove="uninstall" |
| Name="$(var.ServiceName)" |
| Wait="yes" /> |
| |
| <fire:FirewallException xmlns:fire="http://schemas.microsoft.com/wix/FirewallExtension" |
| Id="me2me_firewall_exception" |
| IgnoreFailure="yes" |
| Name="$(var.FirewallName)" |
| Profile="all" |
| Program="[#remoting_host.exe]" |
| Scope="any" /> |
| </Component> |
| |
| <Component Id="remote_security_key" Guid="*"> |
| <File Id="$(var.RemoteSecurityKeyBinary)" |
| DiskId="1" |
| KeyPath="yes" |
| Name="$(var.RemoteSecurityKeyBinary)" |
| Vital="yes"/> |
| </Component> |
| |
| <Component Id="remote_security_key_registration" Guid="*"> |
| <RegistryKey Id="remote_security_key_reg_key" |
| Root="HKLM" |
| Key="SOFTWARE\Google\SecurityKey" |
| Action="create"> |
| <RegistryValue Type="string" |
| Name="RemoteSecurityKeyPath" |
| Value="[binaries]$(var.RemoteSecurityKeyBinary)"/> |
| </RegistryKey> |
| </Component> |
| |
| <?if $(var.OfficialBuild) != 0 ?> |
| <Component Id="omaha_registration" Guid="*"> |
| <RegistryKey Id="omaha_client_key" |
| Root="HKLM" |
| Key="SOFTWARE\Google\Update\Clients\$(var.OmahaAppid)" |
| Action="create"> |
| <RegistryValue Type="string" |
| Name="pv" |
| Value="$(var.Version)"/> |
| |
| <RegistryValue Type="string" |
| Name="name" |
| Value="$(var.ChromotingHost)"/> |
| </RegistryKey> |
| </Component> |
| <?endif?> |
| |
| <Component Id="remoting_lib" Guid="*"> |
| <RegistryKey Root="HKLM" |
| Key="SOFTWARE\Classes"> |
| <RegistryKey Key="AppId"> |
| <RegistryKey Key="$(var.RdpAppid)" Action="create"> |
| <RegistryValue Type="string" |
| Value="ChromotingRdpDesktopSession"/> |
| <RegistryValue Name="AccessPermission" |
| Type="binary" |
| Value="$(var.RdpSd)"/> |
| <RegistryValue Name="LaunchPermission" |
| Type="binary" |
| Value="$(var.RdpSd)"/> |
| <RegistryValue Name="RunAs" |
| Type="string" |
| Value="NT AUTHORITY\LocalService"/> |
| </RegistryKey> |
| |
| </RegistryKey> |
| |
| <RegistryKey Key="CLSID"> |
| <RegistryKey Key="$(var.RdpDesktopSessionClsid)" Action="create"> |
| <RegistryValue Type="string" |
| Value="RdpDesktopSession Class"/> |
| |
| <RegistryValue Type="string" |
| Name="AppID" |
| Value="$(var.RdpAppid)"/> |
| |
| <RegistryKey Key="LocalServer32" Action="create"> |
| <RegistryValue Type="string" |
| Value="[binaries]$(var.HostBinary) --type=rdp_desktop_session"/> |
| </RegistryKey> |
| |
| <RegistryKey Key="TypeLib" Action="create"> |
| <RegistryValue Type="string" |
| Value="$(var.ChromotingTypelib)"/> |
| </RegistryKey> |
| </RegistryKey> |
| |
| <!-- IRdpDesktopSession PSFactory --> |
| <RegistryKey Key="$(var.IRdpDesktopSessionId)" |
| Action="create"> |
| <RegistryValue Type="string" |
| Value="IRdpDesktopSession PSFactory"/> |
| |
| <RegistryKey Key="InprocServer32" Action="create"> |
| <RegistryValue Type="string" |
| Value="[binaries]$(var.CoreBinary)"/> |
| </RegistryKey> |
| </RegistryKey> |
| |
| <!-- IRdpDesktopSessionEventHandler PSFactory --> |
| <RegistryKey Key="$(var.IRdpDesktopSessionEventHandlerId)" |
| Action="create"> |
| <RegistryValue Type="string" |
| Value="IRdpDesktopSessionEventHandler PSFactory"/> |
| |
| <RegistryKey Key="InprocServer32" Action="create"> |
| <RegistryValue Type="string" |
| Value="[binaries]$(var.CoreBinary)"/> |
| </RegistryKey> |
| </RegistryKey> |
| </RegistryKey> |
| |
| <RegistryKey Key="Interface"> |
| <!-- IDaemonControl2 interface --> |
| <RegistryKey Key="{655bd819-c08c-4b04-80c2-f160739ff6ef}" |
| Action="create"> |
| <RegistryKey Key="ProxyStubClsid32" Action="create"> |
| <RegistryValue Type="string" |
| Value="{00020424-0000-0000-C000-000000000046}"/> |
| </RegistryKey> |
| |
| <RegistryKey Key="TypeLib" Action="create"> |
| <RegistryValue Type="string" |
| Value="$(var.ChromotingTypelib)"/> |
| </RegistryKey> |
| </RegistryKey> |
| |
| <!-- IDaemonControl interface --> |
| <RegistryKey Key="{e051a481-6345-4ba1-bdb1-cf7929955268}" |
| Action="create"> |
| <RegistryKey Key="ProxyStubClsid32" Action="create"> |
| <RegistryValue Type="string" |
| Value="{00020424-0000-0000-C000-000000000046}"/> |
| </RegistryKey> |
| |
| <RegistryKey Key="TypeLib" Action="create"> |
| <RegistryValue Type="string" |
| Value="$(var.ChromotingTypelib)"/> |
| </RegistryKey> |
| </RegistryKey> |
| |
| <!-- IRdpDesktopSession interface --> |
| <RegistryKey Key="$(var.IRdpDesktopSessionId)" |
| Action="create"> |
| <RegistryValue Type="string" |
| Value="IRdpDesktopSession"/> |
| <RegistryKey Key="ProxyStubClsid32" Action="create"> |
| <RegistryValue Type="string" |
| Value="$(var.IRdpDesktopSessionId)"/> |
| </RegistryKey> |
| </RegistryKey> |
| |
| <!-- IRdpDesktopSessionEventHandler interface --> |
| <RegistryKey Key="$(var.IRdpDesktopSessionEventHandlerId)" |
| Action="create"> |
| <RegistryValue Type="string" |
| Value="IRdpDesktopSessionEventHandler"/> |
| <RegistryKey Key="ProxyStubClsid32" Action="create"> |
| <RegistryValue Type="string" |
| Value="$(var.IRdpDesktopSessionEventHandlerId)"/> |
| </RegistryKey> |
| |
| <RegistryKey Key="TypeLib" Action="create"> |
| <RegistryValue Type="string" |
| Value="$(var.ChromotingTypelib)"/> |
| </RegistryKey> |
| </RegistryKey> |
| </RegistryKey> |
| |
| <RegistryKey Key="Typelib"> |
| <RegistryKey Key="$(var.ChromotingTypelib)" Action="create"> |
| <RegistryKey Key="1.0" Action="create"> |
| <RegistryValue Type="string" |
| Value="Chromoting 1.0 Type Library"/> |
| <RegistryKey Key="0" Action="create"> |
| <RegistryKey Key="win32" Action="create"> |
| <RegistryValue Type="string" |
| Value="[binaries]$(var.CoreBinary)"/> |
| </RegistryKey> |
| </RegistryKey> |
| |
| <RegistryKey Key="FLAGS" Action="create"> |
| <RegistryValue Type="string" |
| Value="0"/> |
| </RegistryKey> |
| |
| <RegistryKey Key="HELPDIR" Action="create"> |
| <RegistryValue Type="string" |
| Value="[binaries]"/> |
| </RegistryKey> |
| </RegistryKey> |
| </RegistryKey> |
| </RegistryKey> |
| </RegistryKey> |
| |
| </Component> |
| |
| <!-- Creates the pairing registry store and protect it with an ACL. --> |
| <Component Id="remoting_pairing_registry" Guid="960bc7eb-a816-428b-90e8-ad13336955d5"> |
| <RegistryKey Root="HKLM" |
| Key="SOFTWARE\$(var.ChromotingKeyPath)\paired-clients" |
| Action="create"> |
| <RegistryKey Key="clients" Action="create"/> |
| <RegistryKey Key="secrets" Action="create"> |
| <!-- Gives full access to SYSTEM only. --> |
| <!-- Cannot use the builtin PermissionEx element because it maps |
| to the MsiLockPermissionsEx table which is not supported on |
| Windows Installer version 4.5 or lower. Also Cannot use |
| PermissionEx in WixUtilExtension because it automatically |
| inherits all the ACLs from the parent. --> |
| <Permission User="[WIX_ACCOUNT_LOCALSYSTEM]" |
| GenericAll="yes" |
| ChangePermission="yes" |
| TakeOwnership="yes"/> |
| <Permission User="[WIX_ACCOUNT_ADMINISTRATORS]" |
| GenericAll="yes" |
| ChangePermission="yes" |
| TakeOwnership="yes"/> |
| </RegistryKey> |
| </RegistryKey> |
| <CreateFolder/> |
| </Component> |
| |
| <Component Id="native_messaging_host_registry" Guid="*"> |
| <RegistryKey Root="HKLM" |
| Key="SOFTWARE\Google\chrome\NativeMessagingHosts" |
| Action="create"> |
| <RegistryKey Key="com.google.chrome.remote_desktop" Action="create"> |
| <RegistryValue |
| Type="string" |
| Value="[binaries]com.google.chrome.remote_desktop.json"/> |
| </RegistryKey> |
| </RegistryKey> |
| <CreateFolder/> |
| </Component> |
| |
| <!-- Firefox requires the key to be installed in the native registry --> |
| <Component Id="native_messaging_host_firefox_registry_win32" |
| Guid="*" |
| Win64="no"> |
| <Condition>NOT Msix64</Condition> |
| <RegistryKey Root="HKLM" |
| Key="SOFTWARE\Mozilla\NativeMessagingHosts" |
| Action="create"> |
| <RegistryKey Key="com.google.chrome.remote_desktop" Action="create"> |
| <RegistryValue |
| Type="string" |
| Value="[binaries]com.google.chrome.remote_desktop-firefox.json"/> |
| </RegistryKey> |
| </RegistryKey> |
| <CreateFolder/> |
| </Component> |
| |
| <Component Id="native_messaging_host_firefox_registry_win64" |
| Guid="*" |
| Win64="yes"> |
| <Condition>Msix64</Condition> |
| <RegistryKey Root="HKLM" |
| Key="SOFTWARE\Mozilla\NativeMessagingHosts" |
| Action="create"> |
| <RegistryKey Key="com.google.chrome.remote_desktop" Action="create"> |
| <RegistryValue |
| Type="string" |
| Value="[binaries]com.google.chrome.remote_desktop-firefox.json"/> |
| </RegistryKey> |
| </RegistryKey> |
| <CreateFolder/> |
| </Component> |
| |
| <Component Id="remote_assistance_host_registry" Guid="*"> |
| <RegistryKey Root="HKLM" |
| Key="SOFTWARE\Google\chrome\NativeMessagingHosts" |
| Action="create"> |
| <RegistryKey Key="com.google.chrome.remote_assistance" |
| Action="create"> |
| <RegistryValue |
| Type="string" |
| Value="[binaries]com.google.chrome.remote_assistance.json"/> |
| </RegistryKey> |
| </RegistryKey> |
| <CreateFolder/> |
| </Component> |
| |
| <Component Id="remote_assistance_host_firefox_registry_win32" |
| Guid="*" |
| Win64="no"> |
| <Condition>NOT Msix64</Condition> |
| <RegistryKey Root="HKLM" |
| Key="SOFTWARE\Mozilla\NativeMessagingHosts" |
| Action="create"> |
| <RegistryKey Key="com.google.chrome.remote_assistance" |
| Action="create"> |
| <RegistryValue |
| Type="string" |
| Value="[binaries]com.google.chrome.remote_assistance-firefox.json"/> |
| </RegistryKey> |
| </RegistryKey> |
| <CreateFolder/> |
| </Component> |
| |
| <Component Id="remote_assistance_host_firefox_registry_win64" |
| Guid="*" |
| Win64="yes"> |
| <Condition>Msix64</Condition> |
| <RegistryKey Root="HKLM" |
| Key="SOFTWARE\Mozilla\NativeMessagingHosts" |
| Action="create"> |
| <RegistryKey Key="com.google.chrome.remote_assistance" |
| Action="create"> |
| <RegistryValue |
| Type="string" |
| Value="[binaries]com.google.chrome.remote_assistance-firefox.json"/> |
| </RegistryKey> |
| </RegistryKey> |
| <CreateFolder/> |
| </Component> |
| |
| <!-- Delete the usagestats flag to reset the crash dump reporting settings |
| for existing users. --> |
| <Component Id="delete_usagestats" |
| Guid="5c73f2b9-b865-426f-81cc-90a27ebb54aa" |
| KeyPath="yes"> |
| <Condition>BROKENUSAGESTATSVERSION</Condition> |
| <RemoveRegistryValue |
| Id="usagestats" |
| Key="SOFTWARE\Google\Update\ClientStateMedium\$(var.OmahaAppid)" |
| Name="usagestats" |
| Root="HKLM" /> |
| </Component> |
| |
| </DirectoryRef> |
| |
| <!-- Register with Sawbuck. See http://code.google.com/p/sawbuck/. --> |
| <DirectoryRef Id="TARGETDIR"> |
| <Component Id="sawbuck_provider" Guid="*" Win64="no"> |
| <RegistryKey Root="HKLM" |
| Key="SOFTWARE\Google\Sawbuck\Providers"> |
| <RegistryKey Key="{2db51ca1-4fd8-4b88-b5a2-fb8606b66b02}" |
| Action="create"> |
| <RegistryValue Type="string" Value="Chromoting"/> |
| <RegistryValue Name="default_flags" Type="integer" Value="1"/> |
| <RegistryValue Name="default_level" Type="integer" Value="4"/> |
| <RegistryKey Key="Flags" Action="create"> |
| <RegistryKey Key="Stack Trace" Action="create"> |
| <RegistryValue Type="integer" Value="1"/> |
| </RegistryKey> |
| <RegistryKey Key="Text Only" Action="create"> |
| <RegistryValue Type="integer" Value="2"/> |
| </RegistryKey> |
| </RegistryKey> |
| </RegistryKey> |
| </RegistryKey> |
| </Component> |
| </DirectoryRef> |
| |
| <DirectoryRef Id="config_files"> |
| <!-- Delete debug.log from previous versions --> |
| <Component Id="delete_debug_log" |
| Guid="b309082a-e6fa-4dc7-98e4-3d83c896561d"> |
| <RemoveFile Id="debug.log" |
| Name="debug.log" |
| On="both" /> |
| </Component> |
| </DirectoryRef> |
| |
| <!-- The service is always installed in the stopped state with start type |
| set to 'manual'. This becomes a problem when upgrading an existing |
| installation that is configured to start the service automatically. |
| |
| Here we check the startup type before making any changes, then restart |
| the service as needed once the installation is finished. --> |
| <Property Id="CHROMOTING_SERVICE_START_TYPE"> |
| <RegistrySearch Id="chromoting_service_start_type" |
| Root="HKLM" |
| Key="SYSTEM\CurrentControlSet\services\$(var.ServiceName)" |
| Name="Start" |
| Type="raw" /> |
| </Property> |
| |
| <CustomAction Id="query_auto_start_service" |
| Property="auto_start_service" |
| Value="[CHROMOTING_SERVICE_START_TYPE]" /> |
| |
| <CustomAction Id="start_chromoting_service" |
| Impersonate="no" |
| Execute="deferred" |
| Script="jscript"> |
| <![CDATA[ |
| var ADS_SERVICE_STOPPED = 0x00000001; |
| var ADS_SERVICE_AUTO_START = 2; |
| var service = GetObject("WinNT://./$(var.ServiceName),Service"); |
| service.StartType = ADS_SERVICE_AUTO_START; |
| service.SetInfo(); |
| if (service.Status == ADS_SERVICE_STOPPED) { |
| service.Start(); |
| } |
| ]]> |
| </CustomAction> |
| |
| <CustomAction Id="set_service_display_name" |
| Property="chromoting_service_display_name" |
| Value="@[binaries]$(var.CoreBinary),-101" /> |
| <CustomAction Id="set_service_description" |
| Property="chromoting_service_description" |
| Value="@[binaries]$(var.CoreBinary),-102" /> |
| |
| <UIRef Id="WixUI_ErrorProgressText" /> |
| |
| <Feature Id="chromoting_host" Level="1" Title="$(var.ChromotingHost)"> |
| <ComponentRef Id="credits"/> |
| <ComponentRef Id="delete_debug_log"/> |
| <ComponentRef Id="delete_usagestats"/> |
| <?if $(var.OfficialBuild) != 0 ?> |
| <ComponentRef Id="omaha_registration"/> |
| <?endif?> |
| <ComponentRef Id="icudtl"/> |
| <ComponentRef Id="native_messaging_host_firefox_manifest"/> |
| <ComponentRef Id="native_messaging_host_firefox_registry_win32"/> |
| <ComponentRef Id="native_messaging_host_firefox_registry_win64"/> |
| <ComponentRef Id="native_messaging_host_manifest"/> |
| <ComponentRef Id="native_messaging_host_registry"/> |
| <ComponentRef Id="remote_assistance_host"/> |
| <ComponentRef Id="remote_assistance_host_firefox_manifest"/> |
| <ComponentRef Id="remote_assistance_host_firefox_registry_win32"/> |
| <ComponentRef Id="remote_assistance_host_firefox_registry_win64"/> |
| <ComponentRef Id="remote_assistance_host_manifest"/> |
| <ComponentRef Id="remote_assistance_host_registry"/> |
| <ComponentRef Id="remote_assistance_host_uiaccess"/> |
| <ComponentRef Id="remote_security_key"/> |
| <ComponentRef Id="remote_security_key_registration"/> |
| <ComponentRef Id="remoting_native_messaging_host"/> |
| <ComponentRef Id="remoting_core"/> |
| <ComponentRef Id="remoting_desktop"/> |
| <ComponentRef Id="remoting_host"/> |
| <ComponentRef Id="remoting_lib"/> |
| <ComponentRef Id="remoting_pairing_registry"/> |
| <ComponentRef Id="remoting_start_host"/> |
| <ComponentRef Id="sawbuck_provider"/> |
| </Feature> |
| |
| <!-- Set the icon shown in Add/Remove Programs. --> |
| <Icon Id="chromoting.ico" SourceFile="chromoting.ico"/> |
| <Property Id="ARPPRODUCTICON" Value="chromoting.ico" /> |
| |
| <CustomAction Id="set_maintenance" Property="MAINTENANCE" Value="true" /> |
| |
| <!-- Set to reinstall all features. --> |
| <CustomAction Id="set_reinstall_all_property" |
| Property="REINSTALL" |
| Value="ALL" /> |
| <!-- "amus" will force reinstall all files. |
| See https://docs.microsoft.com/en-us/windows/desktop/Msi/reinstallmode --> |
| <CustomAction Id="set_reinstallmode_property" |
| Property="REINSTALLMODE" |
| Value="amus" /> |
| |
| <InstallExecuteSequence> |
| <!-- Set REINSTALL=all and REINSTALLMODE=amus if the user reruns the |
| MSI, which will force reinstalling all files and services. --> |
| <Custom Action="set_maintenance" Before="set_reinstall_all_property"> |
| Installed AND (NOT REMOVE) AND (NOT UPGRADINGPRODUCTCODE) |
| </Custom> |
| <Custom Action="set_reinstall_all_property" |
| Before="set_reinstallmode_property"> |
| MAINTENANCE |
| </Custom> |
| <Custom Action="set_reinstallmode_property" Before="LaunchConditions"> |
| MAINTENANCE |
| </Custom> |
| |
| <Custom Action="query_auto_start_service" Before="InstallInitialize"/> |
| <Custom Action="start_chromoting_service" After="StartServices"> |
| <![CDATA[NOT REMOVE AND (auto_start_service = "#2")]]> |
| </Custom> |
| |
| <!-- Set the service name and description --> |
| <Custom Action="set_service_display_name" Before="InstallInitialize"/> |
| <Custom Action="set_service_description" Before="InstallInitialize"/> |
| |
| <!-- Schedule RemoveExistingProducts before installing any files. |
| See http://msdn.microsoft.com/en-us/library/aa371197.aspx. --> |
| <RemoveExistingProducts After="InstallInitialize" /> |
| </InstallExecuteSequence> |
| </Product> |
| </Wix> |