FrmZip.designer.vb
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class FrmZip
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.Label1 = New System.Windows.Forms.Label
Me.Label2 = New System.Windows.Forms.Label
Me.tbDirToZip = New System.Windows.Forms.TextBox
Me.tbZipToCreate = New System.Windows.Forms.TextBox
Me.btnDirBrowse = New System.Windows.Forms.Button
Me.btnZipUp = New System.Windows.Forms.Button
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar
Me.ProgressBar2 = New System.Windows.Forms.ProgressBar
Me.lblStatus = New System.Windows.Forms.Label
Me.btnCancel = New System.Windows.Forms.Button
Me.SuspendLayout()
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Location = New System.Drawing.Point(11, 13)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(78, 13)
Me.Label1.TabIndex = 0
Me.Label1.Text = "directory to zip:"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(11, 39)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(84, 13)
Me.Label2.TabIndex = 1
Me.Label2.Text = "zip file to create:"
'
'tbDirToZip
'
Me.tbDirToZip.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.tbDirToZip.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest
Me.tbDirToZip.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.FileSystemDirectories
Me.tbDirToZip.Location = New System.Drawing.Point(107, 9)
Me.tbDirToZip.Name = "tbDirToZip"
Me.tbDirToZip.Size = New System.Drawing.Size(327, 20)
Me.tbDirToZip.TabIndex = 2
'
'tbZipToCreate
'
Me.tbZipToCreate.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.tbZipToCreate.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.Suggest
Me.tbZipToCreate.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.FileSystem
Me.tbZipToCreate.Location = New System.Drawing.Point(106, 35)
Me.tbZipToCreate.Name = "tbZipToCreate"
Me.tbZipToCreate.Size = New System.Drawing.Size(327, 20)
Me.tbZipToCreate.TabIndex = 6
'
'btnDirBrowse
'
Me.btnDirBrowse.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.btnDirBrowse.Location = New System.Drawing.Point(440, 10)
Me.btnDirBrowse.Name = "btnDirBrowse"
Me.btnDirBrowse.Size = New System.Drawing.Size(32, 19)
Me.btnDirBrowse.TabIndex = 4
Me.btnDirBrowse.Text = "..."
Me.btnDirBrowse.UseVisualStyleBackColor = True
'
'btnZipUp
'
Me.btnZipUp.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.btnZipUp.Location = New System.Drawing.Point(377, 72)
Me.btnZipUp.Name = "btnZipUp"
Me.btnZipUp.Size = New System.Drawing.Size(94, 23)
Me.btnZipUp.TabIndex = 0
Me.btnZipUp.Text = "Zip It!"
Me.btnZipUp.UseVisualStyleBackColor = True
'
'ProgressBar1
'
Me.ProgressBar1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.ProgressBar1.Location = New System.Drawing.Point(12, 105)
Me.ProgressBar1.Name = "ProgressBar1"
Me.ProgressBar1.Size = New System.Drawing.Size(459, 13)
Me.ProgressBar1.TabIndex = 6
'
'ProgressBar2
'
Me.ProgressBar2.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.ProgressBar2.Location = New System.Drawing.Point(13, 124)
Me.ProgressBar2.Name = "ProgressBar2"
Me.ProgressBar2.Size = New System.Drawing.Size(459, 13)
Me.ProgressBar2.TabIndex = 7
'
'lblStatus
'
Me.lblStatus.Anchor = CType(((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.lblStatus.AutoSize = True
Me.lblStatus.Location = New System.Drawing.Point(11, 148)
Me.lblStatus.Name = "lblStatus"
Me.lblStatus.Size = New System.Drawing.Size(16, 13)
Me.lblStatus.TabIndex = 8
Me.lblStatus.Text = "..."
'
'btnCancel
'
Me.btnCancel.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.btnCancel.Enabled = False
Me.btnCancel.Location = New System.Drawing.Point(277, 72)
Me.btnCancel.Name = "btnCancel"
Me.btnCancel.Size = New System.Drawing.Size(94, 23)
Me.btnCancel.TabIndex = 8
Me.btnCancel.Text = "Cancel"
Me.btnCancel.UseVisualStyleBackColor = True
'
'Form1
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(484, 172)
Me.Controls.Add(Me.btnCancel)
Me.Controls.Add(Me.lblStatus)
Me.Controls.Add(Me.ProgressBar2)
Me.Controls.Add(Me.ProgressBar1)
Me.Controls.Add(Me.btnZipUp)
Me.Controls.Add(Me.btnDirBrowse)
Me.Controls.Add(Me.tbZipToCreate)
Me.Controls.Add(Me.tbDirToZip)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.MinimumSize = New System.Drawing.Size(500, 208)
Me.Name = "Form1"
Me.Text = "DotNetZip WinForms VB Zip Creator"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Label2 As System.Windows.Forms.Label
Friend WithEvents tbDirToZip As System.Windows.Forms.TextBox
Friend WithEvents tbZipToCreate As System.Windows.Forms.TextBox
Friend WithEvents btnDirBrowse As System.Windows.Forms.Button
Friend WithEvents btnZipUp As System.Windows.Forms.Button
Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
Friend WithEvents ProgressBar2 As System.Windows.Forms.ProgressBar
Friend WithEvents lblStatus As System.Windows.Forms.Label
Friend WithEvents btnCancel As System.Windows.Forms.Button
End Class
FrmZip.vb
Imports System.IO
Imports Ionic.Zip
Imports System.Threading
Imports System.ComponentModel
Public Class FrmZip
Private _backgroundWorker1 As System.ComponentModel.BackgroundWorker
Private _saveCanceled As Boolean
Private _totalBytesAfterCompress As Long
Private _totalBytesBeforeCompress As Long
Private _nFilesCompleted As Integer
Private _progress2MaxFactor As Integer
Private _entriesToZip As Integer
Private _appCuKey As Microsoft.Win32.RegistryKey
'Private AppRegyPath As String = "Software\Ionic\VBzipUp"
Private rvn_ZipFile As String = "zipfile"
Private rvn_DirToZip As String = "dirToZip"
' Delegates for invocation of UI from other threads
Private Delegate Sub SaveEntryProgress(ByVal e As SaveProgressEventArgs)
Private Delegate Sub ButtonClick(ByVal sender As Object, ByVal e As EventArgs)
Private Sub btnDirBrowse_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnDirBrowse.Click
Dim folderName As String = Me.tbDirToZip.Text
Dim dlg1 As New FolderBrowserDialog
dlg1.SelectedPath = IIf(Directory.Exists(folderName), folderName, "c:\")
dlg1.ShowNewFolderButton = False
If (dlg1.ShowDialog = DialogResult.OK) Then
'Me._folderName = dlg1.get_SelectedPath
Me.tbDirToZip.Text = folderName
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnZipUp.Click
Me.KickoffZipup()
End Sub
Private Sub KickoffZipup()
Dim folderName As String = Me.tbDirToZip.Text
If (((Not folderName Is Nothing) AndAlso (folderName <> "")) AndAlso ((Not Me.tbZipToCreate.Text Is Nothing) AndAlso (Me.tbZipToCreate.Text <> ""))) Then
If File.Exists(Me.tbZipToCreate.Text) Then
If (MessageBox.Show(String.Format("The file you have specified ({0}) already exists. Do you want to overwrite this file?", _
Me.tbZipToCreate.Text), "Confirmation is Required", _
MessageBoxButtons.YesNo, MessageBoxIcon.Question) <> DialogResult.Yes) Then
Return
End If
File.Delete(Me.tbZipToCreate.Text)
End If
Me._saveCanceled = False
Me._nFilesCompleted = 0
Me._totalBytesAfterCompress = 0
Me._totalBytesBeforeCompress = 0
Me.btnZipUp.Enabled = False
Me.btnZipUp.Text = "Zipping..."
Me.btnCancel.Enabled = True
Me.lblStatus.Text = "Zipping..."
Dim options As New WorkerOptions
options.ZipName = Me.tbZipToCreate.Text
options.Folder = folderName
_backgroundWorker1 = New System.ComponentModel.BackgroundWorker()
_backgroundWorker1.WorkerSupportsCancellation = False
_backgroundWorker1.WorkerReportsProgress = False
AddHandler Me._backgroundWorker1.DoWork, New DoWorkEventHandler(AddressOf Me.DoSave)
_backgroundWorker1.RunWorkerAsync(options)
End If
End Sub
Private Sub DoSave(ByVal sender As Object, ByVal e As DoWorkEventArgs)
Dim options As WorkerOptions = e.Argument
'Try
Using zip1 As ZipFile = New ZipFile
zip1.AddDirectory(options.Folder)
Me._entriesToZip = zip1.EntryFileNames.Count
' Me.SetProgressBars()
AddHandler zip1.SaveProgress, New EventHandler(Of SaveProgressEventArgs)(AddressOf Me.zip1_SaveProgress)
zip1.Save(options.ZipName)
End Using
'Catch exc1 As Exception
' MessageBox.Show(String.Format("Exception while zipping: {0}", exc1.Message))
' Me.btnCancel_Click(Nothing, Nothing)
'End Try
End Sub
Private Sub zip1_SaveProgress(ByVal sender As Object, ByVal e As SaveProgressEventArgs)
If Me._saveCanceled Then
e.Cancel = True
Return
End If
Select Case e.EventType
Case ZipProgressEventType.Saving_AfterWriteEntry
'Me.StepArchiveProgress(e)
Exit Select
Case ZipProgressEventType.Saving_Completed
Me.SaveCompleted()
Exit Select
Case ZipProgressEventType.Saving_EntryBytesRead
' Me.StepEntryProgress(e)
Exit Select
End Select
End Sub
' Private Sub StepArchiveProgress(ByVal e As SaveProgressEventArgs)
' If Me.progressBar1.InvokeRequired Then
' Me.progressBar1.Invoke(New SaveEntryProgress(AddressOf Me.StepArchiveProgress), New Object() {e})
' ElseIf Not Me._saveCanceled Then
' Me._nFilesCompleted += 1
' Me.progressBar1.PerformStep()
' Me._totalBytesAfterCompress = (Me._totalBytesAfterCompress + e.CurrentEntry.CompressedSize)
' Me._totalBytesBeforeCompress = (Me._totalBytesBeforeCompress + e.CurrentEntry.UncompressedSize)
' ' progressBar2 is the one dealing with the item being added to the archive
' ' if we got this event, then the add of that item (or file) is complete, so we
' ' update the progressBar2 appropriately.
' Me.progressBar2.Value = Me.progressBar2.Maximum = 1
' MyBase.Update()
' End If
' End Sub
Private Sub SaveCompleted()
If Me.lblStatus.InvokeRequired Then
Me.lblStatus.Invoke(New MethodInvoker(AddressOf SaveCompleted))
'Me.lblStatus.Invoke(New MethodInvoker(Me, DirectCast(Me.SaveCompleted, IntPtr)))
Else
Me.lblStatus.Text = String.Format("Done, Compressed {0} files, {1:N0}% of original", Me._nFilesCompleted, ((100 * Me._totalBytesAfterCompress) / CDbl(Me._totalBytesBeforeCompress)))
Me.ResetState()
End If
End Sub
' Private Sub StepEntryProgress(ByVal e As SaveProgressEventArgs)
' If Me.progressBar2.InvokeRequired Then
' Me.progressBar2.Invoke(New SaveEntryProgress(AddressOf Me.StepEntryProgress), New Object() {e})
' ElseIf Not Me._saveCanceled Then
' If (Me.progressBar2.Maximum = 1) Then
' Dim entryMax As Long = e.TotalBytesToTransfer
' Dim absoluteMax As Long = &H7FFFFFFF
' Me._progress2MaxFactor = 0
' Do While (entryMax > absoluteMax)
' entryMax = (entryMax / 2)
' Me._progress2MaxFactor += 1
' Loop
' If (CInt(entryMax) < 0) Then
' entryMax = (entryMax * -1)
' End If
' Me.progressBar2.Maximum = CInt(entryMax)
' Me.lblStatus.Text = String.Format("{0} of {1} files...({2})", (Me._nFilesCompleted + 1), Me._entriesToZip, e.CurrentEntry.FileName)
' End If
' Dim xferred As Integer = CInt((e.BytesTransferred >> Me._progress2MaxFactor))
' Me.progressBar2.Value = IIf((xferred >= Me.progressBar2.Maximum), Me.progressBar2.Maximum, xferred)
' MyBase.Update()
' End If
' End Sub
Private Sub ResetState()
Me.btnCancel.Enabled = False
Me.btnZipUp.Enabled = True
Me.btnZipUp.Text = "Zip it!"
Me.progressBar1.Value = 0
Me.progressBar2.Value = 0
Me.Cursor = Cursors.Default
End Sub
' Private Sub SetProgressBars()
' If Me.ProgressBar1.InvokeRequired Then
' 'Me.ProgressBar1.Invoke(New MethodInvoker(Me, DirectCast(Me.SetProgressBars, IntPtr)))
' Me.ProgressBar1.Invoke(New MethodInvoker(AddressOf SetProgressBars))
' Else
' Me.ProgressBar1.Value = 0
' Me.ProgressBar1.Maximum = Me._entriesToZip
' Me.ProgressBar1.Minimum = 0
' Me.ProgressBar1.Step = 1
' Me.ProgressBar2.Value = 0
' Me.ProgressBar2.Minimum = 0
' Me.ProgressBar2.Maximum = 1
' Me.ProgressBar2.Step = 2
' End If
' End Sub
' Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
' If Me.lblStatus.InvokeRequired Then
' Me.lblStatus.Invoke(New ButtonClick(AddressOf Me.btnCancel_Click), New Object() {sender, e})
' Else
' Me._saveCanceled = True
' Me.lblStatus.Text = "Canceled..."
' Me.ResetState()
' End If
' End Sub
' Private Sub SaveFormToRegistry()
' If AppCuKey IsNot Nothing Then
' If Not String.IsNullOrEmpty(tbZipToCreate.Text) Then
' AppCuKey.SetValue(rvn_ZipFile, Me.tbZipToCreate.Text)
' End If
' If Not String.IsNullOrEmpty(tbDirToZip.Text) Then
' AppCuKey.SetValue(rvn_DirToZip, tbDirToZip.Text)
' End If
' End If
' End Sub
' Private Sub LoadFormFromRegistry()
' If AppCuKey IsNot Nothing Then
' Dim s As String
' s = AppCuKey.GetValue(rvn_ZipFile)
' If Not String.IsNullOrEmpty(s) Then
' Me.tbZipToCreate.Text = s
' End If
' s = AppCuKey.GetValue(rvn_DirToZip)
' If Not String.IsNullOrEmpty(s) Then
' tbDirToZip.Text = s
' End If
' End If
' End Sub
' Public ReadOnly Property AppCuKey() As Microsoft.Win32.RegistryKey
' Get
' If (_appCuKey Is Nothing) Then
' Me._appCuKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(AppRegyPath, True)
' If (Me._appCuKey Is Nothing) Then
' Me._appCuKey = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(AppRegyPath)
' End If
' End If
' Return _appCuKey
' End Get
' End Property
' Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
' SaveFormToRegistry()
' End Sub
' Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' LoadFormFromRegistry()
' End Sub
End Class
Public Class WorkerOptions
' Fields
'Public Comment As String
'Public CompressionLevel As CompressionLevel
'Public Encoding As String
'Public Encryption As EncryptionAlgorithm
Public Folder As String
'Public Password As String
'Public Zip64 As Zip64Option
'Public ZipFlavor As Integer
Public ZipName As String
End Class