Mark called uninstallers rebootok
[gpg4win.git] / src / README-msi.txt
1 Prerequisites
2 =============
3
4 * A complete build-tree of Gpg4win (NSIS) for the version you want to
5   package.  Please see http://www.gpg4win.org/build-installer.html for
6   more information on how to create a Gpg4win NSIS installer.
7
8 * Perl 5
9
10 * Windows XP, for example running in a virtual machine, with the
11   following software installed:
12
13   Windows Installer XML (WiX) toolset, from http://wix.sourceforge.net/
14   Version 3.0 is required.
15
16   WiX requires the .NET framework, for example .NET 2.0 from
17   http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D-8EDD-AAB15C5E04F5
18
19 * A way to access files in the build-tree from the Windows machine,
20   for example using a network connection and SMB, or a data medium to
21   transfer several hundred MB of data
22
23
24 Instructions
25 ============
26
27 1) Change to the src/ directory of the Gpg4win installer build-tree.
28
29 $ cd gpg4win/src
30
31 2) Create the required WiX source file:
32
33 $ make msi
34
35 Maintainer note: The program might output the message "GUID list
36 stored in make-msi.guids changed, please commit!".  In this case, the
37 modified source file make-msi.guids should be committed to the repository.
38
39 3) Now switch to the same directory on the Windows machine, and run
40 the script make-msi.bat to create the MSI package:
41
42 > make-msi.bat gpg4win-VERSION.wix
43 > make-msi.bat gpg4win-light-VERSION.wix
44
45 where VERSION is the full version number of the build (for example,
46 1.9.0-svn595).
47
48 The batch file assumes that WiX is installed in the canonical
49 location.  If that is not the case, you might need to adjust the PATH
50 in the file.
51
52 4) That's it!  The final installer package gpg4win.msi can be installed with
53
54 > msiexec /i gpg4win.msi
55
56 and uninstalled with 
57
58 > msiexec /x gpg4win.msi
59
60
61 How to access the package files
62 ===============================
63
64 The WiX tools need to access all files from the build-tree included in
65 the package.  There are many solutions to that.  Here are two suggestions:
66
67 1) Ubuntu + VirtualBox + Samba
68
69 You can run Windows XP in a Virtual Machine under VirtualBox, and
70 access the files using the SMB protocol by running the Samba server on
71 the Linux Host.  The build-tree folder should be shared (right-mouse
72 click on the folder in Nautilus), and can then be bound to a drive
73 letter in Windows by the command:
74
75 > net use H: \\10.0.2.2\gpg4win
76
77 where H: is the drive letter to be used and gpg4win is the name of the
78 shared folder.
79
80 2) tar
81
82 A list of all files required is stored by make-msi.pl in the file
83 make-msi.files.  This list can be used to transfer all needed files
84 and to the Windows computer by any media or network.  For example,
85 they can be grouped in an archive using tar:
86
87 $ cd gpg4win
88 $ tar -T src/gpg4win-VERSION.files cjf gpg4win-msi.tar.bz2
89
90 Beside the files in gpg4win-msi.tar.bz, you also need src/gpg4win-VERSION.wix
91 and src/make-msi.bat on the Windows computer, which should be put into
92 the src/ subdirectory of the archive.
93
94
95 TODO
96 ====
97
98 1. The UI extension in WiX 3.0 only supports en-us.
99 Translation to german is desired.
100
101 2. Edit license dialog to not require acceptance (see tutorial, lesson 2).
102
103 3. Put manual shortcuts in start menu into subdirectory.
104
105 Also, support (optional) shortcuts on desktop and quicklaunch.  Make
106 customizable via ini file.  No idea how to do this, actually.
107
108 4. Add README dialog and launch README file:
109 <Property Id='NOTEPAD'>Notepad.exe</Property>
110 <CustomAction Id='LaunchFile' Property='NOTEPAD' ExeCommand='[SourceDir]Readme.txt' Return='asyncNoWait'/>
111
112 Problems: Dialog needs to be added.  How to select language to display?
113
114 5. Various warnings/blockers for NT5 and admin privileges checks.  We
115 need to figure out which ones should be warnings and which should be
116 critical, and how to implement warning dialogs (critical is easy).
117
118 6. Dependencies could be done better by not repeating (hidden)
119 features and using custom actions instead.
120