El TecnoBaúl de Kiquenet

Kiquenet boring stories

Zip y Powershell

Posted by kiquenet en 8 junio 2012

Utilidades para comprimir en ZIP utilizando SharpZipLib y DotNetZip.

# http://stackoverflow.com/questions/1153126/how-to-create-a-zip-archive-with-powershell
$ScriptDirectory = Split-Path $MyInvocation.MyCommand.Path

function Zip-SharpZipLib ([string]$deployzipFilePath, [string]$deployPath )
{
    <# [void] [System.Reflection.Assembly]::LoadWithPartialName("ICSharpCode.SharpZipLib")#>
    $zipLibraryPath =   [System.IO.Path]::GetFullPath(  [System.IO.Path]::Combine( $ScriptDirectory,  "ICSharpCode.SharpZipLib.dll" ));
    [void][System.Reflection.Assembly]::LoadFile($zipLibraryPath);
    $zip = new-object ICSharpCode.SharpZipLib.Zip.FastZip;
   
    "————– Deployment Script ————-"
    "Copy files to: $deployPath"
    "Zip file name: $deployZipFilePath"
    "——————————————————–"
    "Zipping up…."
    # zip the entire deployment folder and make one zip file
    $zip.CreateZip( $deployZipFilePath, $deployPath, [Boolean]"true", [string]::Empty );

    # Turn this on if you want to test if the zip is correct or not
    #$zip.ExtractZip( $deployZipFilePath, $deployPath+"_Extracted", [string]::Empty );
    "Zipping done…"
}

# http://dotnetzip.codeplex.com/wikipage?title=PS-Examples&referringTitle=Examples
# http://blogs.msdn.com/b/dotnetinterop/archive/2008/06/26/zip-creation-within-powershell.aspx
function Zip-DotNetZip ([string]$deployzipFilePath, [string]$deployPath )
{
    $zipLibraryPath =   [System.IO.Path]::GetFullPath(  [System.IO.Path]::Combine( $ScriptDirectory,  "Ionic.Zip.dll" ));
    [void][System.Reflection.Assembly]::LoadFrom($zipLibraryPath);

    $zipfile =  new-object Ionic.Zip.ZipFile
    $e= $zipfile.AddDirectory($deployPath, "home")
    $zipfile.Save("$deployzipFilePath")
    $zipfile.Dispose()
}

Anuncios

5 comentarios to “Zip y Powershell”

  1. Tiene buena pinta. Es una buena utilidad para realizar despliegues, gestión de backup y recuperación de estados.

    • kiquenet said

      Los despliegues son otro mundo … por descubrir 🙂 Y Powershell da mucha potencia. Sólo hay que seguir unas buenas prácticas…

      • Los despliegues en PS, te permiten gestionar versiones y puntos de retorno?

      • kiquenet said

        Powershell es sólo un instrumento que puedes hacer de todo. Te tienes que currar toda la gestión. Pero hay librerías de Deploy para PS, y además está WebDeploy…habría que evaluarlas…

      • Para los despliegues en IIS, WebDeploy esta muy bien para las migraciones de versiones antiguas y los despliegues en granjas. Y además se integra con VS2010…

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

 
A %d blogueros les gusta esto: