software installs and DependsON

Welcome Forums DSC (Desired State Configuration) software installs and DependsON

This topic contains 7 replies, has 4 voices, and was last updated by

 
Participant
2 years, 5 months ago.

  • Author
    Posts
  • #45115

    Participant
    Points: 0
    Rank: Member

    Hello
    not sure how to tell 'Something by Someone' needs to be installed first using the depondson.
    maybe DependsOn = “[Package]Something1”

    Packages = @(
    ProductID = {C58378BC-0B7B-474E-855C-0000000000}
    Name = 'Something1 '
    path = '\\domain.com\files\Hosting\Package\Installer1.msi'
    Shortname = 'Some'

    ProductID = {C58378BC-0B7B-474E-855C-1100000000}
    Name = 'Microsoft Runtime'
    path = '\\domain.com\files\Hosting\Package\Installer2.msi'
    Shortname = 'Ms Runtime'
    DependsOn = " ?????????"
    )

  • #45124

    Keymaster
    Points: 1,704
    Helping HandTeam Member
    Rank: Community Hero

    I'm not certain what that syntax is meant to do. I'm more used to seeing:

    Package SomethingOne {
     ProductID = {C58378BC-0B7B-474E-855C-0000000000}
     Name = 'Something1'
     path = '\\domain.com\files\Hosting\Package\Installer1.msi'
     Shortname = 'Some'
    }
    Package MSRuntime {
     ProductID = {C58378BC-0B7B-474E-855C-1100000000}
     Name = 'Microsoft Runtime'
     path = '\\domain.com\files\Hosting\Package\Installer2.msi'
     Shortname = 'Ms Runtime'
     DependsOn = " [Package]SomethingOne"
    }
    
  • #45154

    Participant
    Points: 0
    Rank: Member

    this is what I currently have to push installs. I don't have each package named like Sometingone or MSruntime as your example shows.

    Packages = @( #Packages on all nodes.
    @{
    ShortName = "symantec"
    Name = "scan Client"
    Path = "\\domain.com\files\hosting\Config\Package\scan-June24-14.msi"
    ProductID = "ECEA7878-2100-4525-915D-B09174E36971"
    }

    @{
    ShortName = 'ServerGAC'
    Name = 'ServerGACInstaller1'
    Path = '\\domain.com\files\hosting\Config\Package\ServerGACInstaller1.msi'
    ProductID = '6E25BE84-EC08-4151-91F3-00000'
    }

    @{
    ShortName = "URLRewrite2"
    Name = "IIS URL Rewrite Module 2"
    Path = "\\domain.com\files\hosting\Config\Package\rewrite_2.0.msi"
    ProductID = "EB675D0A-2C95-405B-BEE8-0000000"
    }
    @{
    ShortName = 'MySQL31'
    Name = 'MySQL Connector/ODBC'
    Path = '\\domain.com\files\hosting\Config\Package\mysql-connector-odbc2.msi'
    ProductID = 'BBFD9BC5-BB9A-4F9C-AD77-000'

    )
    MimeTypes = @(
    @{
    FileExtension = '.woff'
    Ensure = 'Present'
    }

    )
    CustomErrorFolders = @(
    @{
    Name = 'WebServices'
    Authors = 'DR_Weboperator'
    }
    )
    }

    • #45202

      Participant
      Points: 0
      Rank: Member

      That's just an array of Hash Tables. You have to use Resources inside Configurations in order to actually get DSC to do something.

      I would suggest using a Composite Resource, but that might be too advanced for now.

      Don is talking about this: https://msdn.microsoft.com/en-us/powershell/dsc/packageresource

      Make sure you fully understand the documentation on configurations before doing anything else: https://msdn.microsoft.com/en-us/powershell/dsc/configurations

    • #45206

      Participant
      Points: 0
      Rank: Member

      Oh yea, you're the guy that likes to use PSD1 files for generating all of your configurations.

      Something like this:

      foreach ($Package in $Node.Packages)
      {
          $PackageName = "Baseline_Remove_Package_" + $Package.ShortName
          Package $PackageName
          {
              Name = $Package.Name
              Path = $Package.Path
              Arguments = $Package.Arguments
              ProductID = $Package.ProductID
              Ensure = $Package.Ensure
          }
      }
      

      You indeed are creating exactly what Don is saying.

      "Package $PackageName" is the same as "[Package]$PackageName" when referencing the resource's "name" – so to speak.

      That must be 100% unique, so you can reference any and all resource items uniquely.

      Now what you can do is add DependsOn in your PSD1 and change the script to something like this:

      foreach ($Package in $Node.Packages)
      {
          $PackageName = "Baseline_Remove_Package_" + $Package.ShortName
          Package $PackageName
          {
              Name = $Package.Name
              Path = $Package.Path
              Arguments = $Package.Arguments
              ProductID = $Package.ProductID
              Ensure = $Package.Ensure
              if($Package.DependsOn){DependsOn = $Package.DependsOn}
          }
      }
      

      I hope that helps.

    • #45285

      Participant
      Points: 0
      Rank: Member

      thank you.
      that's me – inherited a huge DSC config.
      not sure why I have a ps1 and psd1 files?

    • #45625

      Participant
      Points: 0
      Rank: Member

      There's nothing wrong with doing it that way, but it seems mildly unnecessary.

      You can just create a Composite Resource and include that instead, but whatever floats your boat.

    • #45833

      Participant
      Points: 0
      Rank: Member

      Using 'if' inside Package resource won't work. You will have to move it outside the package block.

The topic ‘software installs and DependsON’ is closed to new replies.