Hanya tambahan untuk semua jawaban bagus di atas jika seseorang tidak menyadari betapa mudahnya di VB / C # untuk mengotomatiskan seluruh proses ke arsip zip.
Jadi, Anda hanya perlu mengambil aplikasi Formulir sederhana dari templat (jika Anda belum memiliki aplikasi tata graha) dan menambahkan tombol ke sana, lalu ClickOnce menginstalnya ke desktop Anda tanpa mengkhawatirkan pengaturan khusus atau banyak hal lainnya. Ini semua kode yang perlu Anda lampirkan ke tombol:
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
Satu hal yang perlu diingat adalah bahwa penghapusan sistem file bisa salah dengan mudah. Salah satu favorit saya adalah ketika saya menyadari bahwa saya tidak dapat menghapus folder karena berisi item yang dibuat oleh Visual Studio saat berjalan dengan hak istimewa yang ditinggikan (sehingga saya dapat men-debug layanan).
Saya perlu memberikan izin secara manual atau, saya kira, menjalankan aplikasi dengan hak istimewa yang lebih tinggi juga. Either way, saya pikir ada beberapa nilai dalam menggunakan pendekatan berbasis GUI interaktif atas skrip, terutama karena ini kemungkinan adalah sesuatu yang dilakukan pada akhir hari yang panjang dan Anda tidak ingin mengetahui nanti bahwa cadangan Anda sebenarnya tidak ada ...