DSCResources/VH_x7Zip/VH_x7Zip.schema.psm1

# Powershell DSC Configuration Script for installing 7-Zip versions 15.06, 15.05, 9.38, and 9.20. This Configuration Script supports both 32-bit and 64-bit architectures for all 3 versions.
# Vasken Houdoverdov
#
# $MachineBits should be either "x64" or "x86"
# $VersionNumber should be "1506" or "1505" or "938" or "920"
# Exe installations are used for all 32-bit versions and the latest versions (15.06 and 15.05)
# MSI installations are used for the 64-bit versions of 9.38 and 9.20

Configuration VH_x7Zip
{
    param
    (
        [ValidateSet("1506","1505","938","920")] 
        [string]$VersionNumber = "1506",
        [ValidateSet("x86","x64")] 
        [string]$MachineBits = "x64",
        [string]$LocalPath = "$env:SystemDrive\Windows\DtlDownloads\7zip Setup " + $VersionNumber
    )

        Import-DscResource -ModuleName xPSDesiredStateConfiguration
        Import-DscResource -ModuleName PSDesiredStateConfiguration

    if($MachineBits -eq "x64")
    {
        if($VersionNumber -eq "938")
        {
            $installer = "msi"
            $URI = "http://www.7-zip.org/a/7z" + $VersionNumber + "-" + $MachineBits + ".$installer"
            $LocalPath = "$env:SystemDrive\Windows\DtlDownloads\7zip Setup " + $VersionNumber + ".$installer"
            $Name = "7-Zip 9.38 (x64 edition)"
        }
        if($VersionNumber -eq "920")
        {
            $installer = "msi"
            $URI = "http://www.7-zip.org/a/7z" + $VersionNumber + "-" + $MachineBits + ".$installer"
            $LocalPath = "$env:SystemDrive\Windows\DtlDownloads\7zip Setup " + $VersionNumber + ".$installer"
            $Name = "7-Zip 9.20 (x64 edition)"
        }
        if($VersionNumber -eq "1505")
        {
            $installer = "exe"
            $URI = "http://www.7-zip.org/a/7z" + $VersionNumber + "-" + $MachineBits + ".$installer"
            $LocalPath = "$env:SystemDrive\Windows\DtlDownloads\7zip Setup " + $VersionNumber + ".$installer"
            $Name = "7-Zip 15.05 beta x64"
        }
        if($VersionNumber -eq "1506")
        {
            $installer = "exe"
            $URI = "http://www.7-zip.org/a/7z" + $VersionNumber + "-" + $MachineBits + ".$installer"
            $LocalPath = "$env:SystemDrive\Windows\DtlDownloads\7zip Setup " + $VersionNumber + ".$installer"
            $Name = "7-Zip 15.06 beta (x64)"
        }

    }
    if($MachineBits -eq "x86")
    {
        $installer = "exe"
        if($VersionNumber -eq "1506")
        {
            $URI = "http://www.7-zip.org/a/7z" + $VersionNumber + ".$installer"
            $Name = "7-Zip 15.06 beta"
            $LocalPath = "$env:SystemDrive\Windows\DtlDownloads\7zip Setup " + $VersionNumber + ".$installer"
        }
        if($VersionNumber -eq "1505")
        {
            $URI = "http://www.7-zip.org/a/7z" + $VersionNumber + ".$installer"
            $Name = "7-Zip 15.05 beta"
            $LocalPath = "$env:SystemDrive\Windows\DtlDownloads\7zip Setup " + $VersionNumber + ".$installer"
        }
        if($VersionNumber -eq "938")
        {
            $URI = "http://www.7-zip.org/a/7z" + $VersionNumber + ".$installer"
            $Name = "7-Zip 9.38 beta"
            $LocalPath = "$env:SystemDrive\Windows\DtlDownloads\7zip Setup " + $VersionNumber + ".$installer"
        }
        if($VersionNumber -eq "920")
        {
            $URI = "http://www.7-zip.org/a/7z" + $VersionNumber + ".$installer"
            $Name = "7-Zip 9.20"
            $LocalPath = "$env:SystemDrive\Windows\DtlDownloads\7zip Setup " + $VersionNumber + ".$installer"
        }
    }

    xRemoteFile Downloader
    {
        Uri = $URI
        DestinationPath = $LocalPath
    }
  
  if($installer -eq "msi")
    { 
        $installArgs = "/q" 
    }
  if($installer -eq "exe")
    { 
        $installArgs = "/S" 
    }
    Package Installer
    {
        Ensure = "Present"
        Path = $LocalPath
        Name =  $Name
        ProductId = ''
        Arguments = $installArgs
        DependsOn = "[xRemoteFile]Downloader"
    }
 }