summaryrefslogtreecommitdiff
path: root/db-4.8.30/dist/winmsi/dbcorewix.in
blob: 44137fefaf5df7e782e2671d10466a1789ff873c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<!-- $Id$
 -
 - Dbcorewix.in is the DB core WiX input file, and is used by
 - s_winmsi to create dbcore.wxs (an input to WiX).
 - Most everything here is pure 'WiX' syntax within XML,
 - the exceptions are:
 -    1) everything is pushed through the m4 preprocessor first.
 -       this makes certain boilerplate actions in the UI tolerable.
 -       We put all needed defines at the top of this file.
 -    2) a very few identifiers beginning with WIX_DB_*
 -       are predefined as m4 macros on the command line.
 -       These are items that only the caller (s_winmsi) can know.
 -
 - M4 makes many things easier, but there are peculiarities.
 - In particular, if you are using a macro with args, like
 - TOPSTRIPE, note that *any* occurance of the characters "( ) ,"
 - are interpreted by m4, even if they occur in an Xml comment or string.
 - Remember this when editing this file!
 -
 - Beyond that, there is a lot to understand about WiX
 - and how this file operates, to get started, look at
 - various WiX tutorials, like:
 -    http://www.ondotnet.com/pub/a/dotnet/2004/04/19/wix.html
 -    http://blogs.msdn.com/robmen/archive/2004/04/05/107709.aspx
 - Also view the lecture covered here:
 -    http://blogs.msdn.com/robmen/archive/2004/09/23/233684.aspx
 -
 - Finally, understand that WiX is an XML layering above the concepts
 - defined by the world of the MSI installer.  To really know how to do WiX,
 - (and especially the UI), you need to understand the MSI installer.
 - A key point is that MSI (and hence WiX) is not really procedural.
 - MSI defines a number of tables (like Feature or CustomAction) in
 - an internal database.  WiX merely specifies how to fill these tables,
 - and the msiexec program merely cranks through the various tables,
 - processing each row.  It is true that you can do procedural things
 - via CustomActions, but to get them in order, you must specify columns
 - in the table with things like After="SomeOtherRowId".
 -
 - See "About the User Interface" and subordinate documents:
 -    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/about_the_user_interface.asp
-->

m4_include(WIX_DB_SHARED_WINMSIDIR/dbwix.m4)   <!-- Define common macros -->

<Wix xmlns="http://schemas.microsoft.com/wix/2003/01/wi">

  <!-- The ???? stuff asks WiX to create a unique GUID for us -->
  <Product Id='????????-????-????-????-????????????'
   Name='Berkeley DB WIX_DB_VERSION' Version='WIX_DB_VERSION.0'
   Manufacturer='Oracle Corporation' Language='1033'>

    <!-- Store files as a compressed 'cabinet' embedded in the .MSI file. -->
    <Package Id='????????-????-????-????-????????????'
     Keywords="Embedded Database Datastore"
     Description='Berkeley DB WIX_DB_VERSION'
     Comments='includes sources and binaries' InstallerVersion='200'
     Compressed='yes' Platforms="Intel"
     Languages="1033" SummaryCodepage="1252" />

    <Media Id='1' Cabinet='dbcore.cab' EmbedCab='yes' />

    COMMON_PROPERTIES()

    <!-- Declare properties for environment -->
    WIX_DB_ENV_FEATURE_PROPS()

    <Condition Message=
       "To install [ProductName], you must be running Windows 2000 or Windows XP.">
       <![CDATA[VersionNT>=500]]></Condition>

    <Condition Message=
      "You must have administrative access to install this product.">
      NOT Priviledged
    </Condition>

    <Directory Id="TARGETDIR" Name="SourceDir">
      <Directory Id="DesktopFolder" Name="." SourceName="." />
      <Directory Id="FavoritesFolder" Name="." SourceName="." />

      <Directory Id="ProgramFilesFolder" Name="." SourceName=".">
        <Directory Id="OracleFolder" Name="Oracle" LongName="Oracle">
          <Directory Id="INSTALLDIR" Name="WIX_DB_8CHAR_VERSION"
                   LongName="Berkeley DB WIX_DB_VERSION">
            <Directory Id="INSTALLUTIL" Name="instutil"
                   LongName="installutil">
            </Directory>


            <!-- Note: these guids must be changed when an installer
              -  for a new release is made available.
              -
              -  TODO: to play by the rules of components (see
              -  http://blogs.msdn.com/robmen/archive/2003/10/18/56497.aspx,
              -  "Component Rules 101" by Rob Mensching),
              -  we should devise a strategy for ALL guids (remember
              -  many are created by s_winmsi).  This should work:
              -
              -  Each guid is composed of three parts, like so:
              -     PPPPPPPP-VVVV-VVVV-HHHH-HHHHHHHHHHHH
              -  The P part is unique to the product, e.g.
              -  the bdb core installer might always use 9A3FE019.
              -  The V part is the version of the product, e.g.
              -  4.2.37 might be translated as 0402-0025   # 25 is 37 in hex
              -  The H part is a hash value created from the directory
              -  that houses the component.  Like if the component for
              -  the directory "bin/Debug" hashed to 1234567890abcdef,
              -  then the H part is 1234-567890abcdef.
              - 
              -  This scheme guarantees that rebuilds of the installer
              -  over the same release tree get the same GUIDs.
              -  But for a different release tree (which *should* get
              -  installed in a different directory, since install
              -  directories are named by release number), we will get
              -  completely different GUIDs.
              -->
            <Component Id="RequiredFiles"
                   Guid="13E1DF48-903B-11D9-8BDE-F66BAD1E3F3A"
                   KeyPath="yes" SharedDllRefCount="yes"
                   Location="either" DiskId="1">

              <File Id="LICENSE.txt" Name="LICENSE.txt"
                    src="WIX_DB_SRCDIR\LICENSE" />
              <File Id="README.txt" Name="README.txt"
                    src="WIX_DB_SRCDIR\README" />
	      <Registry Id="RootDir.RegistryVal" Root="HKLM"
                   Key="SOFTWARE\Oracle\Berkeley DB\WIX_DB_VERSION"
                   Name="RootDirectory" Value="[INSTALLDIR]" Type="string"
                   Action="write" />
              <CreateFolder />
            </Component>

            COMMON_COMPONENTS()

            <!-- <Directory>, <Component> generated from files.in -->
	    WIX_DB_DIRECTORY_STRUCTURE()

          </Directory>
        </Directory>
      </Directory>
      <Directory Id="ProgramMenuFolder" Name="." SourceName=".">
        <Directory Id="BerkeleyDbMenu" Name="WIX_DB_8CHAR_VERSION"
         LongName="Berkeley DB WIX_DB_VERSION" />
      </Directory>
    </Directory>

    <!-- <File>, <Shortcut> generated from links.in -->
    WIX_DB_LINKS()

    COMMON_FEATURES(`Berkeley DB')

    <!-- ================================================================ -->
    <UI>

      <Property Id="DefaultUIFont"><![CDATA[Tahoma8]]></Property>
      <TextStyle Id="Tahoma8" FaceName="Tahoma" Size="8" />

      DIALOG_WELCOME(MainWelcomeDlg, , ShowLicenseDlg)
      DIALOG_LICENSE(ShowLicenseDlg, MainWelcomeDlg, TargetFolderDlg,
                     `Berkeley DB')
      DIALOG_TARGET(TargetFolderDlg, ShowLicenseDlg, FeatureSelectionDlg)
      DIALOG_FEATURE(FeatureSelectionDlg, TargetFolderDlg, EnvVarDlg,
                     `Debug libraries are needed for working C/C++ examples.')
      DIALOG_ENVIRONMENT(EnvVarDlg, FeatureSelectionDlg, ReadyToInstallDlg)
      DIALOG_READY(ReadyToInstallDlg, EnvVarDlg, )

      DIALOG_PROGRESS(ShowProgressDlg, , )
      DIALOG_SUCCESS(InstallSuccessDlg, , , `Berkeley DB',
                     `Oracle Technology Network Berkeley DB forum')


      <!-- Here are extra admin dialogs -->
      DIALOG_ADMIN_CANCEL(CancelInstallerDlg)
      DIALOG_ADMIN_NOSPACE(OutOfSpaceDlg, FeatureSelectionDlg)
      DIALOG_ADMIN_INTERRUPTED(InstallErrorDlg, Return)
      DIALOG_ADMIN_INTERRUPTED(InstallCancelledDlg, Exit)


      <!-- This sequence tells MSI what to do when (at the highest level) -->
      <InstallUISequence>
        <Show Dialog="InstallErrorDlg" OnExit="error" />
        <Show Dialog="InstallCancelledDlg" OnExit="cancel" />
        <Show Dialog="InstallSuccessDlg" OnExit="success" />
        <Show Dialog="MainWelcomeDlg" After="CostFinalize" />
        <Show Dialog="ShowProgressDlg" After="MainWelcomeDlg" />
      </InstallUISequence>

      COMMON_UI_TEXT()
      <Property Id="MaxInstallSize">49 MB</Property>


    </UI>

    COMMON_EXECUTE_SEQUENCE()

  </Product>
</Wix>