1 |
|
---|
2 | ////////////////////////////////////////////////////////////////////////////////
|
---|
3 | //
|
---|
4 | // File Name: Setup.rul
|
---|
5 | //
|
---|
6 | // Description: InstallShield script
|
---|
7 | //
|
---|
8 | // Comments: This script was generated based on the selections you made in
|
---|
9 | // the Project Wizard. Refer to the help topic entitled "Modify
|
---|
10 | // the script that the Project Wizard generates" for information
|
---|
11 | // on possible next steps.
|
---|
12 | //
|
---|
13 | ////////////////////////////////////////////////////////////////////////////////
|
---|
14 |
|
---|
15 |
|
---|
16 | // Include header files
|
---|
17 |
|
---|
18 | #include "ifx.h"
|
---|
19 |
|
---|
20 | ////////////////////// string defines ////////////////////////////
|
---|
21 |
|
---|
22 | // these macros should match the MSI properties with the same names
|
---|
23 | #define GSDL "gsdl"
|
---|
24 | #define GSDL_COLLECTION "bbc"
|
---|
25 | #define GSDL_SUBCOLLECTION "bfi1"
|
---|
26 |
|
---|
27 |
|
---|
28 |
|
---|
29 | //////////////////// installation declarations ///////////////////
|
---|
30 |
|
---|
31 | // ----- DLL function prototypes -----
|
---|
32 |
|
---|
33 |
|
---|
34 | // your DLL function prototypes
|
---|
35 |
|
---|
36 |
|
---|
37 | // ---- script function prototypes -----
|
---|
38 |
|
---|
39 |
|
---|
40 | // your script function prototypes
|
---|
41 | prototype check_registry();
|
---|
42 | prototype edit_gsdlsite();
|
---|
43 |
|
---|
44 | // your global variables
|
---|
45 | BOOL bIsMulti;
|
---|
46 | STRING szInstallDir;
|
---|
47 |
|
---|
48 | //////////////////////////////////////////////////////////////////////////////
|
---|
49 | //
|
---|
50 | // FUNCTION: OnFirstUIBefore
|
---|
51 | //
|
---|
52 | // EVENT: FirstUIBefore event is sent when installation is run for the first
|
---|
53 | // time on given machine. In the handler installation usually displays
|
---|
54 | // UI allowing end user to specify installation parameters. After this
|
---|
55 | // function returns, FeatureTransferData is called to perform file
|
---|
56 | // transfer.
|
---|
57 | //
|
---|
58 | ///////////////////////////////////////////////////////////////////////////////
|
---|
59 | function OnFirstUIBefore()
|
---|
60 | number nResult;
|
---|
61 | string szTitle, szMsg;
|
---|
62 | string szTargetPath;
|
---|
63 | string szDir, svSetupType;
|
---|
64 | number nvSize;
|
---|
65 | begin
|
---|
66 | // TO DO: if you want to enable background, window title, and caption bar title
|
---|
67 | // SetTitle( @PRODUCT_NAME, 24, WHITE );
|
---|
68 | // SetTitle( @PRODUCT_NAME, 0, BACKGROUNDCAPTION );
|
---|
69 | // Enable( FULLWINDOWMODE );
|
---|
70 | // Enable( BACKGROUND );
|
---|
71 | // SetColor(BACKGROUND,RGB (0, 128, 128));
|
---|
72 |
|
---|
73 | SHELL_OBJECT_FOLDER = @PRODUCT_NAME;
|
---|
74 |
|
---|
75 | svSetupType = "Full";
|
---|
76 | szDir = INSTALLDIR;
|
---|
77 |
|
---|
78 | // check if this collection is a second or subsequent volume
|
---|
79 | // in a multi-volume set (check_registry sets the bIsMulti and
|
---|
80 | // szInstallDir variables)
|
---|
81 | bIsMulti = FALSE;
|
---|
82 | szInstallDir = "";
|
---|
83 | check_registry();
|
---|
84 |
|
---|
85 |
|
---|
86 | Dlg_Start:
|
---|
87 | // beginning of dialogs label
|
---|
88 |
|
---|
89 | Dlg_SdWelcome:
|
---|
90 | szTitle = "";
|
---|
91 | szMsg = "";
|
---|
92 | nResult = SdWelcome( szTitle, szMsg );
|
---|
93 | if (nResult = BACK) goto Dlg_Start;
|
---|
94 |
|
---|
95 | // If we're installing a subsequent volume of a multi-volume set
|
---|
96 | // we won't give the user the option of where to install it. We'll
|
---|
97 | // just force them to install it in the same place as the previous
|
---|
98 | // volume.
|
---|
99 | Dlg_SdAskDestPath:
|
---|
100 | if (!bIsMulti) then
|
---|
101 | szTitle = "";
|
---|
102 | szMsg = "";
|
---|
103 | nResult = SdAskDestPath( szTitle, szMsg, szDir, 0 );
|
---|
104 | INSTALLDIR = szDir;
|
---|
105 | if (nResult = BACK) goto Dlg_SdWelcome;
|
---|
106 | else
|
---|
107 | szDir = szInstallDir;
|
---|
108 | INSTALLDIR = szDir;
|
---|
109 | endif;
|
---|
110 |
|
---|
111 | Dlg_SetupType:
|
---|
112 | szTitle = "";
|
---|
113 | szMsg = "";
|
---|
114 | nResult = SdSetupTypeEx ( szTitle , szMsg , "" , svSetupType , 0 );
|
---|
115 | if (nResult = BACK) then
|
---|
116 | if (bIsMulti) then
|
---|
117 | goto Dlg_SdWelcome;
|
---|
118 | else
|
---|
119 | goto Dlg_SdAskDestPath;
|
---|
120 | endif;
|
---|
121 | else
|
---|
122 | szTargetPath = INSTALLDIR;
|
---|
123 | nvSize = 0;
|
---|
124 | FeatureCompareSizeRequired(MEDIA,szTargetPath,nvSize);
|
---|
125 | if (nvSize != 0) then
|
---|
126 | MessageBox( szSdStr_NotEnoughSpace, WARNING );
|
---|
127 | goto Dlg_SetupType;
|
---|
128 | endif;
|
---|
129 | endif;
|
---|
130 |
|
---|
131 | Enable(STATUSEX);
|
---|
132 |
|
---|
133 | return 0;
|
---|
134 | end;
|
---|
135 |
|
---|
136 | ///////////////////////////////////////////////////////////////////////////////
|
---|
137 | //
|
---|
138 | // FUNCTION: OnMaintUIBefore
|
---|
139 | //
|
---|
140 | // EVENT: MaintUIBefore event is sent when end user runs installation that
|
---|
141 | // has already been installed on the machine. Usually this happens
|
---|
142 | // through Add/Remove Programs applet. In the handler, installation
|
---|
143 | // usually displays UI allowing end user to modify existing installation
|
---|
144 | // or uninstall application. After this function returns,
|
---|
145 | // FeatureTransferData is called to perform file transfer.
|
---|
146 | //
|
---|
147 | ///////////////////////////////////////////////////////////////////////////////
|
---|
148 | function OnMaintUIBefore()
|
---|
149 | NUMBER nResult, nType;
|
---|
150 | STRING szTitle, szMsg, svDir, svResult, szCaption;
|
---|
151 | begin
|
---|
152 | // TO DO: if you want to enable background, window title, and caption bar title
|
---|
153 | // SetTitle( @PRODUCT_NAME, 24, WHITE );
|
---|
154 | // SetTitle( @PRODUCT_NAME, 0, BACKGROUNDCAPTION );
|
---|
155 | // SetColor(BACKGROUND,RGB (0, 128, 128));
|
---|
156 | // Enable( FULLWINDOWMODE );
|
---|
157 | // Enable( BACKGROUND );
|
---|
158 |
|
---|
159 | Dlg_Start:
|
---|
160 | Disable(BACKBUTTON);
|
---|
161 | nType = SdWelcomeMaint(szTitle, szMsg, MODIFY);
|
---|
162 | Enable(BACKBUTTON);
|
---|
163 |
|
---|
164 | if (nType = REMOVEALL) then
|
---|
165 | svResult = SdLoadString(IFX_MAINTUI_MSG);
|
---|
166 | szCaption = SdLoadString(IFX_ONMAINTUI_CAPTION);
|
---|
167 | nResult = SprintfBox(MB_OKCANCEL,szCaption,"%s",svResult);
|
---|
168 | if (nResult = IDCANCEL) goto Dlg_Start;
|
---|
169 | endif;
|
---|
170 |
|
---|
171 | nResult = NEXT;
|
---|
172 |
|
---|
173 | Dlg_SdFeatureTree:
|
---|
174 | if (nType = MODIFY) then
|
---|
175 | szTitle = "";
|
---|
176 | szMsg = "";
|
---|
177 | nResult = SdFeatureTree(szTitle, szMsg, TARGETDIR, "", 2);
|
---|
178 | if (nResult = BACK) goto Dlg_Start;
|
---|
179 | endif;
|
---|
180 |
|
---|
181 | switch(nType)
|
---|
182 | case REMOVEALL: ComponentRemoveAll();
|
---|
183 | case REPAIR: ComponentReinstall();
|
---|
184 | endswitch;
|
---|
185 |
|
---|
186 | Enable(STATUSEX);
|
---|
187 | end;
|
---|
188 | ///////////////////////////////////////////////////////////////////////////////
|
---|
189 | //
|
---|
190 | // FUNCTION: OnFirstUIAfter
|
---|
191 | //
|
---|
192 | // EVENT: FirstUIAfter event is sent after file transfer, when installation
|
---|
193 | // is run for the first time on given machine. In this event handler
|
---|
194 | // installation usually displays UI that will inform end user that
|
---|
195 | // installation has been completed successfully.
|
---|
196 | //
|
---|
197 | ///////////////////////////////////////////////////////////////////////////////
|
---|
198 | function OnFirstUIAfter()
|
---|
199 | STRING szTitle, szMsg1, szMsg2, szOption1, szOption2;
|
---|
200 | NUMBER bOpt1, bOpt2;
|
---|
201 | STRING szGSDLHOME, szGDBMHOME;
|
---|
202 | begin
|
---|
203 | Disable(STATUSEX);
|
---|
204 |
|
---|
205 | // edit the gsdlsite.cfg file
|
---|
206 | edit_gsdlsite();
|
---|
207 |
|
---|
208 | bOpt1 = FALSE;
|
---|
209 | bOpt2 = FALSE;
|
---|
210 | szMsg1 = SdLoadString(IFX_SDFINISH_MSG1);
|
---|
211 | SdFinishEx(szTitle, szMsg1, szMsg2, szOption1, szOption2, bOpt1, bOpt2);
|
---|
212 | end;
|
---|
213 |
|
---|
214 |
|
---|
215 | // check the registry to find out if this collection is the second
|
---|
216 | // or subsequent volume of a multi-volume set
|
---|
217 | function check_registry ()
|
---|
218 | STRING szKey, szName, svValue;
|
---|
219 | NUMBER nvType, nvSize;
|
---|
220 | begin
|
---|
221 |
|
---|
222 | bIsMulti = FALSE;
|
---|
223 | szInstallDir = "";
|
---|
224 |
|
---|
225 | szKey = "SOFTWARE\\" + GSDL + "\\" + @PRODUCT_VERSION + "\\" + GSDL_COLLECTION;
|
---|
226 | szName = "gsdlhome";
|
---|
227 |
|
---|
228 | RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
|
---|
229 | if (RegDBGetKeyValueEx(szKey, szName, nvType, svValue, nvSize) == 0) then
|
---|
230 | bIsMulti = TRUE;
|
---|
231 | szInstallDir = svValue;
|
---|
232 | endif;
|
---|
233 |
|
---|
234 | end;
|
---|
235 |
|
---|
236 | // edit the gsdlsite.cfg file - this should be done after
|
---|
237 | // the files have been copied across
|
---|
238 | // note the the gsdlsite.cfg component should have its "never
|
---|
239 | // overwrite" attribute set so that subsequent volumes of a
|
---|
240 | // multi-volume set don't overwrite the existing file
|
---|
241 | function edit_gsdlsite ()
|
---|
242 | STRING szFileName, svResult;
|
---|
243 | BOOL bIsFullInstall;
|
---|
244 | begin
|
---|
245 |
|
---|
246 | szFileName = INSTALLDIR ^ "gsdlsite.cfg";
|
---|
247 |
|
---|
248 | bIsFullInstall = FeatureIsItemSelected(MEDIA, "full_install");
|
---|
249 |
|
---|
250 | if (!bIsMulti) then
|
---|
251 | // set top level gsdlhome and gdbmhome fields
|
---|
252 | // only if this isn't the second or subsequent
|
---|
253 | // volume
|
---|
254 | if (bIsFullInstall) then
|
---|
255 | WriteProfString(szFileName, "gsdl", "gsdlhome", INSTALLDIR);
|
---|
256 | else
|
---|
257 | WriteProfString(szFileName, "gsdl", "gsdlhome", SRCDIR ^ "gsdl");
|
---|
258 | endif;
|
---|
259 | WriteProfString(szFileName, "gsdl", "gdbmhome", INSTALLDIR);
|
---|
260 |
|
---|
261 | // set the "collections" line
|
---|
262 | WriteProfString(szFileName, "gsdl", "collections",
|
---|
263 | GSDL_COLLECTION + "#" + GSDL_SUBCOLLECTION);
|
---|
264 |
|
---|
265 | else
|
---|
266 |
|
---|
267 | // append this volume to the existing "collections" line
|
---|
268 | GetProfString(szFileName, "gsdl", "collections", svResult);
|
---|
269 | if (StrLengthChars(svResult) > 0) then
|
---|
270 | svResult = svResult + ",";
|
---|
271 | endif;
|
---|
272 | svResult = svResult + GSDL_COLLECTION + "#" + GSDL_SUBCOLLECTION;
|
---|
273 | WriteProfString(szFileName, "gsdl", "collections", svResult);
|
---|
274 |
|
---|
275 | endif;
|
---|
276 |
|
---|
277 | // add the "collection#volume" section
|
---|
278 | if (bIsFullInstall) then
|
---|
279 | WriteProfString(szFileName, GSDL_COLLECTION + "#" + GSDL_SUBCOLLECTION,
|
---|
280 | "gsdlhome", INSTALLDIR);
|
---|
281 | else
|
---|
282 | WriteProfString(szFileName, GSDL_COLLECTION + "#" + GSDL_SUBCOLLECTION,
|
---|
283 | "gsdlhome", SRCDIR ^ "gsdl");
|
---|
284 | endif;
|
---|
285 | WriteProfString(szFileName, GSDL_COLLECTION + "#" + GSDL_SUBCOLLECTION,
|
---|
286 | "gdbmhome", INSTALLDIR);
|
---|
287 |
|
---|
288 |
|
---|
289 | end; |
---|