@@ -16,8 +16,6 @@ namespace CustomActions
1616 public class CustomActions
1717 {
1818 public static Session Session ;
19- public static string IisSitesDir = @"C:\inetpub\wwwroot\" ;
20- public static string TempDir = @"C:\inetpub\wwwroot\microtingTemp" ;
2119
2220 [ CustomAction ]
2321 public static ActionResult GetAPIsListCA ( Session session )
@@ -75,29 +73,30 @@ public static ActionResult InstallCA(Session session)
7573
7674 if ( session . CustomActionData [ "INSTMODE" ] != "Install" )
7775 return ActionResult . Success ;
78-
76+
77+ var tmpDir = session . CustomActionData [ "INSTALLFOLDER" ] + "microtingTemp" ;
78+
7979 var customerNumber = session . CustomActionData [ "CUSTOMERNUMBER" ] ;
8080 var domain = session . CustomActionData [ "DOMAINNAME" ] ;
8181
8282 session . Log ( "Get latest product version called" ) ;
83- GetProductLatestVersion ( TempDir ) ;
83+ GetProductLatestVersion ( tmpDir ) ;
8484 IncrementProgressBar ( session ) ;
8585
86- var uiPorts = Directory . GetDirectories ( IisSitesDir ) . Where ( t => t . Contains ( "_client_" ) ) . Select ( t => int . Parse ( t . Split ( '_' ) . Last ( ) ) ) ;
87- var nextUiPort = uiPorts . Any ( ) ? uiPorts . Max ( ) + 1 : 3000 ;
86+ var webApiPort = GetWebApiPort ( ) ;
87+ var nextUiPort = webApiPort - 2000 ;
8888 var uiName = $ "{ customerNumber } _{ domain } _client_{ nextUiPort } ";
89- var uiIisDir = IisSitesDir + uiName ;
90- var angularSolutionLocation = $@ "{ TempDir } \eform-client";
91- session . Log ( "Build Angullar app tasrk started" ) ;
89+ var uiIisDir = session . CustomActionData [ "INSTALLFOLDER" ] + uiName ;
90+ var angularSolutionLocation = $@ "{ tmpDir } \eform-client";
91+ session . Log ( "Build Angullar app task started" ) ;
9292 BuildAngularApp ( uiIisDir , angularSolutionLocation ) ;
9393 IncrementProgressBar ( session ) ;
9494
95- var webApiLocation = $@ "{ TempDir } \eFormAPI\eFormAPI";
96- var webApiPort = GetWebApiPort ( ) ;
95+ var webApiLocation = $@ "{ tmpDir } \eFormAPI\eFormAPI";
9796 var webApiName = $ "{ customerNumber } _{ domain } _{ webApiPort } ";
98- var webApiIisDir = IisSitesDir + webApiName ;
97+ var webApiIisDir = session . CustomActionData [ "INSTALLFOLDER" ] + webApiName ;
9998 session . Log ( "Build WebAPI called" ) ;
100- // Debugger.Launch();
99+
101100 BuildWebApi ( webApiLocation , webApiIisDir ) ;
102101 IncrementProgressBar ( session ) ;
103102 session . Log ( "Host WebAPI called" ) ;
@@ -120,11 +119,13 @@ public static ActionResult InstallCA(Session session)
120119 SaveInstances ( webApiName ) ;
121120 IncrementProgressBar ( session ) ;
122121
123- RunProcess ( $@ "{ TempDir } \eFormAPI\Installation\letsencrypt\letsencrypt.exe", $ "--plugin manual --manualhost { uiName } --webroot { IisSitesDir . TrimEnd ( '\\ ' ) } ") ;
122+ if ( session . CustomActionData [ "GENERATESSL" ] == "1" )
123+ RunProcess ( $@ "{ tmpDir } \eFormAPI\Installation\letsencrypt\letsencrypt.exe", $ "--plugin manual --manualhost { uiName } --webroot { session . CustomActionData [ "INSTALLFOLDER" ] . TrimEnd ( '\\ ' ) } ") ;
124+
124125 IncrementProgressBar ( session ) ;
125126
126127 session . Log ( "Clear temp dir called" ) ;
127- DeleteDirectory ( TempDir ) ;
128+ DeleteDirectory ( tmpDir ) ;
128129 IncrementProgressBar ( session ) ;
129130
130131 return ActionResult . Success ;
@@ -165,29 +166,33 @@ public static ActionResult UpdateCA(Session session)
165166 if ( session . CustomActionData [ "INSTMODE" ] != "Update" )
166167 return ActionResult . Success ;
167168
168- var api = session . CustomActionData [ "DOMAINNAME" ] . Split ( '_' ) ;
169+ var domainName = session . CustomActionData [ "DOMAINNAME" ] ;
170+ var api = domainName . Split ( '_' ) ;
169171 var domain = api [ 1 ] ;
170172 var customerNumber = api . First ( ) ;
171173 var apiPort = int . Parse ( api . Last ( ) ) ;
172174 var uiPort = apiPort - 2000 ;
173175
176+ var installDir = GetInstallDirrectory ( domainName ) ;
177+ var tmpDir = Path . Combine ( installDir + "microtingTemp" ) ;
178+
174179 // stop sites
175180 ControlSites ( customerNumber , domain , apiPort , uiPort , false ) ;
176181 IncrementProgressBar ( session ) ;
177182
178- GetProductLatestVersion ( TempDir ) ;
183+ GetProductLatestVersion ( tmpDir ) ;
179184 IncrementProgressBar ( session ) ;
180185
181186 // client update
182187 var uiName = $ "{ customerNumber } _{ domain } _client_{ uiPort } ";
183- var uiIisDir = @"C:\inetpub\wwwroot\" + uiName ;
188+ var uiIisDir = Path . Combine ( installDir + uiName ) ;
184189
185190 RunProcess ( @"sc" , $ "stop eformangular{ uiName . Replace ( "." , "" ) } .exe") ;
186191 Thread . Sleep ( 1000 ) ;
187192 RunProcess ( @"C:\Program Files\nodejs\node.exe" , "svc.js uninstall" , uiIisDir ) ;
188193 IncrementProgressBar ( session ) ;
189194
190- BuildAngularApp ( uiIisDir , TempDir + "\\ eform-client" ) ;
195+ BuildAngularApp ( uiIisDir , tmpDir + "\\ eform-client" ) ;
191196 IncrementProgressBar ( session ) ;
192197
193198
@@ -196,14 +201,14 @@ public static ActionResult UpdateCA(Session session)
196201
197202 // api update
198203 var webApiName = $ "{ customerNumber } _{ domain } _{ apiPort } ";
199- var webApiIisDir = @"C:\inetpub\wwwroot\" + webApiName ;
200- BuildWebApi ( TempDir + "\\ eFormAPI\\ eFormAPI" , webApiIisDir ) ;
204+ var webApiIisDir = Path . Combine ( installDir + webApiName ) ;
205+ BuildWebApi ( tmpDir + "\\ eFormAPI\\ eFormAPI" , webApiIisDir ) ;
201206 IncrementProgressBar ( session ) ;
202207
203208 ControlSites ( customerNumber , domain , apiPort , uiPort , true ) ;
204209 IncrementProgressBar ( session ) ;
205210
206- DeleteDirectory ( TempDir ) ;
211+ DeleteDirectory ( tmpDir ) ;
207212 IncrementProgressBar ( session ) ;
208213
209214 return ActionResult . Success ;
@@ -227,24 +232,26 @@ public static ActionResult RemoveCA(Session session)
227232
228233 ResetProgressBar ( session , 6 ) ;
229234
230- var api = session . CustomActionData [ "DOMAINNAME" ] . Split ( '_' ) ;
235+ var domainName = session . CustomActionData [ "DOMAINNAME" ] ;
236+ var api = domainName . Split ( '_' ) ;
231237 var domain = api [ 1 ] ;
232238 var customerNumber = api . First ( ) ;
233239 var apiPort = int . Parse ( api . Last ( ) ) ;
234240 var uiPort = apiPort - 2000 ;
235241
242+ var installDir = GetInstallDirrectory ( domainName ) ;
243+
236244 var uiName = $ "{ customerNumber } _{ domain } _client_{ uiPort } ";
237- var uiIisDir = @"C:\inetpub\wwwroot\" + uiName ;
245+ var uiIisDir = Path . Combine ( installDir + uiName ) ;
238246 var webApiName = $ "{ customerNumber } _{ domain } _{ apiPort } ";
239- var webApiIisDir = @"C:\inetpub\wwwroot\" + webApiName ;
240-
247+ var webApiIisDir = Path . Combine ( installDir + webApiName ) ;
248+
241249 // stop sites
242250 ControlSites ( customerNumber , domain , apiPort , uiPort , false ) ;
243251 IncrementProgressBar ( session ) ;
244252 RemoveSites ( customerNumber , domain , apiPort , uiPort ) ;
245253 IncrementProgressBar ( session ) ;
246254
247- //Debugger.Launch();
248255 RunProcess ( @"sc" , $ "stop eformangular{ uiName . Replace ( "." , "" ) } .exe") ;
249256 Thread . Sleep ( 1000 ) ;
250257 RunProcess ( @"C:\Program Files\nodejs\node.exe" , "svc.js uninstall" , uiIisDir ) ;
@@ -354,6 +361,15 @@ private static void HostWebApi(string webApiName, int port, string iisDir)
354361 }
355362 }
356363
364+ private static string GetInstallDirrectory ( string siteName )
365+ {
366+ using ( var serverManager = new ServerManager ( ) )
367+ {
368+ var sitePath = serverManager . Sites [ siteName ] . Applications [ "/" ] . VirtualDirectories [ "/" ] . PhysicalPath ;
369+ return new DirectoryInfo ( sitePath ) . Parent . FullName + "\\ " ;
370+ }
371+ }
372+
357373 private static void RunAngularAsWinService ( int webApiPort , int uiWinServicePort , string iisDir , string uiName )
358374 {
359375 var serverJs = File . ReadAllText ( iisDir + @"\server.js" ) ;
0 commit comments