| OLD | NEW |
| (Empty) |
| 1 <?xml version='1.0' encoding='windows-1252'?> | |
| 2 <Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'> | |
| 3 <?define CompanyFullName = 'Google, Inc.'?> | |
| 4 <?define Copyright = 'Copyright 2007-2010 Google Inc.'?> | |
| 5 | |
| 6 <Product | |
| 7 Id='$(var.MsiProductId)' | |
| 8 Name='$(var.ProductName)' | |
| 9 Language='1033' | |
| 10 Codepage='1252' | |
| 11 UpgradeCode='$(var.MsiUpgradeCode)' | |
| 12 Version='$(var.ProductVersion)' | |
| 13 Manufacturer='$(var.CompanyFullName)'> | |
| 14 | |
| 15 <Package | |
| 16 Id='*' | |
| 17 Description='$(var.ProductName) Installer' | |
| 18 Comments='$(var.Copyright)' | |
| 19 Manufacturer='$(var.CompanyFullName)' | |
| 20 Languages='1033' | |
| 21 SummaryCodepage='1252' | |
| 22 InstallerVersion='150' | |
| 23 InstallPrivileges='elevated' | |
| 24 Compressed='yes' /> | |
| 25 | |
| 26 <Upgrade Id='$(var.MsiUpgradeCode)'> | |
| 27 <UpgradeVersion Property='UPGRADING' | |
| 28 OnlyDetect='no' | |
| 29 Minimum='0.0.0.0' IncludeMinimum='yes' | |
| 30 Maximum='$(var.ProductVersion)' IncludeMaximum='no' /> | |
| 31 <UpgradeVersion Property='NEWERVERSIONDETECTED' | |
| 32 OnlyDetect='yes' | |
| 33 Minimum='$(var.ProductVersion)' IncludeMinimum='yes' /> | |
| 34 </Upgrade> | |
| 35 | |
| 36 <!-- Per-machine installation - make sure product appears for all users. --> | |
| 37 <Property Id='ALLUSERS' Value='1' /> | |
| 38 | |
| 39 <?ifdef $(var.ProductIcon)?> | |
| 40 <!-- If var.ProductIcon is defined, use that as an icon in the ARP | |
| 41 dialog, otherwise rely on the ARP dialog's heuristics: | |
| 42 http://blogs.msdn.com/oldnewthing/archive/2004/07/09/178342.aspx --> | |
| 43 <Icon Id='icon.ico' SourceFile='$(var.ProductIcon)'/> | |
| 44 <Property Id='ARPPRODUCTICON' Value='icon.ico' /> | |
| 45 <?endif?> | |
| 46 | |
| 47 <!-- ARPNOMODIFY does two things: | |
| 48 1) Removes the 'Modify' button from the ARP dialog. | |
| 49 2) Causes the 'Remove' command to invoke msiexec /X instead of /I | |
| 50 (the intent being that WITH a Modify button, clicking either | |
| 51 Modify or Remove command will launch your installer UI). --> | |
| 52 <Property Id='ARPNOMODIFY' Value='1' /> | |
| 53 | |
| 54 <!-- Find the uninstall string to be used for the product. Only used for | |
| 55 uninstallation. --> | |
| 56 <Property Id='UNINSTALLCMDLINE'> | |
| 57 <RegistrySearch Id='UninstallCmdSearch' | |
| 58 Root='HKLM' | |
| 59 Type='raw' | |
| 60 Key='Software\Google\Update\ClientState\$(var.ProductGuid)
' | |
| 61 Name='UninstallString'/> | |
| 62 </Property> | |
| 63 <Property Id='UNINSTALLCMDARGS'> | |
| 64 <RegistrySearch Id='UninstallArgSearch' | |
| 65 Root='HKLM' | |
| 66 Type='raw' | |
| 67 Key='Software\Google\Update\ClientState\$(var.ProductGuid)
' | |
| 68 Name='UninstallArguments'/> | |
| 69 </Property> | |
| 70 | |
| 71 <UI> | |
| 72 <Error Id='4000'>A newer version of the $(var.ProductName) enterprise inst
aller is already installed.</Error> | |
| 73 </UI> | |
| 74 | |
| 75 <!-- Eliminates "warning LGHT1076 : ICE71: The Media table has no entries." | |
| 76 --> | |
| 77 <Media Id='1' /> | |
| 78 | |
| 79 <Directory Id='TARGETDIR' Name='SourceDir'> | |
| 80 <Directory Id='ProgramFilesFolder'> | |
| 81 </Directory> | |
| 82 </Directory> | |
| 83 | |
| 84 <Binary Id='$(var.ProductNameLegalIdentifier)Installer' | |
| 85 SourceFile='$(var.ProductInstallerPath)' /> | |
| 86 | |
| 87 <Binary Id='ShowInstallerResultUIStringDll' | |
| 88 SourceFile='$(var.ShowErrorCADll)' /> | |
| 89 | |
| 90 <Feature Id='Complete' Level='1'> | |
| 91 <ComponentRef Id='ComponentGoogleUpdate' /> | |
| 92 </Feature> | |
| 93 | |
| 94 <CustomAction Id='NewerVersionError' Error='4000'/> | |
| 95 | |
| 96 <CustomAction Id='SetInstallerInstallCommandProperty' | |
| 97 Property='FullProductInstallerInstallCommand' | |
| 98 Value='$(var.ProductInstallerInstallCommand)' | |
| 99 Execute='immediate' | |
| 100 Return='check' /> | |
| 101 <CustomAction | |
| 102 Id='AppendDisableUpdateRegistrationArgToInstallerInstallCommandProperty' | |
| 103 Property='FullProductInstallerInstallCommand' | |
| 104 Value='[FullProductInstallerInstallCommand] | |
| 105 $(var.ProductInstallerDisableUpdateRegistrationArg)' | |
| 106 Execute='immediate' | |
| 107 Return='check' /> | |
| 108 <!-- Send the ProductGuid to the ShowInstallerResultUIString custom action. | |
| 109 The value is accessed through the "CustomActionData" property from | |
| 110 within the action itself. --> | |
| 111 <CustomAction Id='SetAppGuidProperty' | |
| 112 Property='ShowInstallerResultUIString' | |
| 113 Value='$(var.ProductGuid)' /> | |
| 114 | |
| 115 <!-- A custom action to be executed on rollback to log and display the | |
| 116 LastInstallerResultUIString. --> | |
| 117 <CustomAction Id='ShowInstallerResultUIString' | |
| 118 BinaryKey='ShowInstallerResultUIStringDll' | |
| 119 DllEntry='ShowInstallerResultUIString' | |
| 120 Execute='rollback' | |
| 121 Impersonate='no' /> | |
| 122 | |
| 123 <CustomAction Id='Install$(var.ProductNameLegalIdentifier)' | |
| 124 BinaryKey='$(var.ProductNameLegalIdentifier)Installer' | |
| 125 Impersonate='no' | |
| 126 Execute='deferred' | |
| 127 ExeCommand='[FullProductInstallerInstallCommand]' | |
| 128 Return='check' /> | |
| 129 <CustomAction Id='CallUninstaller.SetProperty' | |
| 130 Property='UninstallCmd' | |
| 131 Value='[UNINSTALLCMDLINE] $(var.ProductUninstallerAdditionalArgs)' | |
| 132 Execute='immediate' | |
| 133 Return='check' /> | |
| 134 <CustomAction Id='CallUninstallerArgs.SetProperty' | |
| 135 Property='UninstallCmdArgs' | |
| 136 Value='[UNINSTALLCMDARGS]' | |
| 137 Execute='immediate' | |
| 138 Return='check' /> | |
| 139 <CustomAction Id='CallUninstaller' | |
| 140 Property='UninstallCmd' | |
| 141 ExeCommand='[UninstallCmdArgs] $(var.ProductUninstallerAdditionalArgs)' | |
| 142 Impersonate='no' | |
| 143 Execute='deferred' | |
| 144 Return='check' /> | |
| 145 | |
| 146 <InstallExecuteSequence> | |
| 147 <RemoveExistingProducts After='InstallValidate' /> | |
| 148 | |
| 149 <Custom Action='NewerVersionError' After='FindRelatedProducts'> | |
| 150 NEWERVERSIONDETECTED | |
| 151 </Custom> | |
| 152 | |
| 153 <!-- Any operations that rely on values, such as brand and usagestats, in | |
| 154 ClientState should not run until after | |
| 155 InstallGoogleUpdateAndRegister. This is sequenced before InstallFiles | |
| 156 so that can be used as well. | |
| 157 It is also advisable to write the Clients key after this point so | |
| 158 the specific values in the installer will replace the ones Google | |
| 159 Update writes as part of /registerproduct. --> | |
| 160 <!-- The app's uninstaller MUST delete the entire Clients key even if | |
| 161 values it didn't write are present. The Google Update Fragment writes | |
| 162 "pv" and "name" when it calls /registerproduct. While apps should | |
| 163 always write and cleanup "name", not all do and this can cause | |
| 164 problems.--> | |
| 165 <!-- TODO(omaha): Support Rollback? Need to determine whether Product | |
| 166 was installed before installing it and only add the rollback then. | |
| 167 <Custom Action='Rollback$(var.ProductNameLegalIdentifier)' | |
| 168 After='InstallFiles'> | |
| 169 (($ComponentGoogleUpdate>2) OR REINSTALL) AND (NOT $(var.ProductNameLega
lIdentifier)_INSTALLED) | |
| 170 </Custom> | |
| 171 Change After='InstallFiles' below to | |
| 172 After='Rollback$(var.ProductNameLegalIdentifier)'. --> | |
| 173 <Custom Action='SetInstallerInstallCommandProperty' | |
| 174 After='InstallFiles'> | |
| 175 (($ComponentGoogleUpdate>2) OR REINSTALL) | |
| 176 </Custom> | |
| 177 <Custom Action='AppendDisableUpdateRegistrationArgToInstallerInstallComman
dProperty' | |
| 178 After='SetInstallerInstallCommandProperty'> | |
| 179 (($ComponentGoogleUpdate>2) OR REINSTALL) AND DISABLE_UPDATES | |
| 180 </Custom> | |
| 181 <Custom Action='SetAppGuidProperty' | |
| 182 After='AppendDisableUpdateRegistrationArgToInstallerInstallCommand
Property'> | |
| 183 (($ComponentGoogleUpdate>2) OR REINSTALL) | |
| 184 </Custom> | |
| 185 <Custom Action='ShowInstallerResultUIString' | |
| 186 After='SetAppGuidProperty'> | |
| 187 (($ComponentGoogleUpdate>2) OR REINSTALL) | |
| 188 </Custom> | |
| 189 <Custom Action='Install$(var.ProductNameLegalIdentifier)' | |
| 190 After='ShowInstallerResultUIString'> | |
| 191 (($ComponentGoogleUpdate>2) OR REINSTALL) | |
| 192 </Custom> | |
| 193 | |
| 194 <Custom Action='CallUninstallerArgs.SetProperty' | |
| 195 Before='CallUninstaller.SetProperty'> | |
| 196 $ComponentGoogleUpdate=2 | |
| 197 </Custom> | |
| 198 <Custom Action='CallUninstaller.SetProperty' | |
| 199 Before='CallUninstaller'> | |
| 200 $ComponentGoogleUpdate=2 | |
| 201 </Custom> | |
| 202 <Custom Action='CallUninstaller' | |
| 203 Before='RemoveFiles'> | |
| 204 $ComponentGoogleUpdate=2 | |
| 205 </Custom> | |
| 206 | |
| 207 </InstallExecuteSequence> | |
| 208 | |
| 209 </Product> | |
| 210 </Wix> | |
| OLD | NEW |