Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Unified Diff: WixInstaller/adblockplusie.wxs

Issue 10879048: Use minor upgrade mechanism for updates, set installer versionautomatically (Closed)
Patch Set: Created June 11, 2013, 1:21 p.m.
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: WixInstaller/adblockplusie.wxs
===================================================================
--- a/WixInstaller/adblockplusie.wxs
+++ b/WixInstaller/adblockplusie.wxs
@@ -7,50 +7,35 @@
even though the CustomAction keyword does not appear in this source.
Certain WiX elements are implemented by MSI custom actions,
which means this source implicitly declares some insofar as the Windows Installer sees it.
These errors are benign and can be avoided by some fiddling with the registry on the development machine.
See http://wix.sourceforge.net/faq.html#Error217
-->
<!--
These definitions enable compiling multiple versions & Product ID's from the same file.
- This is to allow testing upgrade features without having to switch back and forth between working copies.
+ This is to allow testing upgrade features without having to switch back and forth between working copies.
-->
<?ifdef Version ?>
- <!--
+ <!--
If we're given a version on the command line, use it.
We use a short name on the command line for ease of use.
- We use a longer name within this file for clarity about which "version" it is specifically
+ We use a longer name within this file for clarity about which "version" it is specifically
-->
<?define Product_Version=$(var.Version) ?>
<?else?>
- <!--
- Assert no version definition was given on the command line.
- -->
- <?ifdef NoDefault ?>
- <?error Found "NoDefault" but no "Version" ?>
- <?else?>
- <!-- The default version -->
- <?define Product_Version="0.8.1" ?>
- <?endif?>
+ <?error "Version" parameter is required ?>
<?endif?>
-<!--
- Convenience link for obtaining a new GUID, required at each version increment.
- http://www.newguid.com/
--->
-<?if $(var.Product_Version)="0.8.1" ?>
- <!-- Default version -->
- <?define Product_ID="3caab5a9-43a7-4a57-8373-b7d0952b709c" ?>
-<?elseif $(var.Product_Version)="0.8.2" ?>
- <?define Product_ID="794cdc54-95ae-4513-b2d7-2a01103a7c97" ?>
-<?else?>
- <?error Unknown product version="$(var.Product_Version)" ?>
+<?ifndef Configuration ?>
+ <?error "Configuration" parameter is required ?>
<?endif?>
+<?define Product_ID="3caab5a9-43a7-4a57-8373-b7d0952b709c" ?>
Eric 2013/06/11 15:41:46 We'll need that second Product_ID soon enough for
Wladimir Palant 2013/06/12 09:46:34 We can just change the product ID when we implemen
+
<!--
sys.BUILDARCH is set by the command line argument '-arch'.
The default value to "x86"
-->
<?if $(sys.BUILDARCH)="x86"?>
<?define Minimum_Version="100"?>
<?define Program_Files="ProgramFilesFolder"?>
<?define Product_Name="!(loc.ProductName32)"?>
@@ -58,17 +43,17 @@
<?define Minimum_Version="200"?>
<?define Program_Files="ProgramFiles64Folder"?>
<?define Product_Name="!(loc.ProductName64)"?>
<?else?>
<?error Unsupported value of sys.BUILDARCH=$(sys.BUILDARCH)?>
<?endif?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
- <Product
+ <Product
Name="$(var.Product_Name)"
Manufacturer="Eyeo GmbH"
Version="$(var.Product_Version)"
Language="!(loc.LANG)" Codepage="1252"
Id="$(var.Product_ID)"
UpgradeCode="3a8e3ab4-762d-4641-806e-2dccb953d73f">
<Package Id="*"
@@ -81,17 +66,17 @@
InstallScope="perMachine" InstallPrivileges="elevated"
/>
<!--
The MajorUgrade tag allows us to specify the relationship between our version number and the one installed.
The attribute AllowDowngrades="yes" permits our version number to be lower than the one installed.
The attribute Disallow="no" (the default) permits our version number to be higher than the one installed.
For development releases (at least), we permit both cases.
For general releases, at present we also permit both.
-
+
The @Schedule attribute looks a little opaque.
Suffice it to say that it's the only option for scheduling where uninstallation of the previous version
and installation of the present version is _always_ going to act atomically.
It's a shame that you to even explicitly make that choice.
-->
<MajorUpgrade
AllowDowngrades="yes"
Schedule="afterInstallExecute"
@@ -171,22 +156,22 @@
</Component>
<!--
Testing the 32-bit install on a 64 bit OS will cause these entries to be written under Wow6432Node.
It should be transparent to the application code, but in case it's not ...
See http://stackoverflow.com/questions/1882024/wix-will-not-add-hklm-registry-setting-during-windows-7-install
-->
<Property Id="INSTALLFOLDER">
<RegistrySearch Id="Registry_Read_Install_Folder"
- Root="HKLM" Key="Software\Adblock Plus for IE\0.8.0"
+ Root="HKLM" Key="Software\Adblock Plus for IE\$(var.Product_Version)"
Name="InstallFolder" Type="raw"/>
</Property>
<Component Id="Install_Folder.component" Directory="INSTALLFOLDER">
<RegistryKey Root="HKLM" Key="Software\Adblock Plus for IE">
- <RegistryKey Key="0.8.0">
+ <RegistryKey Key="$(var.Product_Version)">
<RegistryValue
Name="InstallFolder" Type="string"
Value="[INSTALLFOLDER]"/>
</RegistryKey>
</RegistryKey>
</Component>
@@ -227,17 +212,17 @@
It's possible to write keys to HKEY_CURRENT_USER in a situation where that's not desirable, if needed.
-->
<ComponentGroup Id="Binaries" Directory="INSTALLFOLDER">
<!--
The 32-bit version of the DLL is included in both 32- and 64-bit installers.
We need an explicit value for attribute @Win64 so that the ARCH argument does not override its implicit value.
-->
<Component Id="AdblockPlus32.dll" Win64="no">
- <File Id="AdblockPlus32.dll" Source="..\build\ia32\Release Production\AdblockPlus.dll" KeyPath="yes" Checksum="yes">
+ <File Id="AdblockPlus32.dll" Source="..\build\ia32\$(var.Configuration)\AdblockPlus.dll" KeyPath="yes" Checksum="yes">
<?include dll_class.wxi ?>
</File>
<?include bho_registry_value.wxi ?>
</Component>
<!--
The 64-bit version of the DLL is only included in the 64-bit installer.
We don't really need an explicit value for attribute @Win64, but it's there for resilience.
@@ -248,33 +233,33 @@
so with two versions of IE, we need two identical registrations.
The 32-bit version on a 64-bit system will be registered under "Wow6432Node" translated keys,
while the 64-bit version will be under the keys as they appear in this source, not translated.
We don't need to put in the "Wow6432Node" registry key explicitly;
something in Windows Installer takes care of the mapping transparently.
-->
<?if $(sys.BUILDARCH)="x64"?>
<Component Id="AdblockPlus64.dll" Win64="yes">
- <File Id="AdblockPlus64.dll" Source="..\build\x64\Release Production\AdblockPlusx64.dll" KeyPath="yes" Checksum="yes">
+ <File Id="AdblockPlus64.dll" Source="..\build\x64\$(var.Configuration)\AdblockPlusx64.dll" KeyPath="yes" Checksum="yes">
<?include dll_class.wxi ?>
</File>
<?include bho_registry_value.wxi ?>
</Component>
<?endif?>
<!--
The engine must go into the same directory as the DLL, since that location is searched explicitly (and uniquely).
-->
<?if $(sys.BUILDARCH)="x86"?>
<Component Id="AdblockPlusEngine.exe" Win64="no">
- <File Id="AdblockPlusEngine.exe" Source="..\build\ia32\Release Production\AdblockPlusEngine.exe" KeyPath="yes" Checksum="yes"/>
+ <File Id="AdblockPlusEngine.exe" Source="..\build\ia32\$(var.Configuration)\AdblockPlusEngine.exe" KeyPath="yes" Checksum="yes"/>
</Component>
<?elseif $(sys.BUILDARCH)="x64"?>
<Component Id="AdblockPlusEngine.exe" Win64="yes">
- <File Id="AdblockPlusEngine.exe" Source="..\build\x64\Release Production\AdblockPlusEngine.exe" KeyPath="yes" Checksum="yes"/>
+ <File Id="AdblockPlusEngine.exe" Source="..\build\x64\$(var.Configuration)\AdblockPlusEngine.exe" KeyPath="yes" Checksum="yes"/>
</Component>
<?endif?>
</ComponentGroup>
<!--
The HTML_Tree component group contains all the files in the HTML folder.
Individual file entries within a single component group must all be in the same directory.
Also, ComponentGroup is not a valid child of ComponentGroup, so subdirectories are linked by reference.

Powered by Google App Engine
This is Rietveld