-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathQSWATPlus3or4.iss
More file actions
205 lines (191 loc) · 7.37 KB
/
QSWATPlus3or4.iss
File metadata and controls
205 lines (191 loc) · 7.37 KB
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
197
198
199
200
201
202
203
204
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "QSWATPlus"
#define MyAppVersion "3.2"
#define MyAppSubVersion "2"
#define MyAppPublisher "SWAT"
#define MyAppURL "https://swat.tamu.edu/"
[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{6E4708E2-2338-4F19-AE25-1D7945D75EA0}
AppName={#MyAppName}
AppVersion={#MyAppVersion}.{#MyAppSubVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={userappdata}\QGIS\QGIS{code:QGIS3or4}\profiles\default\python\plugins
UsePreviousAppDir=no
DisableDirPage=yes
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=no
OutputDir=K:\QSWATPlusPub
OutputBaseFilename={#MyAppName}install3or4.{#MyAppVersion}.{#MyAppSubVersion}
Compression=lzma
SolidCompression=yes
PrivilegesRequired=lowest
PrivilegesRequiredOverridesAllowed=dialog
; use no for testing, yes for delivery??
UsePreviousPrivileges=no
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
[InstallDelete]
; replaced by QSWATPlusMain.py
Type: files; Name: "{code:QGISPLuginDir}\{#MyAppName}\QSWATPlus\QSWATPlus.py";
; was installed in wrong place
Type: filesandordirs; Name: "{code:QGISPLuginDir}\{#MyAppName}\testdata";
; clean up TauDEM539Bin
Type: files; Name: "{code:SWATPlusDir}\TauDEM539Bin\*";
; no longer used
Type: filesandordirs; Name: "{code:QGISPLuginDir}\{#MyAppName}\QSWATPlus\rtree";
[Files]
Source: "C:\Users\Chris\AppData\Roaming\QGIS\QGIS3\profiles\default\python\plugins\{#MyAppName}\*"; DestDir: "{code:QGISPLuginDir}\{#MyAppName}"; Excludes: "testdata,__pycache__"; Flags: ignoreversion recursesubdirs createallsubdirs
Source: "C:\SWAT\SWATPlus\TauDEM539_304Bin\*"; DestDir: "{code:SWATPlusDir}\TauDEM539Bin"; Flags: ignoreversion
Source: "{#SourcePath}Databases\QSWATPlusProj.sqlite"; DestDir: "{code:SWATPlusDir}\Databases"; Flags: ignoreversion
Source: "{#SourcePath}Databases\plant.csv"; DestDir: "{code:SWATPlusDir}\Databases"; Flags: ignoreversion
; Source: "{#SourcePath}Databases\QSWATPlusProjHAWQS.sqlite"; DestDir: "{code:SWATPlusDir}\Databases"; Flags: ignoreversion
; Source: "{#SourcePath}Databases\QSWATPlusRefHAWQS.sqlite"; DestDir: "{code:SWATPlusDir}\Databases"; Flags: ignoreversion
; Source: "{#SourcePath}Databases\SSURGO_Soils_HUC.sqlite"; DestDir: "{code:SWATPlusDir}\Databases"; Flags: ignoreversion
Source: "{#SourcePath}\GridGen\*"; DestDir: "{code:SWATPlusDir}\gwflow"; Flags: ignoreversion recursesubdirs createallsubdirs
[Code]
var
QGIS3or4HasRun: Boolean;
SWATPlusDirHasRun : Boolean;
SWATPlusDirResult: String;
QGISPluginDirHasRun : Boolean;
QGISPluginDirResult: String;
QGISMainVersion: String;
function QGIS3or4(Param: String): String; forward;
function MainQGISPluginDir(Param: String): String; forward;
function QGISDir(Dir: String; PartName: String): String; forward;
function SubSubVersion(Name: String): Integer; forward;
function QGIS3or4(Param: String): String;
begin
if not QGIS3or4HasRun then begin
case TaskDialogMsgBox('QGIS 3 or QGIS 4',
'Installing for QGIS 3 or QGIS 4?',
mbConfirmation,
MB_YESNO, ['QGIS 3', 'QGIS 4'],
0) of
IDYES: QGISMainVersion := '3';
IDNO: QGISMainVersion := '4';
end;
//MsgBox('QGIS main version is ' + QGISMainVersion, mbInformation, MB_OK);
end;
QGIS3or4HasRun := True;
Result := QGISMainVersion;
end;
function SWATPlusDir(Param: String): String;
begin
if not SWATPlusDirHasRun then begin
SWATPlusDirResult := ExpandConstant('{%USERPROFILE}') + '\SWATPlus'
if not DirExists(SWATPlusDirResult) then begin
SWATPlusDirResult := 'C:\SWAT\SWATPlus'
//MsgBox('SWATPlus directory is ' + SWATPlusDirResult, mbInformation, MB_OK);
end
end;
SWATPlusDirHasRun := True;
Result := SWATPlusDirResult;
end;
function QGISPluginDir(Param: String): String;
begin
if not QGISPluginDirHasRun then begin
if IsAdminInstallMode then begin
QGISPluginDirResult := MainQGISPluginDir(Param);
end else begin
QGISPluginDirResult := ExpandConstant('{app}');
end
end;
QGISPluginDirHasRun := True;
Result := QGISPluginDirResult;
end;
function MainQGISPluginDir(Param: String): String;
var
QGISDirectory: String;
MainQGISPluginDirResult: String;
pfDir: String;
begin
pfDir := ExpandConstant('{pf64}');
if QGISMainVersion = '4' then begin
QGISDirectory := QGISDir(pfDir, 'QGIS 4.0');
end else begin
QGISDirectory := QGISDir(pfDir, 'QGIS 3.44');
if QGISDirectory = '' then begin
QGISDirectory := QGISDir(pfDir, 'QGIS 3.40');
if QGISDirectory = '' then begin
QGISDirectory := QGISDir(pfDir, 'QGIS 3.36');
end;
end;
end;
if QGISDirectory = '' then begin
QGISDirectory := pfDir;
if not BrowseForFolder('Please locate QGIS directory', QGISDirectory, False) then
QGISDirectory := '';
end;
if QGISDirectory = '' then begin
MainQGISPluginDirResult := '';
end else
if DirExists(QGISDirectory + '/apps/qgis-ltr') then begin
MainQGISPluginDirResult := QGISDirectory + '/apps/qgis-ltr/python/plugins';
end else
if DirExists(QGISDirectory + '/apps/qgis') then begin
MainQGISPluginDirResult := QGISDirectory + '/apps/qgis/python/plugins';
end else
if DirExists(QGISDirectory + '/apps/qgis-dev') then begin
MainQGISPluginDirResult := QGISDirectory + '/apps/qgis-dev/python/plugins';
end;
//MsgBox('Result: ' + MainQGISPluginDirResult, mbInformation, MB_OK);
Result := MainQGISPluginDirResult;
end;
// Dir is pf64, PartName is eg QGIS 3.28 and we are searching for eg QGIS 3.28.8
function QGISDir(Dir: String; PartName: String): String;
var
DirResult: String;
FindRec: TFindRec;
SearchString: String;
CurrentSubSubVersion: Integer;
NextSubSubVersion: Integer;
begin
DirResult := '';
CurrentSubSubVersion := 0;
NextSubSubVersion := 0;
SearchString := Dir + '/' + PartName + '.*'
if FindFirst(SearchString, FindRec) then begin
try
repeat
if FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY = 16 then begin
NextSubSubVersion := SubSubVersion(FindRec.Name);
//MsgBox(Format('Current is %d, next is %d', [CurrentSubSubVersion, NextSubSubVersion]), mbInformation, MB_OK);
if NextSubSubVersion > CurrentSubSubVersion then begin
DirResult := Dir + '/' + FindRec.Name;
CurrentSubSubVersion := NextSubSubVersion;
end;
end;
until not FindNext(FindRec);
finally
FindClose(FindRec);
end;
end;
//MsgBox('QGIS directory: ' + DirResult, mbInformation, MB_OK);
Result:= DirResult;
end;
// if name is QGIS A.B.nn or QGIS A.B.n then return nn or n as an integer, else -1
function SubSubVersion(Name: String): Integer;
var
//I: Integer;
NumString: String;
begin
Result := -1
if WildcardMatch(Name, 'QGIS *.*.*') then begin
// start with possible two digits
NumString := Copy(Name, Length(Name) - 1, 2);
Result := StrToIntDef(NumString, -1);
if Result < 0 then begin
NumString := Copy(Name, Length(Name), 1);
Result := StrToIntDef(NumString, -1);
end
end;
end;