Chỉ là một phụ lục cho tất cả các câu trả lời tốt ở trên trong trường hợp ai đó không nhận ra rằng trong VB / C # dễ dàng như thế nào để tự động hóa toàn bộ quy trình xuống kho lưu trữ zip.
Vì vậy, bạn chỉ cần lấy một ứng dụng Biểu mẫu đơn giản từ các mẫu (nếu bạn chưa có ứng dụng quản lý nhà) và thêm một nút vào đó và sau đó ClickOnce cài đặt nó vào màn hình của bạn mà không cần lo lắng về các cài đặt đặc biệt hoặc nhiều thứ khác. Đây là tất cả mã bạn cần đính kèm vào nút:
Imports System.IO.Compression
Private Sub btnArchive_Click(sender As Object, e As EventArgs) Handles btnArchive.Click
Dim src As String = "C:\Project"
Dim dest As String = Path.Combine("D:\Archive", "Stub" & Now.ToString("yyyyMMddHHmmss") & ".zip")
If IsProjectOpen() Then
MsgBox("Close projects first, (expletive deleted)", vbOKOnly)
Exit Sub
End If
If MsgBox("Are you sure you want to delete bin and obj folders?", vbOKCancel) = DialogResult.Cancel Then Exit Sub
If ClearBinAndObj(src) Then ZipFile.CreateFromDirectory(src, dest)
End Sub
Public Function ClearBinAndObj(targetDir As String) As Boolean
Dim dirstodelete As New List(Of String)
For Each d As String In My.Computer.FileSystem.GetDirectories(targetDir, FileIO.SearchOption.SearchAllSubDirectories, "bin")
dirstodelete.Add(d)
Next
For Each d As String In My.Computer.FileSystem.GetDirectories(targetDir, FileIO.SearchOption.SearchAllSubDirectories, "obj")
dirstodelete.Add(d)
Next
For Each d In dirstodelete
Try
Directory.Delete(d, True)
Catch ex As Exception
If MsgBox("Error: " & ex.Message & " - OK to continue?", vbOKCancel) = MsgBoxResult.Cancel Then Return False
End Try
Next
Return True
End Function
Public Function IsProjectOpen()
For Each clsProcess As Process In Process.GetProcesses()
If clsProcess.ProcessName.Equals("devenv") Then Return True
Next
Return False
End Function
Một điều cần nhớ là việc xóa hệ thống tệp có thể dễ dàng xảy ra sai sót. Một trong những mục yêu thích của tôi là khi tôi nhận ra rằng tôi không thể xóa một thư mục vì nó chứa các mục được tạo bởi Visual Studio trong khi chạy với các đặc quyền nâng cao (để tôi có thể gỡ lỗi một dịch vụ).
Tôi cần phải cấp quyền theo cách thủ công hoặc, tôi cho là cũng chạy ứng dụng với các đặc quyền nâng cao. Dù bằng cách nào, tôi nghĩ rằng có một số giá trị trong việc sử dụng phương pháp tiếp cận dựa trên GUI tương tác trên một tập lệnh, đặc biệt vì đây có thể là điều gì đó được thực hiện vào cuối một ngày dài và bạn không muốn tìm ra sau đó rằng bản sao lưu của mình không thực sự tồn tại ...