เป็นเพียงภาคผนวกของคำตอบที่ดีทั้งหมดข้างต้นในกรณีที่มีคนไม่ทราบว่า VB / C # นั้นง่ายเพียงใดในการทำให้กระบวนการทั้งหมดลงไปที่ไฟล์ zip โดยอัตโนมัติ
ดังนั้นคุณเพียงแค่คว้าแอป Forms ง่ายๆจากเทมเพลต (หากคุณยังไม่มีแอปทำความสะอาด) และเพิ่มปุ่มลงไปจากนั้นคลิกเมื่อติดตั้งลงในเดสก์ท็อปของคุณโดยไม่ต้องกังวลกับการตั้งค่าพิเศษหรืออะไรมากมาย นี่คือรหัสทั้งหมดที่คุณต้องแนบไปกับปุ่ม:
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
สิ่งหนึ่งที่ต้องจำไว้คือการลบระบบไฟล์อาจผิดพลาดได้ง่าย รายการโปรดอย่างหนึ่งของฉันคือเมื่อฉันรู้ว่าฉันไม่สามารถลบโฟลเดอร์ได้เนื่องจากมีรายการที่สร้างโดย Visual Studio ในขณะที่เรียกใช้ด้วยสิทธิ์ระดับสูง (เพื่อที่ฉันจะได้แก้ไขข้อบกพร่องของบริการ)
ฉันจำเป็นต้องให้สิทธิ์ด้วยตนเองหรือฉันคิดว่าเรียกใช้แอพด้วยสิทธิ์ที่สูงขึ้นด้วย ไม่ว่าจะด้วยวิธีใดฉันคิดว่ามีคุณค่าบางอย่างในการใช้วิธีการที่ใช้ GUI แบบโต้ตอบผ่านสคริปต์โดยเฉพาะอย่างยิ่งเนื่องจากสิ่งนี้น่าจะเป็นสิ่งที่เสร็จสิ้นเมื่อสิ้นสุดวันอันยาวนานและคุณไม่ต้องการทราบในภายหลังว่าการสำรองข้อมูลของคุณ ไม่มีอยู่จริง ...