Ich habe endlich ein Skript erstellt, das kann dies richtig tun (mit Powershell)
Es verwendet WSPBuilder nicht, da ich oft ausgeliehen bin und es ungünstig ist, neue Software/zusätzliche Dateien herunterzuladen. Dies funktioniert OOTB.
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 | ? {!$_.psiscontainer}|select -expand fullname|%{'"'+$_+'" "'+$_.SubString($dirfullname.length+1)+'"'}) -join "`r`n"
$ddf
$ddf | Out-File -encoding UTF8 $ddfpath
makecab /F $ddfpath
rm $ddfpath
rm setup.inf
rm setup.rpt
}
Bitte lassen Sie mich wissen, wenn ich etwas falsch mache und/oder könnte besser sein.
Referenz:
http://www.pseale.com/blog/StrongOpinionSayNoToMAKECABEXE.aspx
In einigen Fällen Dateipfad und Namen "files.txt" auf "files.txt" hinzugefügt sowie. Dann wird files.txt auch in der test.cab sein. – Hinek