Просто додаток до всіх точних відповідей вище, якщо хтось не усвідомлює, наскільки легко в VB / C # автоматизувати весь процес до архіву zip.
Таким чином, ви просто берете просту програму Форми із шаблонів (якщо у вас ще немає програми ведення домашнього господарства) і додаєте до неї кнопку, а потім ClickOnce встановлюєте її на робочий стіл, не турбуючись про спеціальні налаштування чи багато чого іншого. Це весь код, який потрібно прикріпити до кнопки:
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 під час роботи з підвищеними привілеями (щоб я міг налагоджувати службу).
Мені потрібно було вручну дати дозвіл або, я припускаю, також запустити програму з підвищеними привілеями. У будь-якому випадку, я думаю, що певне значення має використання інтерактивного підходу, заснованого на графічному інтерфейсі, над сценарієм, тим більше, що це, швидше за все, щось робиться в кінці довгого дня, і ви не хочете пізніше з’ясовувати, що ваша резервна копія насправді не існує ...