param( [Parameter(Mandatory=$true)] [string]$dir, [Parameter(Mandatory=$true)] [string]$output ) function compress-directory([string]$dir, [string]$output) { $ddf = ".OPTION EXPLICIT .Set CabinetNameTemplate=$output .Set DiskDirectory1=. .Set CompressionType=MSZIP .Set Cabinet=on .Set Compress=on .Set CabinetFileCountThreshold=0 .Set FolderFileCountThreshold=0 .Set FolderSizeThreshold=0 .Set MaxCabinetSize=0 .Set MaxDiskFileCount=0 .Set MaxDiskSize=0 " $dirfullname = (get-item $dir).fullname $ddfpath = ($env:TEMP+"\temp.ddf") $ddf += (ls -recurse $dir | where { !$_.PSIsContainer } | select -ExpandProperty FullName | foreach { '"' + $_ + '" "' + $_.SubString($dirfullname.length+1) + '"' }) -join "`r`n" $ddf $ddf | Out-File -Encoding UTF8 $ddfpath makecab.exe /F $ddfpath rm $ddfpath rm setup.inf rm setup.rpt } compress-directory $dir $output