mirror of
https://github.com/EverythingWindows/ShiftOS-TheRevival-Old.git
synced 2025-01-23 10:12:16 +00:00
97 lines
5.4 KiB
VB.net
97 lines
5.4 KiB
VB.net
Imports System.IO
|
|
Imports System.IO.Compression
|
|
|
|
Module Com_Unzip
|
|
Public UnzipString As String
|
|
|
|
Public Sub Unzip()
|
|
UnzipString = RawCommand.Substring(6)
|
|
If UnzipString Like "-d '*.zip'" Then
|
|
Dim UnzipEXE() As String = UnzipString.Split("''")
|
|
NewLine(UnzipEXE(1))
|
|
If File.Exists(Console.CurrentDirectory & "\" & UnzipEXE(1)) = True Then
|
|
Dim UnzipDir As String = UnzipEXE(1).Replace(".zip", "")
|
|
NewLine(UnzipDir)
|
|
Dim UnzipRandomInt As Integer
|
|
Dim UnzipRandom As New Random
|
|
UnzipRandomInt = UnzipRandom.Next(1, 1000000)
|
|
NewLine("Creating temporary place for selected archive...")
|
|
Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
|
|
NewLine("Extracting the file from a zip file...")
|
|
ZipFile.ExtractToDirectory(Console.CurrentDirectory & "\" & UnzipEXE(1), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
|
|
NewLine("Copying the extracted file into the current directory...")
|
|
Directory.CreateDirectory(Console.CurrentDirectory & "\" & UnzipDir)
|
|
CopyDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, Console.CurrentDirectory & "\" & UnzipDir)
|
|
NewLine("Removing temporary place of the file...")
|
|
Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, True)
|
|
Else
|
|
|
|
End If
|
|
End If
|
|
If UnzipString Like "-f '*.zip'" Then
|
|
Dim UnzipEXE() As String = UnzipString.Split("''")
|
|
NewLine(UnzipEXE(1))
|
|
If File.Exists(Console.CurrentDirectory & "\" & UnzipEXE(1)) = True Then
|
|
Dim UnzipDir As String = UnzipEXE(1).Replace(".zip", "")
|
|
NewLine(UnzipDir)
|
|
Dim UnzipRandomInt As Integer
|
|
Dim UnzipRandom As New Random
|
|
UnzipRandomInt = UnzipRandom.Next(1, 1000000)
|
|
NewLine("Creating temporary place for selected archive...")
|
|
Directory.CreateDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
|
|
NewLine("Extracting the file from a zip file...")
|
|
ZipFile.ExtractToDirectory(Console.CurrentDirectory & "\" & UnzipEXE(1), Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt)
|
|
NewLine("Copying the extracted file into the current directory...")
|
|
Directory.CreateDirectory(Console.CurrentDirectory & "\" & UnzipDir)
|
|
CopyDirectory(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, Console.CurrentDirectory)
|
|
NewLine("Removing temporary place of the file...")
|
|
Directory.Delete(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\ShiftOS\SysShiftFS\UNZIP" & UnzipRandomInt, True)
|
|
Else
|
|
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
Public Sub CopyDirectory(ByVal SourcePath As String, ByVal DestPath As String, Optional ByVal Overwrite As Boolean = False)
|
|
Dim SourceDir As DirectoryInfo = New DirectoryInfo(SourcePath)
|
|
Dim DestDir As DirectoryInfo = New DirectoryInfo(DestPath)
|
|
|
|
' the source directory must exist, otherwise throw an exception
|
|
If SourceDir.Exists Then
|
|
' if destination SubDir's parent SubDir does not exist throw an exception
|
|
If Not DestDir.Parent.Exists Then
|
|
Throw New DirectoryNotFoundException _
|
|
("Destination directory does not exist: " + DestDir.Parent.FullName)
|
|
End If
|
|
|
|
If Not DestDir.Exists Then
|
|
DestDir.Create()
|
|
End If
|
|
|
|
' copy all the files of the current directory
|
|
Dim ChildFile As FileInfo
|
|
For Each ChildFile In SourceDir.GetFiles()
|
|
If Overwrite Then
|
|
ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), True)
|
|
Else
|
|
' if Overwrite = false, copy the file only if it does not exist
|
|
' this is done to avoid an IOException if a file already exists
|
|
' this way the other files can be copied anyway...
|
|
NewLine("Copying " & ChildFile.Name & "...")
|
|
If Not File.Exists(Path.Combine(DestDir.FullName, ChildFile.Name)) Then
|
|
ChildFile.CopyTo(Path.Combine(DestDir.FullName, ChildFile.Name), False)
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
' copy all the sub-directories by recursively calling this same routine
|
|
Dim SubDir As DirectoryInfo
|
|
For Each SubDir In SourceDir.GetDirectories()
|
|
CopyDirectory(SubDir.FullName, Path.Combine(DestDir.FullName,
|
|
SubDir.Name), Overwrite)
|
|
Next
|
|
Else
|
|
Throw New DirectoryNotFoundException("Source directory does not exist: " + SourceDir.FullName)
|
|
End If
|
|
End Sub
|
|
End Module
|