forked from BUNPC/Homer3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreateInstallFile.m
164 lines (131 loc) · 5.39 KB
/
createInstallFile.m
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
function createInstallFile(options)
global installfilename
global platform
platform = [];
% Start with a clean slate
cleanup('','','start');
installfilename = sprintf('%s_install', lower(getAppname()));
[~, exename] = getAppname();
setNamespace(exename)
% Generate a LastCheckForUpdates.dat in case that we haven't run Homer
% before creating a build
checkForHomerUpdates()
if ~exist('options','var') || isempty(options)
options = 'all';
end
% Find installation path and add it to matlab search paths
dirnameApp = getAppDir();
if isempty(dirnameApp)
MessageBox('Cannot create installation package. Could not find root application folder.');
deleteNamespace(exename)
return;
end
dirnameInstall = filesepStandard(fileparts(which('createInstallFile.m')));
if isempty(dirnameInstall)
MessageBox('Cannot create installation package. Could not find root installation folder.');
deleteNamespace(exename)
return;
end
addpath(dirnameInstall, '-end')
cd(dirnameInstall);
% Set the executable names based on the platform type
platform = setplatformparams();
if exist([dirnameInstall, installfilename],'dir')
rmdir_safe([dirnameInstall, installfilename]);
end
if exist([dirnameInstall, installfilename, '.zip'],'file')
delete([dirnameInstall, installfilename, '.zip']);
end
mkdir([dirnameInstall, installfilename]);
mkdir([dirnameInstall, installfilename, '/FuncRegistry']);
mkdir([dirnameInstall, installfilename, '/FuncRegistry/UserFunctions']);
mkdir([dirnameInstall, installfilename, '/SubjDataSample']);
% Generate executables
if ~strcmp(options, 'nobuild')
Buildme_Setup();
Buildme();
if ~ispc()
c = str2cell(version(),'.');
mcrver = sprintf('v%s%s', c{1}, c{2});
if islinux()
perl('./makesetup.pl','./run_setup.sh','./setup.sh', mcrver);
elseif ismac()
perl('./makesetup.pl','./run_setup.sh','./setup.command', mcrver);
end
end
end
dirnameDb2DotMat = findWaveletDb2([dirnameInstall, installfilename]);
% Copy files to installation package folder
for ii = 1:length(platform.exename)
if exist([dirnameInstall, platform.exename{ii}],'file')
copyfile([dirnameInstall, platform.exename{ii}], [dirnameInstall, installfilename, '/', platform.exename{ii}]);
end
end
if exist([dirnameInstall, platform.setup_script],'file')==2
copyfile([dirnameInstall, platform.setup_script], [dirnameInstall, installfilename]);
end
for ii = 1:length(platform.setup_exe)
if exist([dirnameInstall, platform.setup_exe{ii}],'file')
if ispc()
copyfile([dirnameInstall, platform.setup_exe{1}], [dirnameInstall, installfilename, '/installtemp']);
else
copyfile([dirnameInstall, platform.setup_exe{ii}], [dirnameInstall, installfilename, '/', platform.setup_exe{ii}]);
end
end
end
if exist([dirnameApp, 'SubjDataSample'],'dir')
copyfile([dirnameApp, 'SubjDataSample'], [dirnameInstall, installfilename, '/SubjDataSample']);
end
for ii=1:length(platform.createshort_script)
if exist([dirnameInstall, platform.createshort_script{ii}],'file')
copyfile([dirnameInstall, platform.createshort_script{ii}], [dirnameInstall, installfilename]);
end
end
dirnameSrc = filesepStandard(fileparts(which([exename, '.m'])));
cfg = ConfigFileClass();
for ii = 1:length(cfg.filenames)
p = filesepStandard(fileparts(cfg.filenames{ii}));
k = strfind(p, dirnameSrc);
pathRelative = p(k+length(dirnameSrc):end);
fprintf('Copying %s to %s\n', cfg.filenames{ii}, [dirnameInstall, installfilename, '/', pathRelative]);
if ~ispathvalid([dirnameInstall, installfilename, '/', pathRelative])
mkdir([dirnameInstall, installfilename, '/', pathRelative])
end
copyfile(cfg.filenames{ii}, [dirnameInstall, installfilename, '/', pathRelative]);
end
if exist([dirnameApp, 'AppSettings.cfg'],'file')
copyfile([dirnameApp, 'AppSettings.cfg'], [dirnameInstall, installfilename]);
end
if exist([dirnameDb2DotMat, 'db2.mat'],'file')
copyfile([dirnameDb2DotMat, 'db2.mat'], [dirnameInstall, installfilename]);
end
if exist([dirnameInstall, 'makefinalapp.pl'],'file')
copyfile([dirnameInstall, 'makefinalapp.pl'], [dirnameInstall, installfilename]);
end
if exist([dirnameInstall, 'generateDesktopPath.bat'],'file')
copyfile([dirnameInstall, 'generateDesktopPath.bat'], [dirnameInstall, installfilename]);
end
if exist([dirnameApp, 'README.md'],'file')
copyfile([dirnameApp, 'README.md'], [dirnameInstall, installfilename]);
end
if exist([dirnameApp, 'FuncRegistry/UserFunctions'],'dir')
copyfile([dirnameApp, 'FuncRegistry/UserFunctions'], [dirnameInstall, installfilename, '/FuncRegistry/UserFunctions']);
end
if ispathvalid([dirnameInstall, 'uninstall.bat'])
copyfile([dirnameInstall, 'uninstall.bat'], [dirnameInstall, installfilename, '/uninstall.bat']);
end
if exist([dirnameApp, 'SDGcolors.csv'],'file')
copyfile([dirnameApp, 'SDGcolors.csv'], [dirnameInstall, installfilename]);
end
if exist([dirnameApp, 'Version.txt'],'file')
copyfile([dirnameApp, 'Version.txt'], [dirnameInstall, installfilename]);
end
if exist([dirnameApp, 'LastCheckForUpdates.dat'],'file')
copyfile([dirnameApp, 'LastCheckForUpdates.dat'], [dirnameInstall, installfilename]);
end
% Zip it all up into a single installation file
zip([dirnameInstall, installfilename, '.zip'], [dirnameInstall, installfilename]);
% Clean up
deleteNamespace(exename)
fclose all;
cleanup(dirnameInstall, dirnameApp);