@@ -272,36 +272,52 @@ function Find-UnitySetupInstaller {
272
272
[UnitySetupComponent ] $Components = [UnitySetupComponent ]::All
273
273
)
274
274
275
- $unitySetupRegEx = " ^(.+)\/([a-z0-9]+)\/Windows64EditorInstaller\/UnitySetup64-(\d+)\.(\d+)\.(\d+)([fpb])(\d+).exe$"
275
+ $currentOS = Get-OperatingSystem
276
+ switch ($currentOS ) {
277
+ ([OperatingSystem ]::Windows) {
278
+ $unitySetupRegEx = " ^(.+)\/([a-z0-9]+)\/Windows64EditorInstaller\/UnitySetup64-(\d+)\.(\d+)\.(\d+)([fpb])(\d+).exe$"
279
+ $targetSupport = " TargetSupportInstaller"
280
+ $installerExtension = " exe"
281
+ }
282
+ ([OperatingSystem ]::Linux) {
283
+ throw " Find-UnitySetupInstaller has not been implemented on the Linux platform. Contributions welcomed!" ;
284
+ }
285
+ ([OperatingSystem ]::Mac) {
286
+ $unitySetupRegEx = " ^(.+)\/([a-z0-9]+)\/MacEditorInstaller\/Unity-(\d+)\.(\d+)\.(\d+)([fpb])(\d+).pkg$"
287
+ $targetSupport = " MacEditorTargetInstaller"
288
+ $installerExtension = " pkg"
289
+ }
290
+ }
291
+
276
292
$knownBaseUrls = @ (
277
293
" https://download.unity3d.com/download_unity" ,
278
294
" https://netstorage.unity3d.com/unity" ,
279
295
" https://beta.unity3d.com/download"
280
296
)
281
297
282
298
$installerTemplates = @ {
283
- [UnitySetupComponent ]::Documentation = , " WindowsDocumentationInstaller/UnityDocumentationSetup-$Version .exe" ;
284
- [UnitySetupComponent ]::StandardAssets = , " WindowsStandardAssetsInstaller/UnityStandardAssetsSetup-$Version .exe" ;
285
- [UnitySetupComponent ]::UWP = " TargetSupportInstaller/UnitySetup-UWP-.NET-Support-for-Editor-$Version .exe" ,
286
- " TargetSupportInstaller/UnitySetup-Metro-Support-for-Editor-$Version .exe" ;
287
- [UnitySetupComponent ]::UWP_IL2CPP = , " TargetSupportInstaller/UnitySetup-UWP-IL2CPP-Support-for-Editor-$Version .exe" ;
288
- [UnitySetupComponent ]::Android = , " TargetSupportInstaller/UnitySetup-Android-Support-for-Editor-$Version .exe" ;
289
- [UnitySetupComponent ]::iOS = , " TargetSupportInstaller/UnitySetup-iOS-Support-for-Editor-$Version .exe" ;
290
- [UnitySetupComponent ]::AppleTV = , " TargetSupportInstaller/UnitySetup-AppleTV-Support-for-Editor-$Version .exe" ;
291
- [UnitySetupComponent ]::Facebook = , " TargetSupportInstaller/UnitySetup-Facebook-Games-Support-for-Editor-$Version .exe" ;
292
- [UnitySetupComponent ]::Linux = , " TargetSupportInstaller/UnitySetup-Linux-Support-for-Editor-$Version .exe" ;
293
- [UnitySetupComponent ]::Mac = " TargetSupportInstaller/UnitySetup-Mac-Support-for-Editor-$Version .exe" ,
294
- " TargetSupportInstaller/UnitySetup-Mac-Mono-Support-for-Editor-$Version .exe" ;
295
- [UnitySetupComponent ]::Vuforia = , " TargetSupportInstaller/UnitySetup-Vuforia-AR-Support-for-Editor-$Version .exe" ;
296
- [UnitySetupComponent ]::WebGL = , " TargetSupportInstaller/UnitySetup-WebGL-Support-for-Editor-$Version .exe" ;
297
- [UnitySetupComponent ]::Windows_IL2CPP = , " TargetSupportInstaller/UnitySetup-Windows-IL2CPP-Support-for-Editor-$Version .exe" ;
299
+ [UnitySetupComponent ]::UWP = " $targetSupport /UnitySetup-UWP-.NET-Support-for-Editor-$Version .$installerExtension " ,
300
+ " $targetSupport /UnitySetup-Metro-Support-for-Editor-$Version .$installerExtension " ;
301
+ [UnitySetupComponent ]::UWP_IL2CPP = , " $targetSupport /UnitySetup-UWP-IL2CPP-Support-for-Editor-$Version .$installerExtension " ;
302
+ [UnitySetupComponent ]::Android = , " $targetSupport /UnitySetup-Android-Support-for-Editor-$Version .$installerExtension " ;
303
+ [UnitySetupComponent ]::iOS = , " $targetSupport /UnitySetup-iOS-Support-for-Editor-$Version .$installerExtension " ;
304
+ [UnitySetupComponent ]::AppleTV = , " $targetSupport /UnitySetup-AppleTV-Support-for-Editor-$Version .$installerExtension " ;
305
+ [UnitySetupComponent ]::Facebook = , " $targetSupport /UnitySetup-Facebook-Games-Support-for-Editor-$Version .$installerExtension " ;
306
+ [UnitySetupComponent ]::Linux = , " $targetSupport /UnitySetup-Linux-Support-for-Editor-$Version .$installerExtension " ;
307
+ [UnitySetupComponent ]::Mac = " $targetSupport /UnitySetup-Mac-Support-for-Editor-$Version .$installerExtension " ,
308
+ " $targetSupport /UnitySetup-Mac-Mono-Support-for-Editor-$Version .$installerExtension " ;
309
+ [UnitySetupComponent ]::Vuforia = , " $targetSupport /UnitySetup-Vuforia-AR-Support-for-Editor-$Version .$installerExtension " ;
310
+ [UnitySetupComponent ]::WebGL = , " $targetSupport /UnitySetup-WebGL-Support-for-Editor-$Version .$installerExtension " ;
311
+ [UnitySetupComponent ]::Windows_IL2CPP = , " $targetSupport /UnitySetup-Windows-IL2CPP-Support-for-Editor-$Version .$installerExtension " ;
298
312
}
299
313
300
- $currentOS = Get-OperatingSystem
301
314
switch ($currentOS ) {
302
315
([OperatingSystem ]::Windows) {
303
316
$setupComponent = [UnitySetupComponent ]::Windows
304
317
$installerTemplates [$setupComponent ] = , " Windows64EditorInstaller/UnitySetup64-$Version .exe" ;
318
+
319
+ $installerTemplates [[UnitySetupComponent ]::Documentation ] = , " WindowsDocumentationInstaller/UnityDocumentationSetup-$Version .exe" ;
320
+ $installerTemplates [[UnitySetupComponent ]::StandardAssets ] = , " WindowsStandardAssetsInstaller/UnityStandardAssetsSetup-$Version .exe" ;
305
321
}
306
322
([OperatingSystem ]::Linux) {
307
323
$setupComponent = [UnitySetupComponent ]::Linux
@@ -311,9 +327,12 @@ function Find-UnitySetupInstaller {
311
327
}
312
328
([OperatingSystem ]::Mac) {
313
329
$setupComponent = [UnitySetupComponent ]::Mac
314
- # TODO: $installerTemplates[$setupComponent] = , "???/UnitySetup64 -$Version.exe ";
330
+ $installerTemplates [$setupComponent ] = , " MacEditorInstaller/Unity -$Version .pkg " ;
315
331
316
- throw " Find-UnitySetupInstaller has not been implemented on the Mac platform. Contributions welcomed!" ;
332
+ # Note: These links appear to be unavailable even on Unity's website for 2018.
333
+ # StandardAssets appears to work if you select a 2017 version.
334
+ $installerTemplates [[UnitySetupComponent ]::Documentation ] = , " MacDocumentationInstaller/DocumentationSetup-$Version .pkg" ;
335
+ $installerTemplates [[UnitySetupComponent ]::StandardAssets ] = , " MacStandardAssetsInstaller/StandardAssets-$Version .pkg" ;
317
336
}
318
337
}
319
338
@@ -370,12 +389,25 @@ function Find-UnitySetupInstaller {
370
389
$endpoint = [uri ][System.IO.Path ]::Combine($baseUrl , $linkComponents [1 ], $template );
371
390
try {
372
391
$testResult = Invoke-WebRequest $endpoint - Method HEAD - UseBasicParsing
392
+ # For packages on macOS the Content-Length and Last-Modified are returned as an array.
393
+ if ($testResult.Headers [' Content-Length' ] -is [System.Array ]) {
394
+ $installerLength = [int64 ]$testResult.Headers [' Content-Length' ][0 ]
395
+ }
396
+ else {
397
+ $installerLength = [int64 ]$testResult.Headers [' Content-Length' ]
398
+ }
399
+ if ($testResult.Headers [' Last-Modified' ] -is [System.Array ]) {
400
+ $lastModified = [System.DateTime ]$testResult.Headers [' Last-Modified' ][0 ]
401
+ }
402
+ else {
403
+ $lastModified = [System.DateTime ]$testResult.Headers [' Last-Modified' ]
404
+ }
373
405
$result = New-Object UnitySetupInstaller - Property @ {
374
406
' ComponentType' = $_ ;
375
407
' Version' = $Version ;
376
408
' DownloadUrl' = $endpoint ;
377
- ' Length' = [ int64 ] $testResult .Headers [ ' Content-Length ' ] ;
378
- ' LastModified' = ([ System.DateTime ] $testResult .Headers [ ' Last-Modified ' ]) ;
409
+ ' Length' = $installerLength ;
410
+ ' LastModified' = $lastModified ;
379
411
}
380
412
381
413
break
0 commit comments