-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathQSWATPlus3_12.iss
167 lines (155 loc) · 6.15 KB
/
QSWATPlus3_12.iss
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
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!
#define MyAppName "QSWATPlus3_12"
#define MyAppVersion "2.5"
#define MyAppSubVersion "4"
#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\QGIS3\profiles\default\python\plugins
UsePreviousAppDir=no
DisableDirPage=yes
DefaultGroupName={#MyAppName}
DisableProgramGroupPage=no
OutputDir=C:\QSWATPlusPub
OutputBaseFilename={#MyAppName}install{#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: "C:\SWAT\SWATPlus\TauDEM539Bin\*";
[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: "C:\SWAT\SWATPlus\TauDEM539Bin"; Flags: ignoreversion
Source: "{#SourcePath}Databases\QSWATPlusProj.sqlite"; DestDir: "C:\SWAT\SWATPlus\Databases"; Flags: ignoreversion
Source: "{#SourcePath}Databases\plant.csv"; DestDir: "C:\SWAT\SWATPlus\Databases"; Flags: ignoreversion
; Source: "{#SourcePath}Databases\QSWATPlusProjHAWQS.sqlite"; DestDir: "C:\SWAT\SWATPlus\Databases"; Flags: ignoreversion
; Source: "{#SourcePath}Databases\QSWATPlusRefHAWQS.sqlite"; DestDir: "C:\SWAT\SWATPlus\Databases"; Flags: ignoreversion
; Source: "{#SourcePath}Databases\SSURGO_Soils_HUC.sqlite"; DestDir: "C:\SWAT\SWATPlus\Databases"; Flags: ignoreversion
Source: "{#SourcePath}\GridGen\*"; DestDir: "C:\SWAT\SWATPlus\gwflow"; Flags: ignoreversion recursesubdirs createallsubdirs
[Code]
var
QGISPluginDirHasRun : Boolean;
QGISPluginDirResult: String;
function MainQGISPluginDir(Param: String): String; forward;
function QGISDir(Dir: String; PartName: String): String; forward;
function SubSubVersion(Name: String): Integer; forward;
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}');
QGISDirectory := QGISDir(pfDir, 'QGIS 3.34');
if QGISDirectory = '' then begin
QGISDirectory := QGISDir(pfDir, 'QGIS 3.34');
if QGISDirectory = '' then begin
QGISDirectory := QGISDir(pfDir, 'QGIS 3.34');
if QGISDirectory = '' then begin
QGISDirectory := QGISDir(pfDir, 'QGIS 3.36');
if QGISDirectory = '' then begin
QGISDirectory := pfDir;
if not BrowseForFolder('Please locate QGIS directory', QGISDirectory, False) then
QGISDirectory := '';
end;
end;
end;
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;