34 lines
909 B
PowerShell
34 lines
909 B
PowerShell
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 |