PowerShell / Microsoft.PowerShell.Archive

Archive PowerShell module contains cmdlets for working with ZIP archives
https://technet.microsoft.com/en-us/library/dn818910.aspx
MIT License
94 stars 37 forks source link

Compress-Archive -Update delete archive if file could not be appended #112

Open Platzer opened 2 years ago

Platzer commented 2 years ago

Description

When using Compress-Archive with -Update to append a file to an existing ZIP file, and the current file used is locked by another process the ZIP file is deleted. If it make sense or not to append an open file Compress-Archive should not remove a not empty archive.

Reproduce

# Setup test files
'Test file one content' > 'test_file_1.txt';
'Test file two content' > 'test_file_2.txt';

# Prepare file handle
$lockFile = Get-ChildItem '.\test_file_2.txt';
$lockTestFile2 = [System.IO.File]::Open($lockFile.FullName, [System.IO.FileMode]::Open, [System.IO.FileAccess]::Write, [System.IO.FileShare]::ReadWrite)

Compress-Archive -Path .\test_file_1.txt -DestinationPath 'ZipFile.zip' -Update

# Watch ZipFile.zip disappear
Compress-Archive -Path .\test_file_2.txt -DestinationPath 'ZipFile.zip' -Update

$lockTestFile2.Dispose();
Chris--A commented 2 years ago

This issue also occurs when -Path is empty:

@() | Compress-Archive -DestinationPath 'ZipFile.zip' -Update
ayousuf23 commented 2 years ago

I believe this issue is solved in the 2.0 preview, but I need to double check and make sure.