@@ -290,13 +290,14 @@ protected override void ProcessRecord()
290
290
break ;
291
291
292
292
case InputObjectParameterSet :
293
- foreach ( var inputObj in InputObject ) {
293
+ foreach ( var inputObj in InputObject )
294
+ {
294
295
string normalizedVersionString = Utils . GetNormalizedVersionString ( inputObj . Version . ToString ( ) , inputObj . Prerelease ) ;
295
296
ProcessInstallHelper (
296
297
pkgNames : new string [ ] { inputObj . Name } ,
297
298
pkgVersion : normalizedVersionString ,
298
299
pkgPrerelease : inputObj . IsPrerelease ,
299
- pkgRepository : new string [ ] { inputObj . Repository } ,
300
+ pkgRepository : new string [ ] { inputObj . Repository } ,
300
301
pkgCredential : Credential ,
301
302
reqResourceParams : null ) ;
302
303
}
@@ -430,8 +431,10 @@ private void RequiredResourceHelper(Hashtable reqResourceHash)
430
431
WriteDebug ( "In InstallPSResource::RequiredResourceHelper()" ) ;
431
432
foreach ( DictionaryEntry entry in reqResourceHash )
432
433
{
433
- InstallPkgParams pkgParams = new InstallPkgParams ( ) ;
434
+ InstallPkgParams pkgParams = new ( ) ;
434
435
PSCredential pkgCredential = Credential ;
436
+ string pkgVersion = String . Empty ;
437
+ bool isPrerelease = false ;
435
438
436
439
// The package name will be the key for the inner hashtable and is present for all scenarios,
437
440
// including the scenario where only package name is specified
@@ -450,8 +453,7 @@ private void RequiredResourceHelper(Hashtable reqResourceHash)
450
453
return ;
451
454
}
452
455
453
- string pkgVersion = String . Empty ;
454
- if ( ! ( entry . Value is Hashtable pkgInstallInfo ) )
456
+ if ( entry . Value is not Hashtable pkgInstallInfo )
455
457
{
456
458
var requiredResourceHashtableInputFormatError = new ErrorRecord (
457
459
new ArgumentException ( $ "The RequiredResource input with name '{ pkgName } ' does not have a valid value, the value must be a hashtable.") ,
@@ -467,7 +469,7 @@ private void RequiredResourceHelper(Hashtable reqResourceHash)
467
469
// Install-PSResource -RequiredResource @ { MyPackage = @{ version = '1.2.3', repository = 'PSGallery' } }
468
470
if ( pkgInstallInfo . Count != 0 )
469
471
{
470
- var pkgParamNames = pkgInstallInfo . Keys ;
472
+ ICollection pkgParamNames = pkgInstallInfo . Keys ;
471
473
472
474
foreach ( string paramName in pkgParamNames )
473
475
{
@@ -491,13 +493,27 @@ private void RequiredResourceHelper(Hashtable reqResourceHash)
491
493
}
492
494
493
495
pkgVersion = pkgInstallInfo [ "version" ] == null ? String . Empty : pkgInstallInfo [ "version" ] . ToString ( ) ;
496
+
497
+ // Prerelease - Handle both string and boolean
498
+ object prereleaseObj = pkgInstallInfo . ContainsKey ( "prerelease" ) ? pkgInstallInfo [ "prerelease" ] : null ;
499
+ if ( prereleaseObj != null )
500
+ {
501
+ if ( prereleaseObj is bool b )
502
+ {
503
+ isPrerelease = b ;
504
+ }
505
+ else if ( prereleaseObj is string s )
506
+ {
507
+ isPrerelease = s . Equals ( "true" , StringComparison . OrdinalIgnoreCase ) ;
508
+ }
509
+ }
494
510
}
495
511
496
512
ProcessInstallHelper (
497
513
pkgNames : new string [ ] { pkgName } ,
498
514
pkgVersion : pkgVersion ,
499
- pkgPrerelease : pkgParams . Prerelease ,
500
- pkgRepository : pkgParams . Repository != null ? new string [ ] { pkgParams . Repository } : new string [ ] { } ,
515
+ pkgPrerelease : isPrerelease ,
516
+ pkgRepository : pkgParams . Repository != null ? new string [ ] { pkgParams . Repository } : new string [ ] { } ,
501
517
pkgCredential : pkgCredential ,
502
518
reqResourceParams : pkgParams ) ;
503
519
}
@@ -506,7 +522,7 @@ private void RequiredResourceHelper(Hashtable reqResourceHash)
506
522
private void ProcessInstallHelper ( string [ ] pkgNames , string pkgVersion , bool pkgPrerelease , string [ ] pkgRepository , PSCredential pkgCredential , InstallPkgParams reqResourceParams )
507
523
{
508
524
WriteDebug ( "In InstallPSResource::ProcessInstallHelper()" ) ;
509
- var inputNameToInstall = Utils . ProcessNameWildcards ( pkgNames , removeWildcardEntries : false , out string [ ] errorMsgs , out bool nameContainsWildcard ) ;
525
+ var inputNameToInstall = Utils . ProcessNameWildcards ( pkgNames , removeWildcardEntries : false , out string [ ] errorMsgs , out bool nameContainsWildcard ) ;
510
526
if ( nameContainsWildcard )
511
527
{
512
528
WriteError ( new ErrorRecord (
@@ -549,7 +565,7 @@ private void ProcessInstallHelper(string[] pkgNames, string pkgVersion, bool pkg
549
565
this ) ) ;
550
566
}
551
567
552
- var installedPkgs = _installHelper . BeginInstallPackages (
568
+ IEnumerable < PSResourceInfo > installedPkgs = _installHelper . BeginInstallPackages (
553
569
names : pkgNames ,
554
570
versionRange : versionRange ,
555
571
nugetVersion : nugetVersion ,
0 commit comments