This worklog has been replaced with mariadb.org/jira

This site is here for historical purposes only. Do not add or edit tasks here!

 
 
 

WorkLog Frontpage Log in / Register
High-Level Description | Task Dependencies | High-Level Specification | Low-Level Design | File Attachments | User Comments | Time Estimates | Funding and Votes | Progress Reports

 Optionally install thrid party products with Windows installer
Title
Task ID200
Queue
Version
Status
Priority
Copies to
Created byWlad31 May 2011Done
Supervisor   
Lead Architect    
Architecture Review  
Implementor  
Code Review  
QA  
Documentation  
 High-Level Description
The purpose of this task is to create a generic method/framework to install 
third party MySQL/MariaDB related products with the Windows installer.

An example when it is useful
All major DBMS manufacturer (including free ones like PostgreSQL) include GUI 
tools in their installers on Windows. Or almost all, except MySQL(as of 5.5 *) 
and MariaDB.On the other hand, there is a wealth of different high quality GUI 
tools developed by third parties. Many of the tools are license-compatible and  
some are small and easily embeddable into installer. Offering it in installer 
will give Windows users the level of comfort they know from other DBMS products.

GUI tools may serve as primary example, but there are other cases where 
inclusion of 3rd party is potentially interesting (e.g drivers/connectors)


* This might change in MySQL 5.6 (new installer will have workbench included). 
 Task Dependencies
Others waiting for Task 200Task 200 is waiting forGraph
 
 High-Level Specification
To support inclusion of 3rd party products we'll need a CMake-time variable
WITH_THIRD_PARTY=Product1;Product2;Product3

For each 3rd party productin this list, there will be a <product>.cmake script 
in win\packaging. Once <product> is found in the WITH_THIRD_PARTY list, 
<product>.cmake is invoked during msi build.

<product>.cmake contains the whole logic to 

1)download <product> distribution (this can be handled with FILE(DOWNLOAD) 
command). We need a stable download URL for this.
2)unpack the distribution (this can be handled with "cmake -E tar xfz...")
3)create WiX include files 
  a) ${CMAKE_CURRENT_BINARY_DIR}/<product>.wxi with description of MSI 
components, e.g files, shortcuts, registry keys, etc that consistute the 
product. Also, this might contain the logic to determine if product is already 
installed on user system. This does not handle UI aspects of installation.
This include file will use Wix elements Directory, DirectoryRef, Component, 
File, Property etc. 

  b)  ${CMAKE_CURRENT_BINARY_DIR}/<product>_feature.wxi, that describe 
corresponding MSI feature (product name, description, install by default or 
not, subfeatures, conditions when to install of skip, MSI components it 
consists of). This handles UI aspects of installation, namely how feature will 
appear in the selection tree. 

This include file will use Wix element Feature and 
ComponentRef/ComponentGroupRef. The feature will be placed under "Third Party 
Tools" in the MSI selection tree.

4) Files created at step 3) are automatically compiled into MSI.


The above technique allows embedding in lot of scenarios. Simplest scenario 
would be redistributing products that are downloadable as zip files. Also very 
simple would be incorporating installer merge modules. 

Handling other types of 3rd party might be more involved, yet possible. For 
example, it is possible to decompile an existing MSI using Wix tool "dark" and 
repackage using the original component specifications.


=== Recommended directory layout ===

At least for 3rd party "zip"-type installation, components should be installed 
into a directory under CommonFiles/MariaDBShared 

That is, <product>.wxi should have all components and files under this layout 

  <DirectoryRef Id='MariaDBShared'>
   <Directory Id='MyProduct' Name='MyProduct'>
    <Component...>
     <File.../>
     <File.../>
    </Component>
   </Directory>
  </DirectoryRef>

With this layout, 3rd party tool will be "shared" as MSI calls it, which means
- Installed only once even if there are many MariaDB installations (eg 5.2 and 
5.3) on the same machine.
- it is automatically upgraded if newer version is available in newer MariaDB 
installer.
- it is  refcounted by Windows installer (not uninstalled if used by at least 
one MariaDB installation)

 Low-Level Design
 File Attachments
 NameTypeSizeByDate
 User Comments
 Time Estimates
NameHours WorkedLast Updated
Total0 
 Hrs WorkedProgressCurrentOriginal
Total000
 
 Funding and Votes
Votes: 0: 0%
 Make vote: Useless    Nice to have    Important    Very important    

Funding: 0 offers, total 0 Euro
 Progress Reports
(Wlad - Fri, 17 Jun 2011, 00:07
    
Version updated.
--- /tmp/wklog.200.old.23480	2011-06-17 00:07:56.000000000 +0000
+++ /tmp/wklog.200.new.23480	2011-06-17 00:07:56.000000000 +0000
@@ -1,2 +1,2 @@
-Server-9.x
+N/A
 

(Wlad - Fri, 17 Jun 2011, 00:07
    
Status updated.
--- /tmp/wklog.200.old.23480	2011-06-17 00:07:56.000000000 +0000
+++ /tmp/wklog.200.new.23480	2011-06-17 00:07:56.000000000 +0000
@@ -1,2 +1,2 @@
-Un-Assigned
+Complete
 

(Wlad - Fri, 17 Jun 2011, 00:07
    
Supervisor updated:  -> Igor

(Wlad - Tue, 31 May 2011, 22:30
    
High-Level Specification modified.
--- /tmp/wklog.200.old.4142	2011-05-31 22:30:37.000000000 +0000
+++ /tmp/wklog.200.new.4142	2011-05-31 22:30:37.000000000 +0000
@@ -1,2 +1,69 @@
 
+To support inclusion of 3rd party products we'll need a CMake-time variable
+WITH_THIRD_PARTY=Product1;Product2;Product3
+
+For each 3rd party productin this list, there will be a <product>.cmake script 
+in win\packaging. Once <product> is found in the WITH_THIRD_PARTY list, 
+<product>.cmake is invoked during msi build.
+
+<product>.cmake contains the whole logic to 
+
+1)download <product> distribution (this can be handled with FILE(DOWNLOAD) 
+command). We need a stable download URL for this.
+2)unpack the distribution (this can be handled with "cmake -E tar xfz...")
+3)create WiX include files 
+  a) ${CMAKE_CURRENT_BINARY_DIR}/<product>.wxi with description of MSI 
+components, e.g files, shortcuts, registry keys, etc that consistute the 
+product. Also, this might contain the logic to determine if product is already 
+installed on user system. This does not handle UI aspects of installation.
+This include file will use Wix elements Directory, DirectoryRef, Component, 
+File, Property etc. 
+
+  b)  ${CMAKE_CURRENT_BINARY_DIR}/<product>_feature.wxi, that describe 
+corresponding MSI feature (product name, description, install by default or 
+not, subfeatures, conditions when to install of skip, MSI components it 
+consists of). This handles UI aspects of installation, namely how feature will 
+appear in the selection tree. 
+
+This include file will use Wix element Feature and 
+ComponentRef/ComponentGroupRef. The feature will be placed under "Third Party 
+Tools" in the MSI selection tree.
+
+4) Files created at step 3) are automatically compiled into MSI.
+
+
+The above technique allows embedding in lot of scenarios. Simplest scenario 
+would be redistributing products that are downloadable as zip files. Also very 
+simple would be incorporating installer merge modules. 
+
+Handling other types of 3rd party might be more involved, yet possible. For 
+example, it is possible to decompile an existing MSI using Wix tool "dark" and 
+repackage using the original component specifications.
+
+
+=== Recommended directory layout ===
+
+At least for 3rd party "zip"-type installation, components should be installed 
+into a directory under CommonFiles/MariaDBShared 
+
+That is, <product>.wxi should have all components and files under this layout 
+
+  <DirectoryRef Id='MariaDBShared'>
+   <Directory Id='MyProduct' Name='MyProduct'>
+    <Component...>
+     <File.../>
+     <File.../>
+    </Component>
+   </Directory>
+  </DirectoryRef>
+
+With this layout, 3rd party tool will be "shared" as MSI calls it, which means
+- Installed only once even if there are many MariaDB installations (eg 5.2 and 
+5.3) on the same machine.
+- it is automatically upgraded if newer version is available in newer MariaDB 
+installer.
+- it is  refcounted by Windows installer (not uninstalled if used by at least 
+one MariaDB installation)
+
+
 


Report Generator:
 
Saved Reports:

WorkLog v4.0.0
  © 2010  Sergei Golubchik and Monty Program AB
  © 2004  Andrew Sweger <yDNA@perlocity.org> and Addnorya
  © 2003  Matt Wagner <matt@mysql.com> and MySQL AB