diff --git a/ApplicationEvents.vb b/ApplicationEvents.vb
new file mode 100644
index 00000000..ff8bc9aa
--- /dev/null
+++ b/ApplicationEvents.vb
@@ -0,0 +1,88 @@
+Imports Microsoft.Win32
+Imports Microsoft.VisualBasic.ControlChars
+Imports System.Management
+
+Namespace My
+
' Los siguientes eventos están disponibles para MyApplication:
+ '
+ ' Inicio: se desencadena cuando se inicia la aplicación, antes de que se cree el formulario de inicio.
+ ' Apagado: generado después de cerrar todos los formularios de la aplicación. Este evento no se genera si la aplicación termina de forma anómala.
+ ' UnhandledException: generado si la aplicación detecta una excepción no controlada.
+ ' StartupNextInstance: se desencadena cuando se inicia una aplicación de instancia única y la aplicación ya está activa.
+ ' NetworkAvailabilityChanged: se desencadena cuando la conexión de red está conectada o desconectada.
+ Partial Friend Class MyApplication
+
+ Private Sub Start(sender As Object, e As EventArgs) Handles Me.Startup
+ AddHandler Microsoft.Win32.SystemEvents.UserPreferenceChanged, AddressOf SysEvts_UserPreferenceChanged
+ AddHandler Microsoft.Win32.SystemEvents.DisplaySettingsChanging, AddressOf SysEvts_DisplaySettingsChanging
+ AddHandler Microsoft.Win32.SystemEvents.DisplaySettingsChanged, AddressOf SysEvts_DisplaySettingsChanged
+ End Sub
+
+ Private Sub CatchEmAll(sender As Object, e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException
+ ExceptionForm.ErrorText.Text = e.Exception.ToString() & CrLf & CrLf &
+ "Error Message: " & e.Exception.Message & CrLf & CrLf &
+ "Error Code (HRESULT): " & e.Exception.HResult
+ Try
+ ' Get basic information about the system. This does not include any personally identifiable information (PII) or
+ ' serial numbers that can identify the computer this program is run on
+ Dim CS_Searcher As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT Manufacturer, Model FROM Win32_ComputerSystem")
+ Dim BIOS_Searcher As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT Name, Description, SMBIOSBIOSVersion FROM Win32_BIOS")
+ Dim Proc_Searcher As ManagementObjectSearcher = New ManagementObjectSearcher("SELECT Name, Caption, Manufacturer, Family FROM Win32_Processor")
+ Dim CS_Results As ManagementObjectCollection = CS_Searcher.Get()
+ Dim BIOS_Results As ManagementObjectCollection = BIOS_Searcher.Get()
+ Dim Proc_Results As ManagementObjectCollection = Proc_Searcher.Get()
+ ExceptionForm.ErrorText.AppendText(CrLf & CrLf &
+ "Machine information:" & CrLf)
+ For Each CS_Result As ManagementObject In CS_Results
+ ExceptionForm.ErrorText.AppendText(" - Computer manufacturer: " & CS_Result("Manufacturer") & CrLf &
+ " - Computer model: " & CS_Result("Model") & CrLf)
+ Next
+ For Each BIOS_Result As ManagementObject In BIOS_Results
+ ExceptionForm.ErrorText.AppendText(" - BIOS name/description: " & BIOS_Result("Name") & " " & BIOS_Result("Description") & CrLf &
+ " - System Management BIOS (SMBIOS) version: " & BIOS_Result("SMBIOSBIOSVersion") & CrLf & CrLf)
+ Next
+ ExceptionForm.ErrorText.AppendText("Operating system information:" & CrLf &
+ " - OS name: " & My.Computer.Info.OSFullName & CrLf &
+ " - OS version: " & My.Computer.Info.OSVersion & CrLf &
+ " - OS Platform: " & My.Computer.Info.OSPlatform & CrLf &
+ " - Is a 64-bit system? " & If(Environment.Is64BitOperatingSystem, "Yes", "No") & CrLf & CrLf &
+ "Processor information:" & CrLf)
+ For Each Proc_Result As ManagementObject In Proc_Results
+ ExceptionForm.ErrorText.AppendText(" - Processor name: " & Proc_Result("Name") & CrLf &
+ " - Processor caption: " & Proc_Result("Caption") & CrLf &
+ " - Processor manufacturer: " & Proc_Result("Manufacturer") & CrLf &
+ " - Processor family (WMI type): " & Proc_Result("Family") & CrLf &
+ " NOTE: refer to the following website to get the exact family type of your processor:" & CrLf &
+ " https://learn.microsoft.com/en-us/windows/win32/cimwin32prov/win32-processor" & CrLf & CrLf)
+ Next
+ ExceptionForm.ErrorText.AppendText("This information is gathered to help isolate the issue to a specific hardware or software configuration. " &
+ "No information that can be used to identify the user or the exact system is gathered." & CrLf & CrLf &
+ "If you don't want to send this information to the developers, paste the text that was copied to the clipboard in a text editor, remove this information, and copy the new text again.")
+ Catch ex As Exception
+ ' Could not get basic machine information
+ End Try
+ ExceptionForm.ShowDialog()
+ If ExceptionForm.DialogResult = DialogResult.OK Then
+ e.ExitApplication = False
+ ElseIf ExceptionForm.DialogResult = DialogResult.Cancel Then
+ e.ExitApplication = True
+ End If
+ End Sub
+
+ Private Sub SysEvts_UserPreferenceChanged(sender As Object, e As Microsoft.Win32.UserPreferenceChangedEventArgs)
+ ' Do nothing
+ End Sub
+
+ Private Sub SysEvts_DisplaySettingsChanged(sender As Object, e As EventArgs)
+ ' Do nothing
+ End Sub
+
+ Private Sub SysEvts_DisplaySettingsChanging(sender As Object, e As EventArgs)
+ ' Do nothing
+ End Sub
+
+ End Class
+
+
+End Namespace
+
diff --git a/DISMTools.vbproj b/DISMTools.vbproj
index c2a2e262..20db18ce 100644
--- a/DISMTools.vbproj
+++ b/DISMTools.vbproj
@@ -137,6 +137,7 @@
Form
+
@@ -191,6 +192,12 @@
Form
+
+ ExceptionForm.vb
+
+
+ Form
+
BGProcsAdvSettings.vb
@@ -443,6 +450,12 @@
Form
+
+ ImgExport.vb
+
+
+ Form
+
ImgIndexDelete.vb
@@ -712,6 +725,9 @@
ProgressPanel.vb
+
+ ExceptionForm.vb
+
BGProcsAdvSettings.vb
@@ -838,6 +854,9 @@
ImgCapture.vb
+
+ ImgExport.vb
+
ImgIndexDelete.vb
@@ -1238,6 +1257,7 @@
+
diff --git a/Installer/Output/dt_setup.exe b/Installer/Output/dt_setup.exe
index 96487cbd..6bccd155 100644
Binary files a/Installer/Output/dt_setup.exe and b/Installer/Output/dt_setup.exe differ
diff --git a/Installer/dt.iss b/Installer/dt.iss
index 7d550dc3..9bc7c42c 100644
--- a/Installer/dt.iss
+++ b/Installer/dt.iss
@@ -140,6 +140,9 @@ Root: HKCU; Subkey: "Software\DISMTools\Preview\Startup"; Flags: uninsdeletekey
Root: HKCU; Subkey: "Software\DISMTools\Preview\Startup"; ValueType: dword; ValueName: "CheckForUpdates"; ValueData: 1; Flags: uninsdeletevalue createvalueifdoesntexist
Root: HKCU; Subkey: "Software\DISMTools\Preview\Startup"; ValueType: dword; ValueName: "RemountImages"; ValueData: 1; Flags: uninsdeletevalue createvalueifdoesntexist
+Root: HKCU; Subkey: "Software\DISMTools\Preview\Shutdown"; Flags: uninsdeletekey
+Root: HKCU; Subkey: "Software\DISMTools\Preview\Shutdown"; ValueType: dword; ValueName: "AutoCleanMounts"; ValueData: 0; Flags: uninsdeletevalue createvalueifdoesntexist
+
Root: HKCU; Subkey: "Software\DISMTools\Preview\WndParams"; Flags: uninsdeletekey createvalueifdoesntexist
Root: HKCU; Subkey: "Software\DISMTools\Preview\InfoSaver"; Flags: uninsdeletekey createvalueifdoesntexist
diff --git a/MainForm.Designer.vb b/MainForm.Designer.vb
index ee7d6430..8475b443 100644
--- a/MainForm.Designer.vb
+++ b/MainForm.Designer.vb
@@ -3726,7 +3726,7 @@ Partial Class MainForm
Me.TableLayoutPanel2.ColumnCount = 3
Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 32.42009!))
Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67.57991!))
- Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 110.0!))
+ Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 111.0!))
Me.TableLayoutPanel2.Controls.Add(Me.ProjNameEditBtn, 2, 0)
Me.TableLayoutPanel2.Controls.Add(Me.LinkLabel1, 1, 3)
Me.TableLayoutPanel2.Controls.Add(Me.Panel8, 1, 0)
@@ -3761,9 +3761,9 @@ Partial Class MainForm
Me.LinkLabel1.Dock = System.Windows.Forms.DockStyle.Fill
Me.LinkLabel1.LinkBehavior = System.Windows.Forms.LinkBehavior.NeverUnderline
Me.LinkLabel1.LinkColor = System.Drawing.Color.DodgerBlue
- Me.LinkLabel1.Location = New System.Drawing.Point(62, 146)
+ Me.LinkLabel1.Location = New System.Drawing.Point(61, 146)
Me.LinkLabel1.Name = "LinkLabel1"
- Me.LinkLabel1.Size = New System.Drawing.Size(227, 254)
+ Me.LinkLabel1.Size = New System.Drawing.Size(228, 254)
Me.LinkLabel1.TabIndex = 5
Me.LinkLabel1.TabStop = True
Me.LinkLabel1.Text = "Click here to mount an image"
@@ -3773,7 +3773,7 @@ Partial Class MainForm
Me.Panel8.Controls.Add(Me.projName)
Me.Panel8.Controls.Add(Me.projNameText)
Me.Panel8.Dock = System.Windows.Forms.DockStyle.Fill
- Me.Panel8.Location = New System.Drawing.Point(62, 3)
+ Me.Panel8.Location = New System.Drawing.Point(61, 3)
Me.Panel8.Name = "Panel8"
Me.Panel8.Size = New System.Drawing.Size(116, 23)
Me.Panel8.TabIndex = 8
@@ -3805,9 +3805,9 @@ Partial Class MainForm
Me.Label5.AutoSize = True
Me.TableLayoutPanel2.SetColumnSpan(Me.Label5, 2)
Me.Label5.Dock = System.Windows.Forms.DockStyle.Fill
- Me.Label5.Location = New System.Drawing.Point(62, 131)
+ Me.Label5.Location = New System.Drawing.Point(61, 131)
Me.Label5.Name = "Label5"
- Me.Label5.Size = New System.Drawing.Size(227, 15)
+ Me.Label5.Size = New System.Drawing.Size(228, 15)
Me.Label5.TabIndex = 2
Me.Label5.Text = "imgStatus"
'
@@ -3817,7 +3817,7 @@ Partial Class MainForm
Me.Label2.Dock = System.Windows.Forms.DockStyle.Fill
Me.Label2.Location = New System.Drawing.Point(3, 29)
Me.Label2.Name = "Label2"
- Me.Label2.Size = New System.Drawing.Size(53, 102)
+ Me.Label2.Size = New System.Drawing.Size(52, 102)
Me.Label2.TabIndex = 1
Me.Label2.Text = "Location:"
Me.Label2.TextAlign = System.Drawing.ContentAlignment.TopRight
@@ -3827,9 +3827,9 @@ Partial Class MainForm
Me.Label3.AutoEllipsis = True
Me.TableLayoutPanel2.SetColumnSpan(Me.Label3, 2)
Me.Label3.Dock = System.Windows.Forms.DockStyle.Fill
- Me.Label3.Location = New System.Drawing.Point(62, 29)
+ Me.Label3.Location = New System.Drawing.Point(61, 29)
Me.Label3.Name = "Label3"
- Me.Label3.Size = New System.Drawing.Size(227, 102)
+ Me.Label3.Size = New System.Drawing.Size(228, 102)
Me.Label3.TabIndex = 2
Me.Label3.Text = "projPath"
'
@@ -3840,7 +3840,7 @@ Partial Class MainForm
Me.Label4.Location = New System.Drawing.Point(3, 131)
Me.Label4.Name = "Label4"
Me.TableLayoutPanel2.SetRowSpan(Me.Label4, 2)
- Me.Label4.Size = New System.Drawing.Size(53, 269)
+ Me.Label4.Size = New System.Drawing.Size(52, 269)
Me.Label4.TabIndex = 1
Me.Label4.Text = "Images mounted?"
Me.Label4.TextAlign = System.Drawing.ContentAlignment.TopRight
@@ -3851,7 +3851,7 @@ Partial Class MainForm
Me.Panel9.Dock = System.Windows.Forms.DockStyle.Fill
Me.Panel9.Location = New System.Drawing.Point(3, 3)
Me.Panel9.Name = "Panel9"
- Me.Panel9.Size = New System.Drawing.Size(53, 23)
+ Me.Panel9.Size = New System.Drawing.Size(52, 23)
Me.Panel9.TabIndex = 9
'
'Label1
@@ -3859,7 +3859,7 @@ Partial Class MainForm
Me.Label1.Dock = System.Windows.Forms.DockStyle.Fill
Me.Label1.Location = New System.Drawing.Point(0, 0)
Me.Label1.Name = "Label1"
- Me.Label1.Size = New System.Drawing.Size(53, 23)
+ Me.Label1.Size = New System.Drawing.Size(52, 23)
Me.Label1.TabIndex = 1
Me.Label1.Text = "Name:"
Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight
diff --git a/MainForm.resx b/MainForm.resx
index a965acb8..ccd80cfb 100644
--- a/MainForm.resx
+++ b/MainForm.resx
@@ -197,6 +197,12 @@
JCQkJEQxb97/AOrW4M1DfY/XAAAAAElFTkSuQmCC
+
+ 249, 17
+
+
+ 356, 17
+
iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAABINJREFUWEft
@@ -812,6 +818,12 @@
727, 17
+
+ 132, 17
+
+
+ 727, 17
+
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
diff --git a/MainForm.vb b/MainForm.vb
index eb900f57..cc7cdeb2 100644
--- a/MainForm.vb
+++ b/MainForm.vb
@@ -244,6 +244,8 @@ Public Class MainForm
Public ColorSchemes As Integer = 0 ' Color scheme for the status bar and panels. 0 = green (v0.5+); 1 = blue (v0.1.1-v0.4.2)
+ Public AutoCleanMounts As Boolean
+
Dim FeedContents As New SyndicationFeed()
Dim FeedLinks As New List(Of Uri)
Dim FeedEx As Exception
@@ -677,7 +679,7 @@ Public Class MainForm
File.Delete(Application.StartupPath & "\info.ini")
Debug.WriteLine("Comparing versions...")
Dim fv As String = My.Application.Info.Version.ToString()
- If fv = latestVer Then
+ If fv = latestVer Or New Version(fv) > New Version(latestVer) Then
Debug.WriteLine("There aren't any updates available")
UpdatePanel.Visible = False
Else
@@ -1175,6 +1177,9 @@ Public Class MainForm
StartupRemount = (CInt(StartupKey.GetValue("RemountImages")) = 1)
StartupUpdateCheck = (CInt(StartupKey.GetValue("CheckForUpdates")) = 1)
StartupKey.Close()
+ Dim ShutdownKey As RegistryKey = Key.OpenSubKey("Shutdown")
+ AutoCleanMounts = (CInt(ShutdownKey.GetValue("AutoCleanMounts")) = 1)
+ ShutdownKey.Close()
Dim WndKey As RegistryKey = Key.OpenSubKey("WndParams")
Width = CInt(WndKey.GetValue("WndWidth"))
Height = CInt(WndKey.GetValue("WndHeight"))
@@ -1424,6 +1429,11 @@ Public Class MainForm
ElseIf DTSettingForm.RichTextBox1.Text.Contains("CheckForUpdates=0") Then
StartupUpdateCheck = False
End If
+ If DTSettingForm.RichTextBox1.Text.Contains("AutoCleanMounts=1") Then
+ AutoCleanMounts = True
+ ElseIf DTSettingForm.RichTextBox1.Text.Contains("AutoCleanMounts=0") Then
+ AutoCleanMounts = False
+ End If
If DTSettingForm.RichTextBox1.Text.Contains("WndMaximized=1") Then
WindowState = FormWindowState.Maximized
ElseIf DTSettingForm.RichTextBox1.Text.Contains("WndMaximized=0") Then
@@ -4440,6 +4450,9 @@ Public Class MainForm
StartupKey.SetValue("RemountImages", 1, RegistryValueKind.DWord)
StartupKey.SetValue("CheckForUpdates", 1, RegistryValueKind.DWord)
StartupKey.Close()
+ Dim ShutdownKey As RegistryKey = Key.CreateSubKey("Startup")
+ ShutdownKey.SetValue("AutoCleanMounts", 0, RegistryValueKind.DWord)
+ ShutdownKey.Close()
Dim WndKey As RegistryKey = Key.CreateSubKey("WndParams")
WndKey.SetValue("WndWidth", 1280, RegistryValueKind.DWord)
WndKey.SetValue("WndHeight", 720, RegistryValueKind.DWord)
@@ -4626,6 +4639,12 @@ Public Class MainForm
Else
DTSettingForm.RichTextBox2.AppendText(CrLf & "CheckForUpdates=0")
End If
+ DTSettingForm.RichTextBox2.AppendText(CrLf & CrLf & "[Shutdown]" & CrLf)
+ If AutoCleanMounts Then
+ DTSettingForm.RichTextBox2.AppendText("AutoCleanMounts=1")
+ Else
+ DTSettingForm.RichTextBox2.AppendText("AutoCleanMounts=0")
+ End If
DTSettingForm.RichTextBox2.AppendText(CrLf & CrLf & "[WndParams]" & CrLf)
DTSettingForm.RichTextBox2.AppendText("WndWidth=" & WndWidth)
DTSettingForm.RichTextBox2.AppendText(CrLf & "WndHeight=" & WndHeight)
@@ -4703,6 +4722,9 @@ Public Class MainForm
StartupKey.SetValue("RemountImages", If(StartupRemount, 1, 0), RegistryValueKind.DWord)
StartupKey.SetValue("CheckForUpdates", If(StartupUpdateCheck, 1, 0), RegistryValueKind.DWord)
StartupKey.Close()
+ Dim ShutdownKey As RegistryKey = Key.CreateSubKey("Shutdown")
+ ShutdownKey.SetValue("AutoCleanMounts", If(AutoCleanMounts, 1, 0), RegistryValueKind.DWord)
+ ShutdownKey.Close()
Dim WndKey As RegistryKey = Key.CreateSubKey("WndParams")
WndKey.SetValue("WndWidth", WndWidth, RegistryValueKind.DWord)
WndKey.SetValue("WndHeight", WndHeight, RegistryValueKind.DWord)
@@ -11521,6 +11543,13 @@ Public Class MainForm
Catch ex As Exception
' Don't save the recent item. The recent list may not have been initialized
End Try
+ If AutoCleanMounts Then
+ ' Clean up corrupted mount points. Use the DISM executable to avoid slowing down program closure
+ Dim DismProc As New Process()
+ DismProc.StartInfo.FileName = Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\system32\dism.exe"
+ DismProc.StartInfo.Arguments = "/cleanup-mountpoints"
+ DismProc.Start()
+ End If
End Sub
Private Sub ToolStripButton2_Click(sender As Object, e As EventArgs) Handles ToolStripButton2.Click
@@ -11608,7 +11637,7 @@ Public Class MainForm
End Sub
Private Sub ExplorerView_Click(sender As Object, e As EventArgs) Handles ExplorerView.Click, Button22.Click
- Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\explorer.exe", projPath)
+ Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\explorer.exe", "/select," & Quote & projPath & "\" & projName.Text & ".dtproj" & Quote)
End Sub
Private Sub GetImageInfo_Click(sender As Object, e As EventArgs) Handles GetImageInfo.Click
@@ -15036,7 +15065,7 @@ Public Class MainForm
End Sub
Private Sub LinkLabel16_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel16.LinkClicked
- Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\explorer.exe", projPath)
+ Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\explorer.exe", "/select," & Quote & projPath & "\" & projName.Text & ".dtproj" & Quote)
End Sub
Private Sub LinkLabel17_LinkClicked(sender As Object, e As LinkLabelLinkClickedEventArgs) Handles LinkLabel17.LinkClicked
@@ -16961,6 +16990,7 @@ Public Class MainForm
"Pretende iniciar o processo de reversão?"
End Select
If MsgBox(msg, vbYesNo + vbExclamation, Text) = MsgBoxResult.Yes Then
+ If Not ProgressPanel.IsDisposed Then ProgressPanel.Dispose()
ProgressPanel.OperationNum = 86
ProgressPanel.ShowDialog(Me)
Close()
@@ -17049,6 +17079,7 @@ Public Class MainForm
"Pretende remover a capacidade de retroceder para uma versão mais antiga do Windows?"
End Select
If MsgBox(msg, vbYesNo + vbExclamation, Text) = MsgBoxResult.Yes Then
+ If Not ProgressPanel.IsDisposed Then ProgressPanel.Dispose()
ProgressPanel.OperationNum = 87
ProgressPanel.ShowDialog(Me)
Else
@@ -17115,4 +17146,14 @@ Public Class MainForm
Next
RecentRemoveLink.Visible = False
End Sub
+
+ Private Sub ExportImage_Click(sender As Object, e As EventArgs) Handles ExportImage.Click
+ ImgExport.ShowDialog()
+ End Sub
+
+ Private Sub CleanupMountpoints_Click(sender As Object, e As EventArgs) Handles CleanupMountpoints.Click
+ If Not ProgressPanel.IsDisposed Then ProgressPanel.Dispose()
+ ProgressPanel.OperationNum = 7
+ ProgressPanel.ShowDialog(Me)
+ End Sub
End Class
\ No newline at end of file
diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb
index eee6cb2a..3edfdcb4 100644
--- a/My Project/AssemblyInfo.vb
+++ b/My Project/AssemblyInfo.vb
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' mediante el asterisco ('*'), como se muestra a continuación:
'
-
-
+
+
diff --git a/My Project/Resources.Designer.vb b/My Project/Resources.Designer.vb
index 32d744e1..173f50d5 100644
--- a/My Project/Resources.Designer.vb
+++ b/My Project/Resources.Designer.vb
@@ -700,6 +700,16 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Busca un recurso adaptado de tipo System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property error_32px() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("error_32px", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
'''
''' Busca un recurso adaptado de tipo System.Drawing.Bitmap.
'''
@@ -2108,13 +2118,15 @@ Namespace My.Resources
'''
''' Busca una cadena traducida similar a Bugfixes:
'''
- '''- Fixed an issue where the splash screen would not become fully opaque
+ '''- Fixed an issue where the SWM file pattern chooser would not look right when switching from dark mode to light mode
+ '''- Fixed some improper progress panel disposal issues
+ '''- Fixed an issue where the program would show update recommendations for older versions of DISMTools (nightly versions only)
+ '''- Fixed some exceptions that were thrown by the AppX package information dialog
'''
'''New features:
'''
- '''- Branding and color tints have been refreshed
- '''- You can now report Store logo asset preview issues from the AppX package information dialog
- '''- The OneDrive folder exclusion tool now supports excluding user SkyDrive folders.
+ '''- Added the ability to export a Windows image
+ '''- The program can now clean up mount points on closure [resto de la cadena truncado]";.
'''
Friend ReadOnly Property WhatsNew() As String
Get
diff --git a/My Project/Resources.resx b/My Project/Resources.resx
index f0210a97..3392f372 100644
--- a/My Project/Resources.resx
+++ b/My Project/Resources.resx
@@ -1099,13 +1099,18 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI
Bugfixes:
-- Fixed an issue where the splash screen would not become fully opaque
+- Fixed an issue where the SWM file pattern chooser would not look right when switching from dark mode to light mode
+- Fixed some improper progress panel disposal issues
+- Fixed an issue where the program would show update recommendations for older versions of DISMTools (nightly versions only)
+- Fixed some exceptions that were thrown by the AppX package information dialog
New features:
-- Branding and color tints have been refreshed
-- You can now report Store logo asset preview issues from the AppX package information dialog
-- The OneDrive folder exclusion tool now supports excluding user SkyDrive folders
+- Added the ability to export a Windows image
+- The program can now clean up mount points on closure (option) and on-demand
+- When opening a File Explorer window to select a file, the program will now do that instead of just opening the directory the file is in
+- Internal errors are no longer shown on a generic dialog. Instead, they are now shown in a dedicated window
+- The App Installer downloader now shows the download URL, the download speed, and the estimated time remaining for the transfer
..\Resources\split_img.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
@@ -1206,4 +1211,7 @@ New features:
..\Resources\color_schemes\CS_ProgressPanel_Green.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
+ ..\Resources\error_32px.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/Panels/DoWork/ProgressPanel.vb b/Panels/DoWork/ProgressPanel.vb
index b5ecd28d..051d9741 100644
--- a/Panels/DoWork/ProgressPanel.vb
+++ b/Panels/DoWork/ProgressPanel.vb
@@ -260,6 +260,17 @@ Public Class ProgressPanel
Public imgIndexDeletionLastName As String ' Last name of index checked
Public imgIndexDeletionCount As Integer ' Volume image removal count
+ ' OperationNum: 10
+ Public imgExportSourceImage As String ' The source image to export
+ Public imgExportSourceIndex As Integer ' The source index to export
+ Public imgExportDestinationImage As String ' The export target
+ Public imgExportDestinationUseCustomName As Boolean ' Determine whether to use a custom destination name
+ Public imgExportDestinationName As String ' The custom destination name
+ Public imgExportCompressType As Integer ' Compression used for the export (0: none; 1: fast; 2: max; 3: recovery)
+ Public imgExportMarkBootable As Boolean ' Determine whether to mark the target image as bootable (Windows PE only)
+ Public imgExportUseWimBoot As Boolean ' Determine whether to append the target image with WIMBoot configurations
+ Public imgExportCheckIntegrity As Boolean ' Determine whether to check the integrity of the image before exporting it
+
' OperationNum: 11
Public GetFromMountedImg As Boolean ' Get information from mounted image
Public GetSpecificIndexInfo As Boolean ' Get information from specific image index
@@ -548,6 +559,8 @@ Public Class ProgressPanel
Else
taskCount = 1
End If
+ ElseIf opNum = 7 Then
+ taskCount = 1
ElseIf opNum = 8 Then
taskCount = 1
ElseIf opNum = 9 Then
@@ -556,6 +569,8 @@ Public Class ProgressPanel
Else
taskCount = 1
End If
+ ElseIf opNum = 10 Then
+ taskCount = 1
ElseIf opNum = 15 Then
taskCount = 1
ElseIf opNum = 18 Then
@@ -765,7 +780,7 @@ Public Class ProgressPanel
Thread.Sleep(125)
AllPB.Value = CurrentPB.Value
Directory.CreateDirectory(projPath & "\" & projName & "\" & "settings")
- CurrentPB.Value = 33.329999999999998
+ CurrentPB.Value = 33.33
Thread.Sleep(125)
AllPB.Value = CurrentPB.Value
Directory.CreateDirectory(projPath & "\" & projName & "\" & "mount")
@@ -800,7 +815,7 @@ Public Class ProgressPanel
Directory.CreateDirectory(projPath & "\" & projName & "\" & "DandI\amd64")
Directory.CreateDirectory(projPath & "\" & projName & "\" & "DandI\arm")
Directory.CreateDirectory(projPath & "\" & projName & "\" & "DandI\arm64")
- CurrentPB.Value = 66.659999999999997
+ CurrentPB.Value = 66.66
Thread.Sleep(125)
AllPB.Value = CurrentPB.Value
File.WriteAllText(projPath & "\" & projName & "\" & "settings\project.ini", _
@@ -831,7 +846,7 @@ Public Class ProgressPanel
"ImageLang=N/A" & CrLf & CrLf & _
"[Params]" & CrLf & _
"ImageReadWrite=N/A", ASCII)
- CurrentPB.Value = 83.329999999999998
+ CurrentPB.Value = 83.33
Thread.Sleep(125)
AllPB.Value = CurrentPB.Value
File.WriteAllText(projPath & "\" & projName & "\" & projName & ".dtproj", _
@@ -1138,6 +1153,79 @@ Public Class ProgressPanel
Else
LogView.AppendText(CrLf & CrLf & " Error level : " & errCode)
End If
+ ElseIf opNum = 7 Then
+ Select Case Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ allTasks.Text = "Cleaning up mount points..."
+ currentTask.Text = "Deleting resources from old or corrupted images..."
+ Case "ESN"
+ allTasks.Text = "Limpiando puntos de montaje..."
+ currentTask.Text = "Eliminando recursos de imágenes antiguas o corruptas..."
+ Case "FRA"
+ allTasks.Text = "Nettoyage des points de montage en cours..."
+ currentTask.Text = "Suppression des ressources des images anciennes ou corrompues en cours..."
+ Case "PTB", "PTG"
+ allTasks.Text = "Limpeza de pontos de montagem..."
+ currentTask.Text = "Eliminar recursos de imagens antigas ou corrompidas..."
+ End Select
+ Case 1
+ allTasks.Text = "Cleaning up mount points..."
+ currentTask.Text = "Deleting resources from old or corrupted images..."
+ Case 2
+ allTasks.Text = "Limpiando puntos de montaje..."
+ currentTask.Text = "Eliminando recursos de imágenes antiguas o corruptas..."
+ Case 3
+ allTasks.Text = "Nettoyage des points de montage en cours..."
+ currentTask.Text = "Suppression des ressources des images anciennes ou corrompues en cours..."
+ Case 4
+ allTasks.Text = "Limpeza de pontos de montagem..."
+ currentTask.Text = "Eliminar recursos de imagens antigas ou corrompidas..."
+ End Select
+ LogView.AppendText(CrLf & "Cleaning up mount points..." & CrLf & CrLf &
+ "This can take some time, depending on the drives connected to this system.")
+ Try
+ DismApi.Initialize(If(LogLevel = 1, DismLogLevel.LogErrors, If(LogLevel = 2, DismLogLevel.LogErrorsWarnings, If(LogLevel = 3, DismLogLevel.LogErrorsWarningsInfo, DismLogLevel.LogErrorsWarningsInfo))), If(AutoLogs, Application.StartupPath & "\logs\" & GetCurrentDateAndTime(Now), LogPath))
+ DismApi.CleanupMountpoints()
+ Catch ex As DismException
+ errCode = Hex(ex.ErrorCode)
+ Finally
+ DismApi.Shutdown()
+ End Try
+ CurrentPB.Value = 50
+ AllPB.Value = CurrentPB.Value
+ Select Case Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ currentTask.Text = "Gathering error level..."
+ Case "ESN"
+ currentTask.Text = "Recopilando nivel de error..."
+ Case "FRA"
+ currentTask.Text = "Recueil du niveau d'erreur en cours..."
+ Case "PTB", "PTG"
+ currentTask.Text = "A recolher o nível de erro..."
+ End Select
+ Case 1
+ currentTask.Text = "Gathering error level..."
+ Case 2
+ currentTask.Text = "Recopilando nivel de error..."
+ Case 3
+ currentTask.Text = "Recueil du niveau d'erreur en cours..."
+ Case 4
+ currentTask.Text = "A recolher o nível de erro..."
+ End Select
+ LogView.AppendText(CrLf & "Gathering error level...")
+ If errCode Is Nothing Then
+ errCode = 0
+ IsSuccessful = True
+ End If
+ If errCode.Length >= 8 Then
+ LogView.AppendText(CrLf & CrLf & " Error level : 0x" & errCode)
+ Else
+ LogView.AppendText(CrLf & CrLf & " Error level : " & errCode)
+ End If
ElseIf opNum = 8 Then
Select Case Language
Case 0
@@ -1326,6 +1414,119 @@ Public Class ProgressPanel
CurrentPB.Value = CurrentPB.Maximum
AllPB.Value = 100
GetErrorCode(False)
+ ElseIf opNum = 10 Then
+ Select Case Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ allTasks.Text = "Exporting image..."
+ currentTask.Text = "Exporting specified image..."
+ Case "ESN"
+ allTasks.Text = "Exportando imagen..."
+ currentTask.Text = "Exportando imagen especificada..."
+ Case "FRA"
+ allTasks.Text = "Exportation de l'image en cours..."
+ currentTask.Text = "Exportation de l'image spécifiée en cours..."
+ Case "PTB"
+ allTasks.Text = "Exportar imagem..."
+ currentTask.Text = "Exportar imagem especificada..."
+ End Select
+ Case 1
+ allTasks.Text = "Exporting image..."
+ currentTask.Text = "Exporting specified image..."
+ Case 2
+ allTasks.Text = "Exportando imagen..."
+ currentTask.Text = "Exportando imagen especificada..."
+ Case 3
+ allTasks.Text = "Exportation de l'image en cours..."
+ currentTask.Text = "Exportation de l'image spécifiée en cours..."
+ Case 4
+ allTasks.Text = "Exportar imagem..."
+ currentTask.Text = "Exportar imagem especificada..."
+ End Select
+ LogView.AppendText(CrLf & "Exporting the specified image to a destination image..." & CrLf & "Options:" & CrLf &
+ "- Source image file: " & imgExportSourceImage & CrLf &
+ "- Source image index: " & imgExportSourceIndex & CrLf &
+ "- Destination image file: " & imgExportDestinationImage & CrLf &
+ If(imgExportDestinationUseCustomName, "- Destination image name: " & imgExportDestinationName, ""))
+ Select Case imgExportCompressType
+ Case 0
+ LogView.AppendText(CrLf & "- Compression type: no compression")
+ Case 1
+ LogView.AppendText(CrLf & "- Compression type: fast compression")
+ Case 2
+ LogView.AppendText(CrLf & "- Compression type: maximum compression")
+ Case 3
+ LogView.AppendText(CrLf & "- Compression type: ESD conversion (recovery)")
+ End Select
+ LogView.AppendText(CrLf & "- Mark the image as bootable? " & If(imgExportMarkBootable, "Yes", "No") & CrLf &
+ "- Append image with WIMBoot configuration? " & If(imgExportUseWimBoot, "Yes", "No") & CrLf &
+ "- Check image integrity before exporting the image? " & If(imgExportCheckIntegrity, "Yes", "No"))
+ ' Show information regarding SWM files
+ If Path.GetExtension(imgExportSourceImage).EndsWith("swm", StringComparison.OrdinalIgnoreCase) Then
+ LogView.AppendText(CrLf & CrLf & "NOTE: the source image contains an asterisk sign (*) in the file name to merge all SWM files")
+ End If
+ DISMProc.StartInfo.FileName = DismProgram
+ ' Configure basic command arguments
+ Select Case DismVersionChecker.ProductMajorPart
+ Case 6
+ Select Case DismVersionChecker.ProductMinorPart
+ Case 1
+ ' Not available
+ Case Is >= 2
+ CommandArgs &= " /export-image /sourceimagefile=" & Quote & imgExportSourceImage & Quote & " /sourceindex=" & imgExportSourceIndex & " /destinationimagefile=" & Quote & imgExportDestinationImage & Quote
+ End Select
+ Case 10
+ CommandArgs &= " /export-image /sourceimagefile=" & Quote & imgExportSourceImage & Quote & " /sourceindex=" & imgExportSourceIndex & " /destinationimagefile=" & Quote & imgExportDestinationImage & Quote
+ End Select
+ ' Configure additional command arguments
+ If imgExportDestinationUseCustomName Then
+ CommandArgs &= " /destinationname=" & Quote & imgExportDestinationName & Quote
+ End If
+ Select Case imgExportCompressType
+ Case 0
+ CommandArgs &= " /compress:none"
+ Case 1
+ CommandArgs &= " /compress:fast"
+ Case 2
+ CommandArgs &= " /compress:max"
+ Case 3
+ CommandArgs &= " /compress:recovery"
+ End Select
+ If imgExportMarkBootable Then CommandArgs &= " /bootable"
+ If imgExportUseWimBoot Then CommandArgs &= " /wimboot"
+ If imgExportCheckIntegrity Then CommandArgs &= " /checkintegrity"
+ DISMProc.StartInfo.Arguments = CommandArgs
+ DISMProc.Start()
+ DISMProc.WaitForExit()
+ Select Case Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ currentTask.Text = "Gathering error level..."
+ Case "ESN"
+ currentTask.Text = "Recopilando nivel de error..."
+ Case "FRA"
+ currentTask.Text = "Recueil du niveau d'erreur en cours..."
+ Case "PTB", "PTG"
+ currentTask.Text = "A recolher o nível de erro..."
+ End Select
+ Case 1
+ currentTask.Text = "Gathering error level..."
+ Case 2
+ currentTask.Text = "Recopilando nivel de error..."
+ Case 3
+ currentTask.Text = "Recueil du niveau d'erreur en cours..."
+ Case 4
+ currentTask.Text = "A recolher o nível de erro..."
+ End Select
+ LogView.AppendText(CrLf & "Gathering error level...")
+ GetErrorCode(False)
+ If errCode.Length >= 8 Then
+ LogView.AppendText(CrLf & CrLf & " Error level : 0x" & errCode)
+ Else
+ LogView.AppendText(CrLf & CrLf & " Error level : " & errCode)
+ End If
ElseIf opNum = 11 Then
' Operation handled by the image file information dialog - Redundant OpNum
ElseIf opNum = 15 Then
@@ -5375,7 +5576,7 @@ Public Class ProgressPanel
Visible = False
ImgConversionSuccessDialog.ShowDialog(MainForm)
If ImgConversionSuccessDialog.DialogResult = Windows.Forms.DialogResult.OK Then
- Process.Start("\Windows\explorer.exe", Path.GetDirectoryName(imgDestFile))
+ Process.Start("\Windows\explorer.exe", "/select," & Quote & imgDestFile & Quote)
End If
ElseIf OperationNum = 996 Then
MainForm.DetectMountedImages(False)
diff --git a/Panels/Exceptions/ExceptionForm.Designer.vb b/Panels/Exceptions/ExceptionForm.Designer.vb
new file mode 100644
index 00000000..a25170c6
--- /dev/null
+++ b/Panels/Exceptions/ExceptionForm.Designer.vb
@@ -0,0 +1,171 @@
+ _
+Partial Class ExceptionForm
+ Inherits System.Windows.Forms.Form
+
+ 'Form reemplaza a Dispose para limpiar la lista de componentes.
+ _
+ 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
+
+ 'Requerido por el Diseñador de Windows Forms
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTA: el Diseñador de Windows Forms necesita el siguiente procedimiento
+ 'Se puede modificar usando el Diseñador de Windows Forms.
+ 'No lo modifique con el editor de código.
+ _
+ Private Sub InitializeComponent()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(ExceptionForm))
+ Me.Label1 = New System.Windows.Forms.Label()
+ Me.PictureBox1 = New System.Windows.Forms.PictureBox()
+ Me.ErrorText = New System.Windows.Forms.TextBox()
+ Me.Label2 = New System.Windows.Forms.Label()
+ Me.Label3 = New System.Windows.Forms.Label()
+ Me.Issue_Btn = New System.Windows.Forms.Button()
+ Me.Label4 = New System.Windows.Forms.Label()
+ Me.Continue_Btn = New System.Windows.Forms.Button()
+ Me.Exit_Btn = New System.Windows.Forms.Button()
+ CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.SuspendLayout()
+ '
+ 'Label1
+ '
+ Me.Label1.AutoEllipsis = True
+ Me.Label1.Location = New System.Drawing.Point(51, 13)
+ Me.Label1.Name = "Label1"
+ Me.Label1.Size = New System.Drawing.Size(561, 57)
+ Me.Label1.TabIndex = 0
+ Me.Label1.Text = "We are sorry for the inconvenience, but DISMTools has run into an error that it c" & _
+ "ouldn't handle and we need your help in order to continue." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Here is the error " & _
+ "information if you need it:"
+ '
+ 'PictureBox1
+ '
+ Me.PictureBox1.Image = Global.DISMTools.My.Resources.Resources.error_32px
+ Me.PictureBox1.Location = New System.Drawing.Point(13, 13)
+ Me.PictureBox1.Name = "PictureBox1"
+ Me.PictureBox1.Size = New System.Drawing.Size(32, 32)
+ Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
+ Me.PictureBox1.TabIndex = 1
+ Me.PictureBox1.TabStop = False
+ '
+ 'ErrorText
+ '
+ Me.ErrorText.BorderStyle = System.Windows.Forms.BorderStyle.None
+ Me.ErrorText.Font = New System.Drawing.Font("Courier New", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.ErrorText.Location = New System.Drawing.Point(54, 73)
+ Me.ErrorText.Multiline = True
+ Me.ErrorText.Name = "ErrorText"
+ Me.ErrorText.ReadOnly = True
+ Me.ErrorText.ScrollBars = System.Windows.Forms.ScrollBars.Vertical
+ Me.ErrorText.Size = New System.Drawing.Size(558, 128)
+ Me.ErrorText.TabIndex = 2
+ '
+ 'Label2
+ '
+ Me.Label2.AutoEllipsis = True
+ Me.Label2.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Label2.Location = New System.Drawing.Point(51, 204)
+ Me.Label2.Name = "Label2"
+ Me.Label2.Size = New System.Drawing.Size(561, 17)
+ Me.Label2.TabIndex = 0
+ Me.Label2.Text = "Please help us fix this issue"
+ '
+ 'Label3
+ '
+ Me.Label3.AutoEllipsis = True
+ Me.Label3.Location = New System.Drawing.Point(51, 221)
+ Me.Label3.Name = "Label3"
+ Me.Label3.Size = New System.Drawing.Size(561, 42)
+ Me.Label3.TabIndex = 0
+ Me.Label3.Text = "In order to prevent this problem from happening again, we would like to know more" & _
+ " about it by reporting an issue on the GitHub repository. You will need a GitHub" & _
+ " account to report feedback."
+ '
+ 'Issue_Btn
+ '
+ Me.Issue_Btn.FlatStyle = System.Windows.Forms.FlatStyle.System
+ Me.Issue_Btn.Location = New System.Drawing.Point(184, 266)
+ Me.Issue_Btn.Name = "Issue_Btn"
+ Me.Issue_Btn.Size = New System.Drawing.Size(256, 23)
+ Me.Issue_Btn.TabIndex = 3
+ Me.Issue_Btn.Text = "Report this issue"
+ Me.Issue_Btn.UseVisualStyleBackColor = True
+ '
+ 'Label4
+ '
+ Me.Label4.AutoEllipsis = True
+ Me.Label4.Location = New System.Drawing.Point(51, 308)
+ Me.Label4.Name = "Label4"
+ Me.Label4.Size = New System.Drawing.Size(561, 65)
+ Me.Label4.TabIndex = 0
+ Me.Label4.Text = resources.GetString("Label4.Text")
+ '
+ 'Continue_Btn
+ '
+ Me.Continue_Btn.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Continue_Btn.FlatStyle = System.Windows.Forms.FlatStyle.System
+ Me.Continue_Btn.Location = New System.Drawing.Point(350, 406)
+ Me.Continue_Btn.Name = "Continue_Btn"
+ Me.Continue_Btn.Size = New System.Drawing.Size(128, 23)
+ Me.Continue_Btn.TabIndex = 4
+ Me.Continue_Btn.Text = "Continue"
+ Me.Continue_Btn.UseVisualStyleBackColor = True
+ '
+ 'Exit_Btn
+ '
+ Me.Exit_Btn.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Exit_Btn.FlatStyle = System.Windows.Forms.FlatStyle.System
+ Me.Exit_Btn.Location = New System.Drawing.Point(484, 406)
+ Me.Exit_Btn.Name = "Exit_Btn"
+ Me.Exit_Btn.Size = New System.Drawing.Size(128, 23)
+ Me.Exit_Btn.TabIndex = 4
+ Me.Exit_Btn.Text = "Exit"
+ Me.Exit_Btn.UseVisualStyleBackColor = True
+ '
+ 'ExceptionForm
+ '
+ Me.AcceptButton = Me.Continue_Btn
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.ClientSize = New System.Drawing.Size(624, 441)
+ Me.Controls.Add(Me.Exit_Btn)
+ Me.Controls.Add(Me.Continue_Btn)
+ Me.Controls.Add(Me.Issue_Btn)
+ Me.Controls.Add(Me.ErrorText)
+ Me.Controls.Add(Me.PictureBox1)
+ Me.Controls.Add(Me.Label2)
+ Me.Controls.Add(Me.Label4)
+ Me.Controls.Add(Me.Label3)
+ Me.Controls.Add(Me.Label1)
+ Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
+ Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
+ Me.MaximizeBox = False
+ Me.MinimizeBox = False
+ Me.Name = "ExceptionForm"
+ Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen
+ Me.Text = "DISMTools - Internal Error"
+ Me.TopMost = True
+ CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.ResumeLayout(False)
+ Me.PerformLayout()
+
+ End Sub
+ Friend WithEvents Label1 As System.Windows.Forms.Label
+ Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
+ Friend WithEvents ErrorText As System.Windows.Forms.TextBox
+ Friend WithEvents Label2 As System.Windows.Forms.Label
+ Friend WithEvents Label3 As System.Windows.Forms.Label
+ Friend WithEvents Issue_Btn As System.Windows.Forms.Button
+ Friend WithEvents Label4 As System.Windows.Forms.Label
+ Friend WithEvents Continue_Btn As System.Windows.Forms.Button
+ Friend WithEvents Exit_Btn As System.Windows.Forms.Button
+End Class
diff --git a/Panels/Exceptions/ExceptionForm.resx b/Panels/Exceptions/ExceptionForm.resx
new file mode 100644
index 00000000..80d6abd9
--- /dev/null
+++ b/Panels/Exceptions/ExceptionForm.resx
@@ -0,0 +1,382 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ You may be able to continue running the program by clicking Continue. However, if this error is displayed for a second time, you can forcefully close the program by clicking Exit. Do note that changes made to projects, as well as changes in the Recents list, will not be saved.
+
+What do you want to do?
+
+
+
+
+ AAABAAMAEBAAAAEAIABoBAAANgAAACAgAAABACAAqBAAAJ4EAAAwMAAAAQAgAKglAABGFQAAKAAAABAA
+ AAAgAAAAAQAgAAAAAAAwBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyqqI/s6qh5rOq
+ ocmzqqEbAAAAAAAAAAAAAAAAAAAAADAgrk8xIK/mMCCvyCsrqgwAAAAAAAAAAAAAAAAAAAAAs6mhnqqB
+ U/+hfVf/s6qh2rOqoRsAAAAAAAAAADIfsFEyH6/7MSCv/zEgr/8yILBHAAAAAAAAAAAAAAAAAAAAALSp
+ oUSxoY/7saKR/7Oqof+zqqHas6qhGzAgr1AxH6/7MSCv/zEgr/8yIa/bMyKqDwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAtKmhXLOqofyzqqH/s6qh/4p/pt8xIa/5MSCv/zEgr/8xIa7jLh+yIQAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAC0qaFcs6qh/I2Apv8zIq//MSCv/zEgr/8yIK/cLxyzGwAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAKGYqGpqWcP/RDOw/zEgr/8+Lq36XVOsNAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACooZomkYap82hYw/9YSK//pZuj/6uhmtuhlo9JoZiPOYCA
+ gAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACuqJomq6Oa5amhmsSJe7WRqqCl/KSdlP+knJLrpJyU/6Ka
+ kv+gmJDTnpWNHQAAAAAAAAAAAAAAAAAAAACxo50nraWc5aqjmsSxnZ0NAAAAALCnoVGmnZXZqaGY/6ef
+ lv+knJT/opqS/6CYkLMAAAAAAAAAAAAAAACxqZ5cr6ad7a2lm7uqqo4JAAAAAAAAAAAAAAAArqad+Kyj
+ m/+poZiuppmZFKSdlHCimpLuAAAAAAAAAACzqqE5saif/6+mndiioqILAAAAAAAAAAAAAAAAAAAAALGo
+ n9eupp3/rKKbawAAAAAAAAAApJqUTAAAAAAAAAAAs6ugebGnnqmxo50nAAAAAAAAAAAAAAAAAAAAAAAA
+ AAC0q6JSsaif/K6mneasppkoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAALOqojyxqKCTraadcwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//wAA//8AAOfnAADDxwAA4YcAAPAP
+ AAD4HwAA/D8AAPwfAAD4AwAA84EAAOeNAADPnwAA388AAP/vAAD//wAAKAAAACAAAABAAAAAAQAgAAAA
+ AACAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAACzqqIes6qgsrOqofazqqHTs6miSgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ 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
+ gAf+H8AD/D/A4/h/wfPw/8H74f/B/+H/4P/n//B////4P////////////////ygAAAAwAAAAYAAAAAEA
+ IAAAAAAAUCUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAL+fnwizqaKDs6qh3LOqoe6zqqHbs6uhgr+fnwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAgnwgxH6+DMSCv3DEg
+ r+4xH6/bMR+vgkAgnwgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAqqqqCbOqocizqqH/s6qh/7Oqof+zqqH/s6qh/7KqocuurqETAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANhuuEzEf
+ r8sxIK//MSCv/zEgr/8xIK//MSCv/zEgsMc5HKoJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs6uhf7Oqof+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oq
+ of+zqqHOrq6hEwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAA2G64TMSCvzzEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK5+AAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs6qh3LOqof+zqqH/rZJ2/5tg
+ IP+WXiP/qJF4/7Oqof+zqqH/s6qhzq6uoRMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAADYbrhMxIK/PMSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xH6/bAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAs6qh+bOq
+ of+zqqH/pGYe/51bEP+YWBL/lV4k/7Oqof+zqqH/s6qh/7Oqoc6urqETAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAANhuuEzEgr88xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEg
+ r/8xILD3AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAs6qh3LOqof+zqqH/pmge/6JeD/+dWxD/nGIk/7Oqof+zqqH/s6qh/7Oqof+zqqHOrq6hEwAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA2G64TMiCvzjEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEg
+ r/8xIK//MSCv/zEgr/8xH6/bAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAs6uhf7Oqof+zqqH/sJR1/6dqIf+kaCL/rZN3/7Oqof+zqqH/s6qh/7Oq
+ of+zqqH/s6qhzq6uoRMAAAAAAAAAAAAAAAAAAAAAAAAAADYbrhMyIK/OMSCv/zEgr/8xIK//MSCv/zEg
+ r/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK5+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAqqqqCbKqocuzqqH/s6qh/7Oqof+zqqH/s6qh/7Oq
+ of+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oqoc6urqETAAAAAAAAAAAAAAAAKxyqEjIgr84xIK//MSCv/zEg
+ r/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEfr8s5HKoJAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALitoxmzqqHXs6qh/7Oq
+ of+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oqof+zqqHIu6qZDwAAAAAzIqoPMCCvyDEg
+ r/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCw1zMfrRkAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAC4raMZs6qh17Oqof+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oqof+zqqH/s6qhyHJh
+ nh0xILDHMSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xILDXMx+tGQAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAuK2jGbOqodezqqH/s6qh/7Oqof+zqqH/s6qh/7Oqof+zqqH/s6qh/7Oq
+ of+zqqH/q6Ki/0g5rfMxIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEg
+ sNczH60ZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALitoxmzqqHXs6qh/7Oqof+zqqH/s6qh/7Oq
+ of+zqqH/s6qh/7Oqof+roqL/TT6s/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEgr/8xIK//MSCv/zEg
+ r/8xIK//MSCw1zMfrRkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC4raMZs6qh17Oq
+ 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
+ nf+tpZz3rqOcSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyqqIhsqqgvLGp
+ oP+xqJ//sKee/6+mnv+upp3/raWc+K6im0IAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAALOqojyyqZ+Ysaif1bCnnumvpp7srqad1a6lnVsAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+ AAD///////8AAP///////wAA////////AAD///////8AAP///////wAA////////AAD/g///g/8AAP8B
+ //8B/wAA/wD//gH/AAD+AH/8AP8AAP4AP/gA/wAA/gAf8AD/AAD/AA/gAf8AAP8AB8AB/wAA/4ADgAP/
+ AAD/wAEAB/8AAP/gAAAP/wAA//AAAB//AAD/+AAAP/8AAP/8AAB//wAA//4AAP//AAD//wAB//8AAP//
+ gAP//wAA///AAf//AAD//+AA//8AAP//wAB//wAA//+AAAH/AAD//wAAAH8AAP/+DgAAPwAA//wfAAAf
+ AAD/+D+AAA8AAP/wf8AADwAA/+D/4AAHAAD/wf/gDgcAAP8D/+AfhwAA/gf/4D/HAAD8D//gP+cAAPgP
+ /+A//wAA+B//8B//AADwP//wH/8AAPB///gP/wAA+////Af/AAD////+A/8AAP////+D/wAA////////
+ AAD///////8AAP///////wAA////////AAA=
+
+
+
\ No newline at end of file
diff --git a/Panels/Exceptions/ExceptionForm.vb b/Panels/Exceptions/ExceptionForm.vb
new file mode 100644
index 00000000..bee33415
--- /dev/null
+++ b/Panels/Exceptions/ExceptionForm.vb
@@ -0,0 +1,92 @@
+Imports Microsoft.VisualBasic.ControlChars
+
+Public Class ExceptionForm
+
+ Dim copySuccess As String = "This information has been copied to the clipboard."
+ Dim copyFail As String = "You'll need to copy this information manually."
+
+ Private Sub Issue_Btn_Click(sender As Object, e As EventArgs) Handles Issue_Btn.Click
+ DialogResult = Windows.Forms.DialogResult.None
+ Process.Start("https://github.com/CodingWonders/DISMTools/issues/new?assignees=CodingWonders&labels=bug%2C+good+first+issue&projects=&template=bug.md&title=Program%20Exception")
+ End Sub
+
+ Private Sub Continue_Btn_Click(sender As Object, e As EventArgs) Handles Continue_Btn.Click
+ DialogResult = Windows.Forms.DialogResult.OK
+ Close()
+ End Sub
+
+ Private Sub Exit_Btn_Click(sender As Object, e As EventArgs) Handles Exit_Btn.Click
+ DialogResult = Windows.Forms.DialogResult.Cancel
+ Close()
+ End Sub
+
+ Private Sub ExceptionForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ ' Use system language in case exception is thrown when trying to load settings
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ Text = "DISMTools - Internal Error"
+ Label1.Text = "We are sorry for the inconvenience, but DISMTools has run into an error that it couldn't handle and we need your help in order to continue." & CrLf & CrLf & "Here is the error information if you need it:"
+ Label2.Text = "Please help us fix this issue"
+ Label3.Text = "In order to prevent this problem from happening again, we would like to know more about it by reporting an issue on the GitHub repository. You will need a GitHub account to report feedback."
+ Label4.Text = "You may be able to continue running the program by clicking Continue. However, if this error is displayed for a second time, you can forcefully close the program by clicking Exit. Do note that changes made to projects, as well as changes in the Recents list, will not be saved." & CrLf & CrLf & "What do you want to do?"
+ Issue_Btn.Text = "Report this issue"
+ Continue_Btn.Text = "Continue"
+ Exit_Btn.Text = "Exit"
+ copySuccess = "This information has been copied to the clipboard."
+ copyFail = "You'll need to copy this information manually."
+ Case "ESN"
+ Text = "DISMTools - Error interno"
+ Label1.Text = "Lo sentimos por el inconveniente, pero DISMTools ha sufrido un error que no pudo controlar y necesitamos su ayuda para poder continuar." & CrLf & CrLf & "Aquí tiene la información del error por si lo necesita:"
+ Label2.Text = "Por favor, ayúdenos a corregir este problema"
+ Label3.Text = "Para evitar que este problema ocurra de nuevo, nos gustaría saber más acerca de él reportando un error en el repositorio de GitHub. Necesitará una cuenta de GitHub para enviar comentarios."
+ Label4.Text = "Podrá ser capaz de continuar con la ejecución del programa haciendo clic en Continuar. En cambio, si este error se muestra por una segunda vez, puede cerrar el programa forzadamente haciendo clic en Salir. Dese cuenta de que los cambios de proyectos y de la lista de Recientes no se guardarán." & CrLf & CrLf & "¿Qué le gustaría hacer?"
+ Issue_Btn.Text = "Reportar este problema"
+ Continue_Btn.Text = "Continuar"
+ Exit_Btn.Text = "Salir"
+ copySuccess = "Esta información ha sido copiada al portapapeles."
+ copyFail = "Deberá copiar esta información manualmente."
+ Case "FRA"
+ Text = "DISMTools - Erreur interne"
+ Label1.Text = "Nous sommes désolés pour la gêne occasionnée, mais DISMTools a rencontré une erreur qu'il n'a pas pu gérer et nous avons besoin de votre aide pour continuer" & CrLf & CrLf & "Voici les informations sur l'erreur si vous en avez besoin :"
+ Label2.Text = "Veuillez nous aider à résoudre ce problème"
+ Label3.Text = "Afin d'éviter que ce problème ne se reproduise, nous aimerions en savoir plus en signalant un problème sur le dépôt GitHub. Vous devez disposer d'un compte GitHub pour signaler un problème."
+ Label4.Text = "Vous pouvez continuer à exécuter le programme en cliquant sur Continuer. Cependant, si cette erreur s'affiche une seconde fois, vous pouvez fermer le programme en cliquant sur Quitter. Notez que les modifications apportées aux projets, ainsi que les modifications apportées à la liste Récents, ne seront pas sauvegardées." & CrLf & CrLf & "Que voulez-vous faire ?"
+ Issue_Btn.Text = "Signaler ce problème"
+ Continue_Btn.Text = "Continuer"
+ Exit_Btn.Text = "Quitter"
+ copySuccess = "Cette information a été copiée dans le presse-papiers"
+ copyFail = "Vous devrez copier ces informations manuellement."
+ Case "PTB", "PTG"
+ Text = "DISMTools - Erro interno"
+ Label1.Text = "Lamentamos o incómodo, mas o DISMTools deparou-se com um erro que não conseguiu resolver e precisamos da sua ajuda para continuar." & CrLf & CrLf & "Aqui está a informação do erro, se precisar dela:"
+ Label2.Text = "Por favor, ajude-nos a resolver este problema"
+ Label3.Text = "Para evitar que este problema volte a acontecer, gostaríamos de saber mais sobre o mesmo, reportando um problema no repositório do GitHub. Necessita de uma conta GitHub para comunicar comentários."
+ Label4.Text = "Poderá continuar a executar o programa clicando em Continuar. No entanto, se este erro for apresentado pela segunda vez, pode fechar o programa à força, clicando em Sair. Tenha em atenção que as alterações efectuadas nos projectos, bem como as alterações na lista Recentes, não serão guardadas." & CrLf & CrLf & "O que pretende fazer?"
+ Issue_Btn.Text = "Comunicar este problema"
+ Continue_Btn.Text = "Continuar"
+ Exit_Btn.Text = "Sair"
+ copySuccess = "Esta informação foi copiada para a área de transferência."
+ copyFail = "Terá de copiar esta informação manualmente."
+ End Select
+ If MainForm.BackColor = Color.FromArgb(48, 48, 48) Then
+ BackColor = Color.FromArgb(31, 31, 31)
+ ForeColor = Color.White
+ ElseIf MainForm.BackColor = Color.FromArgb(239, 239, 242) Then
+ BackColor = Color.FromArgb(238, 238, 242)
+ ForeColor = Color.Black
+ End If
+ ErrorText.BackColor = BackColor
+ ErrorText.ForeColor = ForeColor
+ Dim handle As IntPtr = MainForm.GetWindowHandle(Me)
+ If MainForm.IsWindowsVersionOrGreater(10, 0, 18362) Then MainForm.EnableDarkTitleBar(handle, MainForm.BackColor = Color.FromArgb(48, 48, 48))
+ Try
+ Dim data As New DataObject()
+ data.SetText(ErrorText.Text, TextDataFormat.Text)
+ Clipboard.SetDataObject(data, True)
+ ErrorText.AppendText(CrLf & CrLf & copySuccess)
+ Catch ex As Exception
+ ErrorText.AppendText(CrLf & CrLf & copyFail)
+ End Try
+ Beep()
+ End Sub
+End Class
\ No newline at end of file
diff --git a/Panels/Exe_Ops/Options.Designer.vb b/Panels/Exe_Ops/Options.Designer.vb
index b58da161..a5eb5dde 100644
--- a/Panels/Exe_Ops/Options.Designer.vb
+++ b/Panels/Exe_Ops/Options.Designer.vb
@@ -169,6 +169,10 @@ Partial Class Options
Me.PictureBox19 = New System.Windows.Forms.PictureBox()
Me.Label58 = New System.Windows.Forms.Label()
Me.ValueContainer = New System.Windows.Forms.Panel()
+ Me.Options_Program = New System.Windows.Forms.Panel()
+ Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel()
+ Me.Panel14 = New System.Windows.Forms.Panel()
+ Me.Panel15 = New System.Windows.Forms.Panel()
Me.Options_Personalization = New System.Windows.Forms.Panel()
Me.FlowLayoutPanel3 = New System.Windows.Forms.FlowLayoutPanel()
Me.Panel16 = New System.Windows.Forms.Panel()
@@ -186,10 +190,6 @@ Partial Class Options
Me.Label17 = New System.Windows.Forms.Label()
Me.RadioButton1 = New System.Windows.Forms.RadioButton()
Me.RadioButton2 = New System.Windows.Forms.RadioButton()
- Me.Options_Program = New System.Windows.Forms.Panel()
- Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel()
- Me.Panel14 = New System.Windows.Forms.Panel()
- Me.Panel15 = New System.Windows.Forms.Panel()
Me.Options_Logs = New System.Windows.Forms.Panel()
Me.FlowLayoutPanel4 = New System.Windows.Forms.FlowLayoutPanel()
Me.Panel5 = New System.Windows.Forms.Panel()
@@ -218,6 +218,14 @@ Partial Class Options
Me.Options_Startup = New System.Windows.Forms.Panel()
Me.FlowLayoutPanel11 = New System.Windows.Forms.FlowLayoutPanel()
Me.Panel20 = New System.Windows.Forms.Panel()
+ Me.ShutdownSectionBtn = New System.Windows.Forms.Panel()
+ Me.PictureBox20 = New System.Windows.Forms.PictureBox()
+ Me.Label34 = New System.Windows.Forms.Label()
+ Me.Options_Shutdown = New System.Windows.Forms.Panel()
+ Me.FlowLayoutPanel12 = New System.Windows.Forms.FlowLayoutPanel()
+ Me.Panel23 = New System.Windows.Forms.Panel()
+ Me.Label60 = New System.Windows.Forms.Label()
+ Me.CheckBox22 = New System.Windows.Forms.CheckBox()
Me.TableLayoutPanel1.SuspendLayout()
Me.Win10Title.SuspendLayout()
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -266,6 +274,10 @@ Partial Class Options
Me.StartupSectionBtn.SuspendLayout()
CType(Me.PictureBox19, System.ComponentModel.ISupportInitialize).BeginInit()
Me.ValueContainer.SuspendLayout()
+ Me.Options_Program.SuspendLayout()
+ Me.FlowLayoutPanel2.SuspendLayout()
+ Me.Panel14.SuspendLayout()
+ Me.Panel15.SuspendLayout()
Me.Options_Personalization.SuspendLayout()
Me.FlowLayoutPanel3.SuspendLayout()
Me.Panel16.SuspendLayout()
@@ -275,10 +287,6 @@ Partial Class Options
CType(Me.ProgressPanel_Ops, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.StatusBar_Ops, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.StatusBar_Idle, System.ComponentModel.ISupportInitialize).BeginInit()
- Me.Options_Program.SuspendLayout()
- Me.FlowLayoutPanel2.SuspendLayout()
- Me.Panel14.SuspendLayout()
- Me.Panel15.SuspendLayout()
Me.Options_Logs.SuspendLayout()
Me.FlowLayoutPanel4.SuspendLayout()
Me.Panel5.SuspendLayout()
@@ -306,6 +314,11 @@ Partial Class Options
Me.Options_Startup.SuspendLayout()
Me.FlowLayoutPanel11.SuspendLayout()
Me.Panel20.SuspendLayout()
+ Me.ShutdownSectionBtn.SuspendLayout()
+ CType(Me.PictureBox20, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.Options_Shutdown.SuspendLayout()
+ Me.FlowLayoutPanel12.SuspendLayout()
+ Me.Panel23.SuspendLayout()
Me.SuspendLayout()
'
'TableLayoutPanel1
@@ -1512,6 +1525,7 @@ Partial Class Options
Me.FlowLayoutPanel1.Controls.Add(Me.ImgDetectSectionBtn)
Me.FlowLayoutPanel1.Controls.Add(Me.AssocsSectionBtn)
Me.FlowLayoutPanel1.Controls.Add(Me.StartupSectionBtn)
+ Me.FlowLayoutPanel1.Controls.Add(Me.ShutdownSectionBtn)
Me.FlowLayoutPanel1.Dock = System.Windows.Forms.DockStyle.Fill
Me.FlowLayoutPanel1.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.FlowLayoutPanel1.Location = New System.Drawing.Point(0, 0)
@@ -1820,6 +1834,7 @@ Partial Class Options
Me.ValueContainer.Controls.Add(Me.Options_ImgDetection)
Me.ValueContainer.Controls.Add(Me.Options_FileAssocs)
Me.ValueContainer.Controls.Add(Me.Options_Startup)
+ Me.ValueContainer.Controls.Add(Me.Options_Shutdown)
Me.ValueContainer.Dock = System.Windows.Forms.DockStyle.Fill
Me.ValueContainer.Font = New System.Drawing.Font("Segoe UI", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.ValueContainer.Location = New System.Drawing.Point(0, 0)
@@ -1827,6 +1842,56 @@ Partial Class Options
Me.ValueContainer.Size = New System.Drawing.Size(748, 465)
Me.ValueContainer.TabIndex = 4
'
+ 'Options_Program
+ '
+ Me.Options_Program.Controls.Add(Me.FlowLayoutPanel2)
+ Me.Options_Program.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.Options_Program.Location = New System.Drawing.Point(0, 0)
+ Me.Options_Program.Name = "Options_Program"
+ Me.Options_Program.Size = New System.Drawing.Size(748, 465)
+ Me.Options_Program.TabIndex = 0
+ Me.Options_Program.Visible = False
+ '
+ 'FlowLayoutPanel2
+ '
+ Me.FlowLayoutPanel2.AutoScroll = True
+ Me.FlowLayoutPanel2.Controls.Add(Me.Panel14)
+ Me.FlowLayoutPanel2.Controls.Add(Me.Panel15)
+ Me.FlowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.FlowLayoutPanel2.Location = New System.Drawing.Point(0, 0)
+ Me.FlowLayoutPanel2.Name = "FlowLayoutPanel2"
+ Me.FlowLayoutPanel2.Size = New System.Drawing.Size(748, 465)
+ Me.FlowLayoutPanel2.TabIndex = 0
+ '
+ 'Panel14
+ '
+ Me.Panel14.Controls.Add(Me.Label2)
+ Me.Panel14.Controls.Add(Me.Label3)
+ Me.Panel14.Controls.Add(Me.Label4)
+ Me.Panel14.Controls.Add(Me.LinkLabel1)
+ Me.Panel14.Controls.Add(Me.TextBox1)
+ Me.Panel14.Controls.Add(Me.PictureBox2)
+ Me.Panel14.Controls.Add(Me.Button1)
+ Me.Panel14.Controls.Add(Me.Button2)
+ Me.Panel14.Location = New System.Drawing.Point(0, 0)
+ Me.Panel14.Margin = New System.Windows.Forms.Padding(0)
+ Me.Panel14.Name = "Panel14"
+ Me.Panel14.Size = New System.Drawing.Size(748, 138)
+ Me.Panel14.TabIndex = 0
+ '
+ 'Panel15
+ '
+ Me.Panel15.Controls.Add(Me.CheckBox1)
+ Me.Panel15.Controls.Add(Me.Label5)
+ Me.Panel15.Controls.Add(Me.ComboBox1)
+ Me.Panel15.Controls.Add(Me.Label6)
+ Me.Panel15.Controls.Add(Me.PictureBox3)
+ Me.Panel15.Location = New System.Drawing.Point(0, 138)
+ Me.Panel15.Margin = New System.Windows.Forms.Padding(0)
+ Me.Panel15.Name = "Panel15"
+ Me.Panel15.Size = New System.Drawing.Size(748, 118)
+ Me.Panel15.TabIndex = 1
+ '
'Options_Personalization
'
Me.Options_Personalization.Controls.Add(Me.FlowLayoutPanel3)
@@ -2022,56 +2087,6 @@ Partial Class Options
Me.RadioButton2.Text = "DISMTools 0.1.1-0.4.2 Color Scheme (Blue)"
Me.RadioButton2.UseVisualStyleBackColor = True
'
- 'Options_Program
- '
- Me.Options_Program.Controls.Add(Me.FlowLayoutPanel2)
- Me.Options_Program.Dock = System.Windows.Forms.DockStyle.Fill
- Me.Options_Program.Location = New System.Drawing.Point(0, 0)
- Me.Options_Program.Name = "Options_Program"
- Me.Options_Program.Size = New System.Drawing.Size(748, 465)
- Me.Options_Program.TabIndex = 0
- Me.Options_Program.Visible = False
- '
- 'FlowLayoutPanel2
- '
- Me.FlowLayoutPanel2.AutoScroll = True
- Me.FlowLayoutPanel2.Controls.Add(Me.Panel14)
- Me.FlowLayoutPanel2.Controls.Add(Me.Panel15)
- Me.FlowLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill
- Me.FlowLayoutPanel2.Location = New System.Drawing.Point(0, 0)
- Me.FlowLayoutPanel2.Name = "FlowLayoutPanel2"
- Me.FlowLayoutPanel2.Size = New System.Drawing.Size(748, 465)
- Me.FlowLayoutPanel2.TabIndex = 0
- '
- 'Panel14
- '
- Me.Panel14.Controls.Add(Me.Label2)
- Me.Panel14.Controls.Add(Me.Label3)
- Me.Panel14.Controls.Add(Me.Label4)
- Me.Panel14.Controls.Add(Me.LinkLabel1)
- Me.Panel14.Controls.Add(Me.TextBox1)
- Me.Panel14.Controls.Add(Me.PictureBox2)
- Me.Panel14.Controls.Add(Me.Button1)
- Me.Panel14.Controls.Add(Me.Button2)
- Me.Panel14.Location = New System.Drawing.Point(0, 0)
- Me.Panel14.Margin = New System.Windows.Forms.Padding(0)
- Me.Panel14.Name = "Panel14"
- Me.Panel14.Size = New System.Drawing.Size(748, 138)
- Me.Panel14.TabIndex = 0
- '
- 'Panel15
- '
- Me.Panel15.Controls.Add(Me.CheckBox1)
- Me.Panel15.Controls.Add(Me.Label5)
- Me.Panel15.Controls.Add(Me.ComboBox1)
- Me.Panel15.Controls.Add(Me.Label6)
- Me.Panel15.Controls.Add(Me.PictureBox3)
- Me.Panel15.Location = New System.Drawing.Point(0, 138)
- Me.Panel15.Margin = New System.Windows.Forms.Padding(0)
- Me.Panel15.Name = "Panel15"
- Me.Panel15.Size = New System.Drawing.Size(748, 118)
- Me.Panel15.TabIndex = 1
- '
'Options_Logs
'
Me.Options_Logs.Controls.Add(Me.FlowLayoutPanel4)
@@ -2389,6 +2404,83 @@ Partial Class Options
Me.Panel20.Size = New System.Drawing.Size(748, 130)
Me.Panel20.TabIndex = 0
'
+ 'ShutdownSectionBtn
+ '
+ Me.ShutdownSectionBtn.Controls.Add(Me.PictureBox20)
+ Me.ShutdownSectionBtn.Controls.Add(Me.Label34)
+ Me.ShutdownSectionBtn.Location = New System.Drawing.Point(0, 320)
+ Me.ShutdownSectionBtn.Margin = New System.Windows.Forms.Padding(0)
+ Me.ShutdownSectionBtn.Name = "ShutdownSectionBtn"
+ Me.ShutdownSectionBtn.Size = New System.Drawing.Size(256, 32)
+ Me.ShutdownSectionBtn.TabIndex = 10
+ '
+ 'PictureBox20
+ '
+ Me.PictureBox20.Location = New System.Drawing.Point(9, 6)
+ Me.PictureBox20.Name = "PictureBox20"
+ Me.PictureBox20.Size = New System.Drawing.Size(20, 20)
+ Me.PictureBox20.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
+ Me.PictureBox20.TabIndex = 2
+ Me.PictureBox20.TabStop = False
+ '
+ 'Label34
+ '
+ Me.Label34.AutoSize = True
+ Me.Label34.Location = New System.Drawing.Point(37, 9)
+ Me.Label34.Name = "Label34"
+ Me.Label34.Size = New System.Drawing.Size(104, 15)
+ Me.Label34.TabIndex = 0
+ Me.Label34.Text = "Shutdown options"
+ '
+ 'Options_Shutdown
+ '
+ Me.Options_Shutdown.Controls.Add(Me.FlowLayoutPanel12)
+ Me.Options_Shutdown.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.Options_Shutdown.Location = New System.Drawing.Point(0, 0)
+ Me.Options_Shutdown.Name = "Options_Shutdown"
+ Me.Options_Shutdown.Size = New System.Drawing.Size(748, 465)
+ Me.Options_Shutdown.TabIndex = 10
+ Me.Options_Shutdown.Visible = False
+ '
+ 'FlowLayoutPanel12
+ '
+ Me.FlowLayoutPanel12.AutoScroll = True
+ Me.FlowLayoutPanel12.Controls.Add(Me.Panel23)
+ Me.FlowLayoutPanel12.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.FlowLayoutPanel12.Location = New System.Drawing.Point(0, 0)
+ Me.FlowLayoutPanel12.Name = "FlowLayoutPanel12"
+ Me.FlowLayoutPanel12.Size = New System.Drawing.Size(748, 465)
+ Me.FlowLayoutPanel12.TabIndex = 1
+ '
+ 'Panel23
+ '
+ Me.Panel23.Controls.Add(Me.Label60)
+ Me.Panel23.Controls.Add(Me.CheckBox22)
+ Me.Panel23.Location = New System.Drawing.Point(0, 0)
+ Me.Panel23.Margin = New System.Windows.Forms.Padding(0)
+ Me.Panel23.Name = "Panel23"
+ Me.Panel23.Size = New System.Drawing.Size(748, 130)
+ Me.Panel23.TabIndex = 0
+ '
+ 'Label60
+ '
+ Me.Label60.AutoSize = True
+ Me.Label60.Location = New System.Drawing.Point(22, 19)
+ Me.Label60.Name = "Label60"
+ Me.Label60.Size = New System.Drawing.Size(345, 15)
+ Me.Label60.TabIndex = 1
+ Me.Label60.Text = "Set options you would like to perform when the program closes:"
+ '
+ 'CheckBox22
+ '
+ Me.CheckBox22.AutoSize = True
+ Me.CheckBox22.Location = New System.Drawing.Point(56, 53)
+ Me.CheckBox22.Name = "CheckBox22"
+ Me.CheckBox22.Size = New System.Drawing.Size(380, 19)
+ Me.CheckBox22.TabIndex = 2
+ Me.CheckBox22.Text = "Automatically clean up mount points (launches a separate process)"
+ Me.CheckBox22.UseVisualStyleBackColor = True
+ '
'Options
'
Me.AcceptButton = Me.OK_Button
@@ -2471,6 +2563,12 @@ Partial Class Options
Me.StartupSectionBtn.PerformLayout()
CType(Me.PictureBox19, System.ComponentModel.ISupportInitialize).EndInit()
Me.ValueContainer.ResumeLayout(False)
+ Me.Options_Program.ResumeLayout(False)
+ Me.FlowLayoutPanel2.ResumeLayout(False)
+ Me.Panel14.ResumeLayout(False)
+ Me.Panel14.PerformLayout()
+ Me.Panel15.ResumeLayout(False)
+ Me.Panel15.PerformLayout()
Me.Options_Personalization.ResumeLayout(False)
Me.FlowLayoutPanel3.ResumeLayout(False)
Me.Panel16.ResumeLayout(False)
@@ -2484,12 +2582,6 @@ Partial Class Options
CType(Me.ProgressPanel_Ops, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.StatusBar_Ops, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.StatusBar_Idle, System.ComponentModel.ISupportInitialize).EndInit()
- Me.Options_Program.ResumeLayout(False)
- Me.FlowLayoutPanel2.ResumeLayout(False)
- Me.Panel14.ResumeLayout(False)
- Me.Panel14.PerformLayout()
- Me.Panel15.ResumeLayout(False)
- Me.Panel15.PerformLayout()
Me.Options_Logs.ResumeLayout(False)
Me.FlowLayoutPanel4.ResumeLayout(False)
Me.Panel5.ResumeLayout(False)
@@ -2527,6 +2619,13 @@ Partial Class Options
Me.FlowLayoutPanel11.ResumeLayout(False)
Me.Panel20.ResumeLayout(False)
Me.Panel20.PerformLayout()
+ Me.ShutdownSectionBtn.ResumeLayout(False)
+ Me.ShutdownSectionBtn.PerformLayout()
+ CType(Me.PictureBox20, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.Options_Shutdown.ResumeLayout(False)
+ Me.FlowLayoutPanel12.ResumeLayout(False)
+ Me.Panel23.ResumeLayout(False)
+ Me.Panel23.PerformLayout()
Me.ResumeLayout(False)
End Sub
@@ -2725,5 +2824,13 @@ Partial Class Options
Friend WithEvents Label17 As System.Windows.Forms.Label
Friend WithEvents RadioButton1 As System.Windows.Forms.RadioButton
Friend WithEvents RadioButton2 As System.Windows.Forms.RadioButton
+ Friend WithEvents ShutdownSectionBtn As System.Windows.Forms.Panel
+ Friend WithEvents PictureBox20 As System.Windows.Forms.PictureBox
+ Friend WithEvents Label34 As System.Windows.Forms.Label
+ Friend WithEvents Options_Shutdown As System.Windows.Forms.Panel
+ Friend WithEvents FlowLayoutPanel12 As System.Windows.Forms.FlowLayoutPanel
+ Friend WithEvents Panel23 As System.Windows.Forms.Panel
+ Friend WithEvents Label60 As System.Windows.Forms.Label
+ Friend WithEvents CheckBox22 As System.Windows.Forms.CheckBox
End Class
diff --git a/Panels/Exe_Ops/Options.vb b/Panels/Exe_Ops/Options.vb
index 533259bb..29483b1e 100644
--- a/Panels/Exe_Ops/Options.vb
+++ b/Panels/Exe_Ops/Options.vb
@@ -104,11 +104,6 @@ Public Class Options
End If
MainForm.LogFile = TextBox2.Text
MainForm.LogLevel = TrackBar1.Value + 1
- 'If RadioButton1.Checked Then
- ' MainForm.ImgOperationMode = 0
- 'Else
- ' MainForm.ImgOperationMode = 1
- 'End If
If CheckBox2.Checked Then
MainForm.QuietOperations = True
Else
@@ -173,6 +168,7 @@ Public Class Options
MainForm.NotificationFrequency = ComboBox6.SelectedIndex
MainForm.StartupRemount = CheckBox12.Checked
MainForm.StartupUpdateCheck = CheckBox13.Checked
+ MainForm.AutoCleanMounts = CheckBox22.Checked
MainForm.AutoLogs = CheckBox10.Checked
If MainForm.VolatileMode Then
MainForm.SaveDTSettings()
@@ -335,6 +331,7 @@ Public Class Options
Label56.Text = "Image detection"
Label57.Text = "File associations"
Label58.Text = "Startup options"
+ Label34.Text = "Shutdown options"
Label2.Text = "DISM executable path:"
Label3.Text = "Version:"
Label5.Text = "Save settings on:"
@@ -403,8 +400,10 @@ Public Class Options
CheckBox18.Text = "Capabilities"
CheckBox19.Text = "Installed drivers"
CheckBox20.Text = "Use the new project view design"
+ CheckBox22.Text = "Automatically clean up mount points (launches a separate process)"
DismOFD.Title = "Specify the DISM executable to use"
Label59.Text = "Log customization"
+ Label60.Text = "Set options you would like to perform when the program closes:"
GroupBox5.Text = "Associations"
Label9.Text = "Saving image information"
LinkLabel1.Text = "The program will enable or disable certain features according to what the DISM version supports. How is it going to affect my usage of this program, and which features will be disabled accordingly?"
@@ -431,6 +430,7 @@ Public Class Options
Label56.Text = "Detección de imágenes"
Label57.Text = "Asociaciones de archivos"
Label58.Text = "Opciones de inicio"
+ Label34.Text = "Opciones de cierre"
Label2.Text = "Ruta del ejecutable:"
Label3.Text = "Versión:"
Label5.Text = "Guardar configuraciones en:"
@@ -499,8 +499,10 @@ Public Class Options
CheckBox18.Text = "Funcionalidades"
CheckBox19.Text = "Controladores instalados"
CheckBox20.Text = "Utilizar el nuevo diseño de la vista de proyectos"
+ CheckBox22.Text = "Limpiar puntos de montaje automáticamente (inicia un proceso separado)"
DismOFD.Title = "Especifique el ejecutable de DISM a usar"
Label59.Text = "Personalización del registro"
+ Label60.Text = "Establezca las opciones que le gustaría realizar cuando el programa se cierra:"
GroupBox5.Text = "Asociaciones"
Label9.Text = "Guardando información de la imagen"
LinkLabel1.Text = "El programa habilitará o deshabilitará algunas características atendiendo a lo que soporte la versión de DISM. ¿Cómo va a afectar esto mi uso del programa, y qué características serán deshabilitadas?"
@@ -527,6 +529,7 @@ Public Class Options
Label56.Text = "Détection des images"
Label57.Text = "Associations de fichiers"
Label58.Text = "Paramètres de démarrage"
+ Label34.Text = "Paramètres de fermeture"
Label2.Text = "Chemin d'accès à l'exécutable DISM :"
Label3.Text = "Version:"
Label5.Text = "Sauvegarder les paramètres sur :"
@@ -595,8 +598,10 @@ Public Class Options
CheckBox18.Text = "Capacités"
CheckBox19.Text = "Pilotes installés"
CheckBox20.Text = "Utiliser le nouveau design de la vue du projet"
+ CheckBox22.Text = "Nettoyer automatiquement les points de montage (lance un processus séparé)"
DismOFD.Title = "Spécifier l'exécutable DISM à utiliser"
Label59.Text = "Personnalisation du journal"
+ Label60.Text = "Définissez les paramètres que vous souhaitez effectuer à la fermeture du programme :"
GroupBox5.Text = "Associations"
Label9.Text = "Sauvegarde des informations de l'image"
LinkLabel1.Text = "Le programme activera ou désactivera certaines caractéristiques en fonction de ce que la version de DISM prend en charge. Comment cela va-t-il affecter mon utilisation de ce programme, et quelles caractéristiques seront désactivées en conséquence ?"
@@ -623,6 +628,7 @@ Public Class Options
Label56.Text = "Deteção de imagens"
Label57.Text = "Associações de ficheiros"
Label58.Text = "Opções de arranque"
+ Label34.Text = "Opções de encerramento"
Label2.Text = "Localização do executável DISM:"
Label3.Text = "Versão:"
Label5.Text = "Guardar configurações em:"
@@ -691,8 +697,10 @@ Public Class Options
CheckBox18.Text = " Capacidades"
CheckBox19.Text = "Controladores instalados"
CheckBox20.Text = "Utilizar o novo design da vista de projeto"
+ CheckBox22.Text = "Limpar automaticamente os pontos de montagem (inicia um processo separado)"
DismOFD.Title = "Especificar o executável DISM a utilizar"
Label59.Text = "Personalização do registo"
+ Label60.Text = "Configurar as opções que gostaria de executar quando o programa fecha:"
GroupBox5.Text = "Associações"
Label9.Text = "Guardar informação da imagem"
LinkLabel1.Text = "O programa irá ativar ou desativar determinadas funcionalidades de acordo com o que a versão DISM suporta. Como é que isso vai afetar a minha utilização deste programa e que funcionalidades serão desactivadas em conformidade?"
@@ -720,6 +728,7 @@ Public Class Options
Label56.Text = "Image detection"
Label57.Text = "File associations"
Label58.Text = "Startup options"
+ Label34.Text = "Shutdown options"
Label2.Text = "DISM executable path:"
Label3.Text = "Version:"
Label5.Text = "Save settings on:"
@@ -788,8 +797,10 @@ Public Class Options
CheckBox18.Text = "Capabilities"
CheckBox19.Text = "Installed drivers"
CheckBox20.Text = "Use the new project view design"
+ CheckBox22.Text = "Automatically clean up mount points (launches a separate process)"
DismOFD.Title = "Specify the DISM executable to use"
Label59.Text = "Log customization"
+ Label60.Text = "Set options you would like to perform when the program closes:"
GroupBox5.Text = "Associations"
Label9.Text = "Saving image information"
LinkLabel1.Text = "The program will enable or disable certain features according to what the DISM version supports. How is it going to affect my usage of this program, and which features will be disabled accordingly?"
@@ -816,6 +827,7 @@ Public Class Options
Label56.Text = "Detección de imágenes"
Label57.Text = "Asociaciones de archivos"
Label58.Text = "Opciones de inicio"
+ Label34.Text = "Opciones de cierre"
Label2.Text = "Ruta del ejecutable:"
Label3.Text = "Versión:"
Label5.Text = "Guardar configuraciones en:"
@@ -884,8 +896,10 @@ Public Class Options
CheckBox18.Text = "Funcionalidades"
CheckBox19.Text = "Controladores instalados"
CheckBox20.Text = "Utilizar el nuevo diseño de la vista de proyectos"
+ CheckBox22.Text = "Limpiar puntos de montaje automáticamente (inicia un proceso separado)"
DismOFD.Title = "Especifique el ejecutable de DISM a usar"
Label59.Text = "Personalización del registro"
+ Label60.Text = "Establezca las opciones que le gustaría realizar cuando el programa se cierra:"
GroupBox5.Text = "Asociaciones"
Label9.Text = "Guardando información de la imagen"
LinkLabel1.Text = "El programa habilitará o deshabilitará algunas características atendiendo a lo que soporte la versión de DISM. ¿Cómo va a afectar esto mi uso del programa, y qué características serán deshabilitadas?"
@@ -912,6 +926,7 @@ Public Class Options
Label56.Text = "Détection des images"
Label57.Text = "Associations de fichiers"
Label58.Text = "Paramètres de démarrage"
+ Label34.Text = "Paramètres de fermeture"
Label2.Text = "Chemin d'accès à l'exécutable DISM :"
Label3.Text = "Version:"
Label5.Text = "Sauvegarder les paramètres sur :"
@@ -980,8 +995,10 @@ Public Class Options
CheckBox18.Text = "Capacités"
CheckBox19.Text = "Pilotes installés"
CheckBox20.Text = "Utiliser le nouveau design de la vue du projet"
+ CheckBox22.Text = "Nettoyer automatiquement les points de montage (lance un processus séparé)"
DismOFD.Title = "Spécifier l'exécutable DISM à utiliser"
Label59.Text = "Personnalisation du journal"
+ Label60.Text = "Définissez les paramètres que vous souhaitez effectuer à la fermeture du programme :"
GroupBox5.Text = "Associations"
Label9.Text = "Sauvegarde des informations de l'image"
LinkLabel1.Text = "Le programme activera ou désactivera certaines caractéristiques en fonction de ce que la version de DISM prend en charge. Comment cela va-t-il affecter mon utilisation de ce programme, et quelles caractéristiques seront désactivées en conséquence ?"
@@ -1008,6 +1025,7 @@ Public Class Options
Label56.Text = "Deteção de imagens"
Label57.Text = "Associações de ficheiros"
Label58.Text = "Opções de arranque"
+ Label34.Text = "Opções de encerramento"
Label2.Text = "Localização do executável DISM:"
Label3.Text = "Versão:"
Label5.Text = "Guardar configurações em:"
@@ -1076,8 +1094,10 @@ Public Class Options
CheckBox18.Text = " Capacidades"
CheckBox19.Text = "Controladores instalados"
CheckBox20.Text = "Utilizar o novo design da vista de projeto"
+ CheckBox22.Text = "Limpar automaticamente os pontos de montagem (inicia um processo separado)"
DismOFD.Title = "Especificar o executável DISM a utilizar"
Label59.Text = "Personalização do registo"
+ Label60.Text = "Configurar as opções que gostaria de executar quando o programa fecha:"
GroupBox5.Text = "Associações"
Label9.Text = "Guardar informação da imagem"
LinkLabel1.Text = "O programa irá ativar ou desativar determinadas funcionalidades de acordo com o que a versão DISM suporta. Como é que isso vai afetar a minha utilização deste programa e que funcionalidades serão desactivadas em conformidade?"
@@ -1464,6 +1484,7 @@ Public Class Options
CheckBox18.Checked = MainForm.AutoCompleteInfo(3)
CheckBox19.Checked = MainForm.AutoCompleteInfo(4)
CheckBox20.Checked = MainForm.GoToNewView
+ CheckBox22.Checked = MainForm.AutoCleanMounts
Select Case MainForm.ColorSchemes
Case 0
RadioButton1.Checked = True
@@ -2229,6 +2250,7 @@ Public Class Options
Options_ImgDetection.Visible = False
Options_FileAssocs.Visible = False
Options_Startup.Visible = False
+ Options_Shutdown.Visible = False
Label49.Font = New Font("Segoe UI", 9, FontStyle.Bold)
Label50.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label51.Font = New Font("Segoe UI", 9, FontStyle.Regular)
@@ -2239,6 +2261,7 @@ Public Class Options
Label56.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label57.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label58.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Regular)
ProgramSectionBtn.BackColor = BackColor
PersonalizationSectionBtn.BackColor = Win10Title.BackColor
LogSectionBtn.BackColor = Win10Title.BackColor
@@ -2249,6 +2272,7 @@ Public Class Options
ImgDetectSectionBtn.BackColor = Win10Title.BackColor
AssocsSectionBtn.BackColor = Win10Title.BackColor
StartupSectionBtn.BackColor = Win10Title.BackColor
+ ShutdownSectionBtn.BackColor = Win10Title.BackColor
Case 1
Options_Program.Visible = False
Options_Personalization.Visible = True
@@ -2260,6 +2284,7 @@ Public Class Options
Options_ImgDetection.Visible = False
Options_FileAssocs.Visible = False
Options_Startup.Visible = False
+ Options_Shutdown.Visible = False
Label49.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label50.Font = New Font("Segoe UI", 9, FontStyle.Bold)
Label51.Font = New Font("Segoe UI", 9, FontStyle.Regular)
@@ -2270,6 +2295,7 @@ Public Class Options
Label56.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label57.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label58.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Regular)
ProgramSectionBtn.BackColor = Win10Title.BackColor
PersonalizationSectionBtn.BackColor = BackColor
LogSectionBtn.BackColor = Win10Title.BackColor
@@ -2280,6 +2306,7 @@ Public Class Options
ImgDetectSectionBtn.BackColor = Win10Title.BackColor
AssocsSectionBtn.BackColor = Win10Title.BackColor
StartupSectionBtn.BackColor = Win10Title.BackColor
+ ShutdownSectionBtn.BackColor = Win10Title.BackColor
Case 2
Options_Program.Visible = False
Options_Personalization.Visible = False
@@ -2291,6 +2318,7 @@ Public Class Options
Options_ImgDetection.Visible = False
Options_FileAssocs.Visible = False
Options_Startup.Visible = False
+ Options_Shutdown.Visible = False
Label49.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label50.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label51.Font = New Font("Segoe UI", 9, FontStyle.Bold)
@@ -2301,6 +2329,7 @@ Public Class Options
Label56.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label57.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label58.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Regular)
ProgramSectionBtn.BackColor = Win10Title.BackColor
PersonalizationSectionBtn.BackColor = Win10Title.BackColor
LogSectionBtn.BackColor = BackColor
@@ -2311,6 +2340,7 @@ Public Class Options
ImgDetectSectionBtn.BackColor = Win10Title.BackColor
AssocsSectionBtn.BackColor = Win10Title.BackColor
StartupSectionBtn.BackColor = Win10Title.BackColor
+ ShutdownSectionBtn.BackColor = Win10Title.BackColor
Case 3
Options_Program.Visible = False
Options_Personalization.Visible = False
@@ -2322,6 +2352,7 @@ Public Class Options
Options_ImgDetection.Visible = False
Options_FileAssocs.Visible = False
Options_Startup.Visible = False
+ Options_Shutdown.Visible = False
Label49.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label50.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label51.Font = New Font("Segoe UI", 9, FontStyle.Regular)
@@ -2332,6 +2363,7 @@ Public Class Options
Label56.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label57.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label58.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Regular)
ProgramSectionBtn.BackColor = Win10Title.BackColor
PersonalizationSectionBtn.BackColor = Win10Title.BackColor
LogSectionBtn.BackColor = Win10Title.BackColor
@@ -2342,6 +2374,7 @@ Public Class Options
ImgDetectSectionBtn.BackColor = Win10Title.BackColor
AssocsSectionBtn.BackColor = Win10Title.BackColor
StartupSectionBtn.BackColor = Win10Title.BackColor
+ ShutdownSectionBtn.BackColor = Win10Title.BackColor
Case 4
Options_Program.Visible = False
Options_Personalization.Visible = False
@@ -2353,6 +2386,7 @@ Public Class Options
Options_ImgDetection.Visible = False
Options_FileAssocs.Visible = False
Options_Startup.Visible = False
+ Options_Shutdown.Visible = False
Label49.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label50.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label51.Font = New Font("Segoe UI", 9, FontStyle.Regular)
@@ -2363,6 +2397,7 @@ Public Class Options
Label56.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label57.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label58.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Regular)
ProgramSectionBtn.BackColor = Win10Title.BackColor
PersonalizationSectionBtn.BackColor = Win10Title.BackColor
LogSectionBtn.BackColor = Win10Title.BackColor
@@ -2373,6 +2408,7 @@ Public Class Options
ImgDetectSectionBtn.BackColor = Win10Title.BackColor
AssocsSectionBtn.BackColor = Win10Title.BackColor
StartupSectionBtn.BackColor = Win10Title.BackColor
+ ShutdownSectionBtn.BackColor = Win10Title.BackColor
Case 5
Options_Program.Visible = False
Options_Personalization.Visible = False
@@ -2384,6 +2420,7 @@ Public Class Options
Options_ImgDetection.Visible = False
Options_FileAssocs.Visible = False
Options_Startup.Visible = False
+ Options_Shutdown.Visible = False
Label49.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label50.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label51.Font = New Font("Segoe UI", 9, FontStyle.Regular)
@@ -2394,6 +2431,7 @@ Public Class Options
Label56.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label57.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label58.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Regular)
ProgramSectionBtn.BackColor = Win10Title.BackColor
PersonalizationSectionBtn.BackColor = Win10Title.BackColor
LogSectionBtn.BackColor = Win10Title.BackColor
@@ -2404,6 +2442,7 @@ Public Class Options
ImgDetectSectionBtn.BackColor = Win10Title.BackColor
AssocsSectionBtn.BackColor = Win10Title.BackColor
StartupSectionBtn.BackColor = Win10Title.BackColor
+ ShutdownSectionBtn.BackColor = Win10Title.BackColor
Case 6
Options_Program.Visible = False
Options_Personalization.Visible = False
@@ -2415,6 +2454,7 @@ Public Class Options
Options_ImgDetection.Visible = False
Options_FileAssocs.Visible = False
Options_Startup.Visible = False
+ Options_Shutdown.Visible = False
Label49.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label50.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label51.Font = New Font("Segoe UI", 9, FontStyle.Regular)
@@ -2425,6 +2465,7 @@ Public Class Options
Label56.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label57.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label58.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Regular)
ProgramSectionBtn.BackColor = Win10Title.BackColor
PersonalizationSectionBtn.BackColor = Win10Title.BackColor
LogSectionBtn.BackColor = Win10Title.BackColor
@@ -2435,6 +2476,7 @@ Public Class Options
ImgDetectSectionBtn.BackColor = Win10Title.BackColor
AssocsSectionBtn.BackColor = Win10Title.BackColor
StartupSectionBtn.BackColor = Win10Title.BackColor
+ ShutdownSectionBtn.BackColor = Win10Title.BackColor
Case 7
Options_Program.Visible = False
Options_Personalization.Visible = False
@@ -2446,6 +2488,7 @@ Public Class Options
Options_ImgDetection.Visible = True
Options_FileAssocs.Visible = False
Options_Startup.Visible = False
+ Options_Shutdown.Visible = False
Label49.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label50.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label51.Font = New Font("Segoe UI", 9, FontStyle.Regular)
@@ -2456,6 +2499,7 @@ Public Class Options
Label56.Font = New Font("Segoe UI", 9, FontStyle.Bold)
Label57.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label58.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Regular)
ProgramSectionBtn.BackColor = Win10Title.BackColor
PersonalizationSectionBtn.BackColor = Win10Title.BackColor
LogSectionBtn.BackColor = Win10Title.BackColor
@@ -2466,6 +2510,7 @@ Public Class Options
ImgDetectSectionBtn.BackColor = BackColor
AssocsSectionBtn.BackColor = Win10Title.BackColor
StartupSectionBtn.BackColor = Win10Title.BackColor
+ ShutdownSectionBtn.BackColor = Win10Title.BackColor
Case 8
Options_Program.Visible = False
Options_Personalization.Visible = False
@@ -2477,6 +2522,7 @@ Public Class Options
Options_ImgDetection.Visible = False
Options_FileAssocs.Visible = True
Options_Startup.Visible = False
+ Options_Shutdown.Visible = False
Label49.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label50.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label51.Font = New Font("Segoe UI", 9, FontStyle.Regular)
@@ -2487,6 +2533,7 @@ Public Class Options
Label56.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label57.Font = New Font("Segoe UI", 9, FontStyle.Bold)
Label58.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Regular)
ProgramSectionBtn.BackColor = Win10Title.BackColor
PersonalizationSectionBtn.BackColor = Win10Title.BackColor
LogSectionBtn.BackColor = Win10Title.BackColor
@@ -2497,6 +2544,7 @@ Public Class Options
ImgDetectSectionBtn.BackColor = Win10Title.BackColor
AssocsSectionBtn.BackColor = BackColor
StartupSectionBtn.BackColor = Win10Title.BackColor
+ ShutdownSectionBtn.BackColor = Win10Title.BackColor
Case 9
Options_Program.Visible = False
Options_Personalization.Visible = False
@@ -2508,6 +2556,7 @@ Public Class Options
Options_ImgDetection.Visible = False
Options_FileAssocs.Visible = False
Options_Startup.Visible = True
+ Options_Shutdown.Visible = False
Label49.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label50.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label51.Font = New Font("Segoe UI", 9, FontStyle.Regular)
@@ -2518,6 +2567,7 @@ Public Class Options
Label56.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label57.Font = New Font("Segoe UI", 9, FontStyle.Regular)
Label58.Font = New Font("Segoe UI", 9, FontStyle.Bold)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Regular)
ProgramSectionBtn.BackColor = Win10Title.BackColor
PersonalizationSectionBtn.BackColor = Win10Title.BackColor
LogSectionBtn.BackColor = Win10Title.BackColor
@@ -2528,6 +2578,41 @@ Public Class Options
ImgDetectSectionBtn.BackColor = Win10Title.BackColor
AssocsSectionBtn.BackColor = Win10Title.BackColor
StartupSectionBtn.BackColor = BackColor
+ ShutdownSectionBtn.BackColor = Win10Title.BackColor
+ Case 10
+ Options_Program.Visible = False
+ Options_Personalization.Visible = False
+ Options_Logs.Visible = False
+ Options_ImgOps.Visible = False
+ Options_Scratch.Visible = False
+ Options_Output.Visible = False
+ Options_BgProcs.Visible = False
+ Options_ImgDetection.Visible = False
+ Options_FileAssocs.Visible = False
+ Options_Startup.Visible = False
+ Options_Shutdown.Visible = True
+ Label49.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label50.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label51.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label52.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label53.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label54.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label55.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label56.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label57.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label58.Font = New Font("Segoe UI", 9, FontStyle.Regular)
+ Label34.Font = New Font("Segoe UI", 9, FontStyle.Bold)
+ ProgramSectionBtn.BackColor = Win10Title.BackColor
+ PersonalizationSectionBtn.BackColor = Win10Title.BackColor
+ LogSectionBtn.BackColor = Win10Title.BackColor
+ ImgOpsSectionBtn.BackColor = Win10Title.BackColor
+ ScDirSectionBtn.BackColor = Win10Title.BackColor
+ OutputSectionBtn.BackColor = Win10Title.BackColor
+ BgProcsSectionBtn.BackColor = Win10Title.BackColor
+ ImgDetectSectionBtn.BackColor = Win10Title.BackColor
+ AssocsSectionBtn.BackColor = Win10Title.BackColor
+ StartupSectionBtn.BackColor = Win10Title.BackColor
+ ShutdownSectionBtn.BackColor = BackColor
End Select
SectionNum = Number
End Sub
@@ -2572,6 +2657,10 @@ Public Class Options
ChangeSections(9)
End Sub
+ Private Sub ShutdownSectionBtn_Click(sender As Object, e As EventArgs) Handles ShutdownSectionBtn.Click, Label34.Click, PictureBox20.Click
+ ChangeSections(10)
+ End Sub
+
#End Region
Private Sub RadioButton1_CheckedChanged(sender As Object, e As EventArgs) Handles RadioButton1.CheckedChanged
diff --git a/Panels/Get_Ops/AppxPkgs/GetAppxPkgInfo.vb b/Panels/Get_Ops/AppxPkgs/GetAppxPkgInfo.vb
index 4e975445..740376e8 100644
--- a/Panels/Get_Ops/AppxPkgs/GetAppxPkgInfo.vb
+++ b/Panels/Get_Ops/AppxPkgs/GetAppxPkgInfo.vb
@@ -395,15 +395,19 @@ Public Class GetAppxPkgInfoDlg
Label5.Text = (folder & "\AppxManifest.xml").Replace("\\", "\").Trim()
End If
Next
- If pkgDirs.Count <= 1 And Not Label5.Text.Contains(Label23.Text) Then
- If File.Exists(pkgDirs(0).Replace("\\", "\").Trim() & "\AppxMetadata\AppxBundleManifest.xml") Then
- Label5.Text = pkgDirs(0).Replace("\\", "\").Trim() & "\AppxMetadata\AppxBundleManifest.xml"
- ElseIf File.Exists(pkgDirs(0).Replace("\\", "\").Trim() & "\AppxManifest.xml") Then
- Label5.Text = pkgDirs(0).Replace("\\", "\").Trim() & "\AppxManifest.xml"
- Else
- Label5.Text = ""
+ Try
+ If pkgDirs.Count <= 1 And Not Label5.Text.Contains(Label23.Text) Then
+ If File.Exists(pkgDirs(0).Replace("\\", "\").Trim() & "\AppxMetadata\AppxBundleManifest.xml") Then
+ Label5.Text = pkgDirs(0).Replace("\\", "\").Trim() & "\AppxMetadata\AppxBundleManifest.xml"
+ ElseIf File.Exists(pkgDirs(0).Replace("\\", "\").Trim() & "\AppxManifest.xml") Then
+ Label5.Text = pkgDirs(0).Replace("\\", "\").Trim() & "\AppxManifest.xml"
+ Else
+ Label5.Text = ""
+ End If
End If
- End If
+ Catch ex As Exception
+ MsgBox("Could not get some information about this application.", vbOKOnly + vbCritical, Label1.Text)
+ End Try
Panel4.Visible = True
Panel7.Visible = False
Else
diff --git a/Panels/Img_Ops/AppxPkgs/AppInstallerDownloader.Designer.vb b/Panels/Img_Ops/AppxPkgs/AppInstallerDownloader.Designer.vb
index 11557047..8762f14b 100644
--- a/Panels/Img_Ops/AppxPkgs/AppInstallerDownloader.Designer.vb
+++ b/Panels/Img_Ops/AppxPkgs/AppInstallerDownloader.Designer.vb
@@ -27,9 +27,15 @@ Partial Class AppInstallerDownloader
Me.Label1 = New System.Windows.Forms.Label()
Me.ProgressBar1 = New System.Windows.Forms.ProgressBar()
Me.BackgroundWorker1 = New System.ComponentModel.BackgroundWorker()
- Me.Label2 = New System.Windows.Forms.Label()
+ Me.StatusLbl = New System.Windows.Forms.Label()
Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
+ Me.GroupBox1 = New System.Windows.Forms.GroupBox()
+ Me.Label2 = New System.Windows.Forms.Label()
+ Me.downUriLbl = New System.Windows.Forms.Label()
+ Me.downSpdLbl = New System.Windows.Forms.Label()
+ Me.downETALbl = New System.Windows.Forms.Label()
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.GroupBox1.SuspendLayout()
Me.SuspendLayout()
'
'PictureBox1
@@ -56,7 +62,9 @@ Partial Class AppInstallerDownloader
'
'ProgressBar1
'
- Me.ProgressBar1.Location = New System.Drawing.Point(55, 118)
+ 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(55, 238)
Me.ProgressBar1.Name = "ProgressBar1"
Me.ProgressBar1.Size = New System.Drawing.Size(637, 23)
Me.ProgressBar1.TabIndex = 2
@@ -66,30 +74,90 @@ Partial Class AppInstallerDownloader
Me.BackgroundWorker1.WorkerReportsProgress = True
Me.BackgroundWorker1.WorkerSupportsCancellation = True
'
+ 'StatusLbl
+ '
+ Me.StatusLbl.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.StatusLbl.AutoEllipsis = True
+ Me.StatusLbl.Location = New System.Drawing.Point(18, 130)
+ Me.StatusLbl.Name = "StatusLbl"
+ Me.StatusLbl.Size = New System.Drawing.Size(600, 18)
+ Me.StatusLbl.TabIndex = 1
+ Me.StatusLbl.Text = "Status"
+ '
+ 'Timer1
+ '
+ Me.Timer1.Enabled = True
+ Me.Timer1.Interval = 500
+ '
+ 'GroupBox1
+ '
+ Me.GroupBox1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
+ Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.GroupBox1.Controls.Add(Me.downUriLbl)
+ Me.GroupBox1.Controls.Add(Me.downETALbl)
+ Me.GroupBox1.Controls.Add(Me.downSpdLbl)
+ Me.GroupBox1.Controls.Add(Me.Label2)
+ Me.GroupBox1.Controls.Add(Me.StatusLbl)
+ Me.GroupBox1.Location = New System.Drawing.Point(55, 72)
+ Me.GroupBox1.Name = "GroupBox1"
+ Me.GroupBox1.Size = New System.Drawing.Size(637, 160)
+ Me.GroupBox1.TabIndex = 3
+ Me.GroupBox1.TabStop = False
+ Me.GroupBox1.Text = "Transfer details"
+ '
'Label2
'
Me.Label2.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Label2.AutoEllipsis = True
- Me.Label2.Location = New System.Drawing.Point(52, 97)
+ Me.Label2.Location = New System.Drawing.Point(18, 28)
Me.Label2.Name = "Label2"
- Me.Label2.Size = New System.Drawing.Size(640, 18)
+ Me.Label2.Size = New System.Drawing.Size(600, 14)
Me.Label2.TabIndex = 1
- Me.Label2.Text = "Status"
+ Me.Label2.Text = "Download URL:"
'
- 'Timer1
+ 'downUriLbl
'
- Me.Timer1.Enabled = True
- Me.Timer1.Interval = 500
+ Me.downUriLbl.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.downUriLbl.AutoEllipsis = True
+ Me.downUriLbl.Location = New System.Drawing.Point(18, 44)
+ Me.downUriLbl.Name = "downUriLbl"
+ Me.downUriLbl.Size = New System.Drawing.Size(600, 14)
+ Me.downUriLbl.TabIndex = 1
+ '
+ 'downSpdLbl
+ '
+ Me.downSpdLbl.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.downSpdLbl.AutoEllipsis = True
+ Me.downSpdLbl.Location = New System.Drawing.Point(18, 64)
+ Me.downSpdLbl.Name = "downSpdLbl"
+ Me.downSpdLbl.Size = New System.Drawing.Size(600, 14)
+ Me.downSpdLbl.TabIndex = 1
+ Me.downSpdLbl.Text = "Download speed:"
+ '
+ 'downETALbl
+ '
+ Me.downETALbl.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.downETALbl.AutoEllipsis = True
+ Me.downETALbl.Location = New System.Drawing.Point(18, 82)
+ Me.downETALbl.Name = "downETALbl"
+ Me.downETALbl.Size = New System.Drawing.Size(600, 14)
+ Me.downETALbl.TabIndex = 1
+ Me.downETALbl.Text = "Estimated time remaining:"
'
'AppInstallerDownloader
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
- Me.ClientSize = New System.Drawing.Size(704, 161)
+ Me.ClientSize = New System.Drawing.Size(704, 281)
Me.ControlBox = False
+ Me.Controls.Add(Me.GroupBox1)
Me.Controls.Add(Me.ProgressBar1)
- Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.PictureBox1)
Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
@@ -101,6 +169,7 @@ Partial Class AppInstallerDownloader
Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
Me.Text = "Downloading application package..."
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.GroupBox1.ResumeLayout(False)
Me.ResumeLayout(False)
Me.PerformLayout()
@@ -109,7 +178,12 @@ Partial Class AppInstallerDownloader
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents ProgressBar1 As System.Windows.Forms.ProgressBar
Friend WithEvents BackgroundWorker1 As System.ComponentModel.BackgroundWorker
- Friend WithEvents Label2 As System.Windows.Forms.Label
+ Friend WithEvents StatusLbl As System.Windows.Forms.Label
Friend WithEvents Timer1 As System.Windows.Forms.Timer
+ Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
+ Friend WithEvents downUriLbl As System.Windows.Forms.Label
+ Friend WithEvents Label2 As System.Windows.Forms.Label
+ Friend WithEvents downETALbl As System.Windows.Forms.Label
+ Friend WithEvents downSpdLbl As System.Windows.Forms.Label
End Class
diff --git a/Panels/Img_Ops/AppxPkgs/AppInstallerDownloader.vb b/Panels/Img_Ops/AppxPkgs/AppInstallerDownloader.vb
index e67ef01c..70600627 100644
--- a/Panels/Img_Ops/AppxPkgs/AppInstallerDownloader.vb
+++ b/Panels/Img_Ops/AppxPkgs/AppInstallerDownloader.vb
@@ -19,44 +19,84 @@ Public Class AppInstallerDownloader
Dim Language As Integer
Dim progress As String
+ Dim downSpd As Long
+
+ Private sw As Stopwatch = New Stopwatch()
+ Private time As TimeSpan = New TimeSpan()
+
Private Sub AppInstallerDownloader_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Timer1.Enabled = True
+ downUriLbl.Text = ""
+ sw.Reset()
+ sw.Start()
Select Case MainForm.Language
Case 0
Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
Case "ENU", "ENG"
Text = "Downloading application package..."
Label1.Text = "Please wait while DISMTools downloads the application package to add it to this image. This can take some time, depending on your network connection speed."
- Label2.Text = "Please wait..."
+ StatusLbl.Text = "Please wait..."
+ GroupBox1.Text = "Transfer details"
+ Label2.Text = "Download URL:"
+ downSpdLbl.Text = "Download speed: unknown"
+ downETALbl.Text = "Estimated time remaining: unknown"
Case "ESN"
Text = "Descargando paquete de aplicación..."
Label1.Text = "Espere mientras DISMTools descarga el paquete de aplicación para añadirlo a esta imagen. Esto puede llevar algo de tiempo, dependiendo de la velocidad de su conexión de red."
- Label2.Text = "Espere..."
+ StatusLbl.Text = "Espere..."
+ GroupBox1.Text = "Detalles de la transferencia"
+ Label2.Text = "URL de descarga:"
+ downSpdLbl.Text = "Velocidad de descarga: desconocida"
+ downETALbl.Text = "Tiempo restante estimado: desconocido"
Case "FRA"
Text = "Téléchargement du paquet de l'application en cours..."
Label1.Text = "Veuillez patienter pendant que DISMTools télécharge le paquet d'application pour l'ajouter à cette image. Cela peut prendre un certain temps, en fonction de la vitesse de votre connexion réseau."
- Label2.Text = "Veuillez patienter..."
+ StatusLbl.Text = "Veuillez patienter..."
+ GroupBox1.Text = "Détails du transfert"
+ Label2.Text = "URL de téléchargement :"
+ downSpdLbl.Text = "Vitesse de téléchargement : inconnue"
+ downETALbl.Text = "Temps restant estimé : inconnu"
Case "PTB", "PTG"
Text = "Descarregando o pacote da aplicação..."
Label1.Text = "Aguarde enquanto o DISMTools baixa o pacote de aplicativos para adicioná-lo a esta imagem. Isso pode levar algum tempo, dependendo da velocidade da conexão de rede."
- Label2.Text = "Aguarde..."
+ StatusLbl.Text = "Aguarde..."
+ GroupBox1.Text = "Detalhes da transferência"
+ Label2.Text = "URL de transferência:"
+ downSpdLbl.Text = "Velocidade de transferência: desconhecida"
+ downETALbl.Text = "Tempo estimado restante: desconhecido"
End Select
Case 1
Text = "Downloading application package..."
Label1.Text = "Please wait while DISMTools downloads the application package to add it to this image. This can take some time, depending on your network connection speed."
- Label2.Text = "Please wait..."
+ StatusLbl.Text = "Please wait..."
+ GroupBox1.Text = "Transfer details"
+ Label2.Text = "Download URL:"
+ downSpdLbl.Text = "Download speed: unknown"
+ downETALbl.Text = "Estimated time remaining: unknown"
Case 2
Text = "Descargando paquete de aplicación..."
Label1.Text = "Espere mientras DISMTools descarga el paquete de aplicación para añadirlo a esta imagen. Esto puede llevar algo de tiempo, dependiendo de la velocidad de su conexión de red."
- Label2.Text = "Espere..."
+ StatusLbl.Text = "Espere..."
+ GroupBox1.Text = "Detalles de la transferencia"
+ Label2.Text = "URL de descarga:"
+ downSpdLbl.Text = "Velocidad de descarga: desconocida"
+ downETALbl.Text = "Tiempo restante estimado: desconocido"
Case 3
Text = "Téléchargement du paquet de l'application en cours..."
Label1.Text = "Veuillez patienter pendant que DISMTools télécharge le paquet d'application pour l'ajouter à cette image. Cela peut prendre un certain temps, en fonction de la vitesse de votre connexion réseau."
- Label2.Text = "Veuillez patienter..."
+ StatusLbl.Text = "Veuillez patienter..."
+ GroupBox1.Text = "Détails du transfert"
+ Label2.Text = "URL de téléchargement :"
+ downSpdLbl.Text = "Vitesse de téléchargement : inconnue"
+ downETALbl.Text = "Temps restant estimé : inconnu"
Case 4
Text = "Descarregando o pacote da aplicação..."
Label1.Text = "Aguarde enquanto o DISMTools baixa o pacote de aplicativos para adicioná-lo a esta imagem. Isso pode levar algum tempo, dependendo da velocidade da conexão de rede."
- Label2.Text = "Aguarde..."
+ StatusLbl.Text = "Aguarde..."
+ GroupBox1.Text = "Detalhes da transferência"
+ Label2.Text = "URL de transferência:"
+ downSpdLbl.Text = "Velocidade de transferência: desconhecida"
+ downETALbl.Text = "Tempo estimado restante: desconhecido"
End Select
If MainForm.BackColor = Color.FromArgb(48, 48, 48) Then
BackColor = Color.FromArgb(31, 31, 31)
@@ -65,6 +105,7 @@ Public Class AppInstallerDownloader
BackColor = Color.FromArgb(238, 238, 242)
ForeColor = Color.Black
End If
+ GroupBox1.ForeColor = ForeColor
Dim handle As IntPtr = MainForm.GetWindowHandle(Me)
If MainForm.IsWindowsVersionOrGreater(10, 0, 18362) Then MainForm.EnableDarkTitleBar(handle, MainForm.BackColor = Color.FromArgb(48, 48, 48))
Language = MainForm.Language
@@ -108,6 +149,7 @@ Public Class AppInstallerDownloader
' Detect if a URL has been detected and download it
If AppInstallerUri <> "" Then
+ downUriLbl.Text = AppInstallerUri
BackgroundWorker1.RunWorkerAsync()
End If
Catch ex As Exception
@@ -148,6 +190,10 @@ Public Class AppInstallerDownloader
Case 4
progress = "Descarregar o pacote da aplicação principal... (" & BytesToReadableSize(e.BytesReceived) & " de " & BytesToReadableSize(e.TotalBytesToReceive) & " descarregados)"
End Select
+ downSpd = CLng(Math.Round(e.BytesReceived / sw.Elapsed.TotalSeconds, 2))
+ If e.TotalBytesToReceive > 0 Then
+ time = TimeSpan.FromSeconds((e.TotalBytesToReceive - e.BytesReceived) / CDbl(downSpd))
+ End If
End Sub
Private Sub WebClient_DownloadFileCompleted(sender As Object, e As AsyncCompletedEventArgs)
@@ -158,7 +204,36 @@ Public Class AppInstallerDownloader
#End Region
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
- Label2.Text = progress
+ StatusLbl.Text = progress
+ Select Case Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ downSpdLbl.Text = "Download speed: " & BytesToReadableSize(downSpd) & "/s"
+ downETALbl.Text = "Estimated time remaining: " & time.ToString("m\:ss") & " seconds"
+ Case "ESN"
+ downSpdLbl.Text = "Velocidad de descarga: " & BytesToReadableSize(downSpd) & "/s"
+ downETALbl.Text = "Tiempo restante estimado: " & time.ToString("m\:ss") & " segundos"
+ Case "FRA"
+ downSpdLbl.Text = "Vitesse de téléchargement : " & BytesToReadableSize(downSpd, True) & "/s"
+ downETALbl.Text = "Estimation du temps restant : " & time.ToString("m\:ss") & " secondes"
+ Case "PTB", "PTG"
+ downSpdLbl.Text = "Velocidade de transferência: " & BytesToReadableSize(downSpd) & "/s"
+ downETALbl.Text = "Tempo restante estimado: " & time.ToString("m\:ss") & " segundos"
+ End Select
+ Case 1
+ downSpdLbl.Text = "Download speed: " & BytesToReadableSize(downSpd) & "/s"
+ downETALbl.Text = "Estimated time remaining: " & time.ToString("m\:ss") & " seconds"
+ Case 2
+ downSpdLbl.Text = "Velocidad de descarga: " & BytesToReadableSize(downSpd) & "/s"
+ downETALbl.Text = "Tiempo restante estimado: " & time.ToString("m\:ss") & " segundos"
+ Case 3
+ downSpdLbl.Text = "Vitesse de téléchargement : " & BytesToReadableSize(downSpd, True) & "/s"
+ downETALbl.Text = "Estimation du temps restant : " & time.ToString("m\:ss") & " secondes"
+ Case 4
+ downSpdLbl.Text = "Velocidade de transferência: " & BytesToReadableSize(downSpd) & "/s"
+ downETALbl.Text = "Tempo restante estimado: " & time.ToString("m\:ss") & " segundos"
+ End Select
End Sub
Private Sub AppInstallerDownloader_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
diff --git a/Panels/Img_Ops/Drivers/ImportDrivers.vb b/Panels/Img_Ops/Drivers/ImportDrivers.vb
index 1fc49990..cfb79e8c 100644
--- a/Panels/Img_Ops/Drivers/ImportDrivers.vb
+++ b/Panels/Img_Ops/Drivers/ImportDrivers.vb
@@ -9,6 +9,7 @@ Public Class ImportDrivers
Dim ImportSources() As String = New String(2) {"Windows image", "Online installation", "Offline installation"}
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
+ If Not ProgressPanel.IsDisposed Then ProgressPanel.Dispose()
If ImportSourceInt < 0 Then Exit Sub
Dim msg As String = ""
If ComboBox1.SelectedItem = "" Then
diff --git a/Panels/Img_Ops/ImgApply.vb b/Panels/Img_Ops/ImgApply.vb
index 6edb7ade..9d5190f6 100644
--- a/Panels/Img_Ops/ImgApply.vb
+++ b/Panels/Img_Ops/ImgApply.vb
@@ -367,6 +367,8 @@ Public Class ImgApply
GroupBox2.ForeColor = Color.Black
GroupBox3.ForeColor = Color.Black
GroupBox4.ForeColor = Color.Black
+ ListBox1.BackColor = Color.FromArgb(238, 238, 242)
+ StatusStrip1.BackColor = Color.FromArgb(238, 238, 242)
ComboBox1.BackColor = Color.FromArgb(238, 238, 242)
End If
ComboBox1.ForeColor = ForeColor
diff --git a/Panels/Img_Ops/ImgExport.Designer.vb b/Panels/Img_Ops/ImgExport.Designer.vb
new file mode 100644
index 00000000..89d1b05e
--- /dev/null
+++ b/Panels/Img_Ops/ImgExport.Designer.vb
@@ -0,0 +1,656 @@
+ _
+Partial Class ImgExport
+ Inherits System.Windows.Forms.Form
+
+ 'Form reemplaza a Dispose para limpiar la lista de componentes.
+ _
+ 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
+
+ 'Requerido por el Diseñador de Windows Forms
+ Private components As System.ComponentModel.IContainer
+
+ 'NOTA: el Diseñador de Windows Forms necesita el siguiente procedimiento
+ 'Se puede modificar usando el Diseñador de Windows Forms.
+ 'No lo modifique con el editor de código.
+ _
+ Private Sub InitializeComponent()
+ Me.TableLayoutPanel1 = New System.Windows.Forms.TableLayoutPanel()
+ Me.OK_Button = New System.Windows.Forms.Button()
+ Me.Cancel_Button = New System.Windows.Forms.Button()
+ Me.Win10Title = New System.Windows.Forms.Panel()
+ Me.PictureBox1 = New System.Windows.Forms.PictureBox()
+ Me.Label1 = New System.Windows.Forms.Label()
+ Me.GroupBox1 = New System.Windows.Forms.GroupBox()
+ Me.Button2 = New System.Windows.Forms.Button()
+ Me.TextBox2 = New System.Windows.Forms.TextBox()
+ Me.Label2 = New System.Windows.Forms.Label()
+ Me.Button1 = New System.Windows.Forms.Button()
+ Me.TextBox1 = New System.Windows.Forms.TextBox()
+ Me.Label3 = New System.Windows.Forms.Label()
+ Me.GroupBox2 = New System.Windows.Forms.GroupBox()
+ Me.TableLayoutPanel2 = New System.Windows.Forms.TableLayoutPanel()
+ Me.FlowLayoutPanel3 = New System.Windows.Forms.FlowLayoutPanel()
+ Me.Panel3 = New System.Windows.Forms.Panel()
+ Me.CheckBox1 = New System.Windows.Forms.CheckBox()
+ Me.SWMFilePanel = New System.Windows.Forms.Panel()
+ Me.ListBox1 = New System.Windows.Forms.ListBox()
+ Me.StatusStrip1 = New System.Windows.Forms.StatusStrip()
+ Me.ToolStripStatusLabel1 = New System.Windows.Forms.ToolStripStatusLabel()
+ Me.Panel2 = New System.Windows.Forms.Panel()
+ Me.TextBox4 = New System.Windows.Forms.TextBox()
+ Me.Button5 = New System.Windows.Forms.Button()
+ Me.Button4 = New System.Windows.Forms.Button()
+ Me.Label4 = New System.Windows.Forms.Label()
+ Me.Panel4 = New System.Windows.Forms.Panel()
+ Me.TextBox3 = New System.Windows.Forms.TextBox()
+ Me.CheckBox2 = New System.Windows.Forms.CheckBox()
+ Me.Panel5 = New System.Windows.Forms.Panel()
+ Me.Label8 = New System.Windows.Forms.Label()
+ Me.ComboBox1 = New System.Windows.Forms.ComboBox()
+ Me.Label5 = New System.Windows.Forms.Label()
+ Me.CheckBox3 = New System.Windows.Forms.CheckBox()
+ Me.CheckBox4 = New System.Windows.Forms.CheckBox()
+ Me.CheckBox5 = New System.Windows.Forms.CheckBox()
+ Me.Label6 = New System.Windows.Forms.Label()
+ Me.Panel1 = New System.Windows.Forms.Panel()
+ Me.ListView1 = New System.Windows.Forms.ListView()
+ Me.ColumnHeader1 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.ColumnHeader2 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.ColumnHeader3 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.ColumnHeader4 = CType(New System.Windows.Forms.ColumnHeader(), System.Windows.Forms.ColumnHeader)
+ Me.NumericUpDown1 = New System.Windows.Forms.NumericUpDown()
+ Me.Label7 = New System.Windows.Forms.Label()
+ Me.SaveFileDialog1 = New System.Windows.Forms.SaveFileDialog()
+ Me.OpenFileDialog1 = New System.Windows.Forms.OpenFileDialog()
+ Me.TableLayoutPanel1.SuspendLayout()
+ Me.Win10Title.SuspendLayout()
+ CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.GroupBox1.SuspendLayout()
+ Me.GroupBox2.SuspendLayout()
+ Me.TableLayoutPanel2.SuspendLayout()
+ Me.FlowLayoutPanel3.SuspendLayout()
+ Me.Panel3.SuspendLayout()
+ Me.SWMFilePanel.SuspendLayout()
+ Me.StatusStrip1.SuspendLayout()
+ Me.Panel2.SuspendLayout()
+ Me.Panel4.SuspendLayout()
+ Me.Panel5.SuspendLayout()
+ Me.Panel1.SuspendLayout()
+ CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).BeginInit()
+ Me.SuspendLayout()
+ '
+ 'TableLayoutPanel1
+ '
+ Me.TableLayoutPanel1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.TableLayoutPanel1.ColumnCount = 2
+ Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
+ Me.TableLayoutPanel1.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
+ Me.TableLayoutPanel1.Controls.Add(Me.OK_Button, 0, 0)
+ Me.TableLayoutPanel1.Controls.Add(Me.Cancel_Button, 1, 0)
+ Me.TableLayoutPanel1.Location = New System.Drawing.Point(850, 520)
+ Me.TableLayoutPanel1.Name = "TableLayoutPanel1"
+ Me.TableLayoutPanel1.RowCount = 1
+ Me.TableLayoutPanel1.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
+ Me.TableLayoutPanel1.Size = New System.Drawing.Size(146, 29)
+ Me.TableLayoutPanel1.TabIndex = 0
+ '
+ 'OK_Button
+ '
+ Me.OK_Button.Anchor = System.Windows.Forms.AnchorStyles.None
+ Me.OK_Button.FlatStyle = System.Windows.Forms.FlatStyle.System
+ Me.OK_Button.Location = New System.Drawing.Point(3, 3)
+ Me.OK_Button.Name = "OK_Button"
+ Me.OK_Button.Size = New System.Drawing.Size(67, 23)
+ Me.OK_Button.TabIndex = 0
+ Me.OK_Button.Text = "OK"
+ '
+ 'Cancel_Button
+ '
+ Me.Cancel_Button.Anchor = System.Windows.Forms.AnchorStyles.None
+ Me.Cancel_Button.DialogResult = System.Windows.Forms.DialogResult.Cancel
+ Me.Cancel_Button.FlatStyle = System.Windows.Forms.FlatStyle.System
+ Me.Cancel_Button.Location = New System.Drawing.Point(76, 3)
+ Me.Cancel_Button.Name = "Cancel_Button"
+ Me.Cancel_Button.Size = New System.Drawing.Size(67, 23)
+ Me.Cancel_Button.TabIndex = 1
+ Me.Cancel_Button.Text = "Cancel"
+ '
+ 'Win10Title
+ '
+ Me.Win10Title.BackColor = System.Drawing.Color.White
+ Me.Win10Title.Controls.Add(Me.PictureBox1)
+ Me.Win10Title.Controls.Add(Me.Label1)
+ Me.Win10Title.Dock = System.Windows.Forms.DockStyle.Top
+ Me.Win10Title.Location = New System.Drawing.Point(0, 0)
+ Me.Win10Title.Name = "Win10Title"
+ Me.Win10Title.Size = New System.Drawing.Size(1008, 48)
+ Me.Win10Title.TabIndex = 7
+ Me.Win10Title.Visible = False
+ '
+ 'PictureBox1
+ '
+ Me.PictureBox1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.PictureBox1.Image = Global.DISMTools.My.Resources.Resources.capture_img
+ Me.PictureBox1.Location = New System.Drawing.Point(964, 8)
+ Me.PictureBox1.Name = "PictureBox1"
+ Me.PictureBox1.Size = New System.Drawing.Size(32, 32)
+ Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.AutoSize
+ Me.PictureBox1.TabIndex = 1
+ Me.PictureBox1.TabStop = False
+ '
+ 'Label1
+ '
+ Me.Label1.AutoSize = True
+ Me.Label1.Font = New System.Drawing.Font("Segoe UI", 15.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Label1.Location = New System.Drawing.Point(12, 9)
+ Me.Label1.Name = "Label1"
+ Me.Label1.Size = New System.Drawing.Size(164, 30)
+ Me.Label1.TabIndex = 0
+ Me.Label1.Text = "Export an image"
+ '
+ 'GroupBox1
+ '
+ Me.GroupBox1.Controls.Add(Me.Button2)
+ Me.GroupBox1.Controls.Add(Me.TextBox2)
+ Me.GroupBox1.Controls.Add(Me.Label2)
+ Me.GroupBox1.Controls.Add(Me.Button1)
+ Me.GroupBox1.Controls.Add(Me.TextBox1)
+ Me.GroupBox1.Controls.Add(Me.Label3)
+ Me.GroupBox1.Location = New System.Drawing.Point(12, 54)
+ Me.GroupBox1.Name = "GroupBox1"
+ Me.GroupBox1.Size = New System.Drawing.Size(984, 91)
+ Me.GroupBox1.TabIndex = 8
+ Me.GroupBox1.TabStop = False
+ Me.GroupBox1.Text = "Sources and destinations"
+ '
+ 'Button2
+ '
+ Me.Button2.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Button2.FlatStyle = System.Windows.Forms.FlatStyle.System
+ Me.Button2.Location = New System.Drawing.Point(900, 51)
+ Me.Button2.Name = "Button2"
+ Me.Button2.Size = New System.Drawing.Size(75, 23)
+ Me.Button2.TabIndex = 10
+ Me.Button2.Text = "Browse..."
+ Me.Button2.UseVisualStyleBackColor = True
+ '
+ 'TextBox2
+ '
+ Me.TextBox2.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.TextBox2.Location = New System.Drawing.Point(129, 52)
+ Me.TextBox2.Name = "TextBox2"
+ Me.TextBox2.Size = New System.Drawing.Size(765, 21)
+ Me.TextBox2.TabIndex = 9
+ '
+ 'Label2
+ '
+ Me.Label2.AutoEllipsis = True
+ Me.Label2.Location = New System.Drawing.Point(10, 55)
+ Me.Label2.Name = "Label2"
+ Me.Label2.Size = New System.Drawing.Size(119, 13)
+ Me.Label2.TabIndex = 8
+ Me.Label2.Text = "Destination image file:"
+ '
+ 'Button1
+ '
+ Me.Button1.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Button1.FlatStyle = System.Windows.Forms.FlatStyle.System
+ Me.Button1.Location = New System.Drawing.Point(900, 24)
+ Me.Button1.Name = "Button1"
+ Me.Button1.Size = New System.Drawing.Size(75, 23)
+ Me.Button1.TabIndex = 7
+ Me.Button1.Text = "Browse..."
+ Me.Button1.UseVisualStyleBackColor = True
+ '
+ 'TextBox1
+ '
+ Me.TextBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.TextBox1.Location = New System.Drawing.Point(129, 25)
+ Me.TextBox1.Name = "TextBox1"
+ Me.TextBox1.Size = New System.Drawing.Size(765, 21)
+ Me.TextBox1.TabIndex = 6
+ '
+ 'Label3
+ '
+ Me.Label3.AutoEllipsis = True
+ Me.Label3.Location = New System.Drawing.Point(10, 28)
+ Me.Label3.Name = "Label3"
+ Me.Label3.Size = New System.Drawing.Size(119, 13)
+ Me.Label3.TabIndex = 5
+ Me.Label3.Text = "Source image file:"
+ '
+ 'GroupBox2
+ '
+ Me.GroupBox2.Controls.Add(Me.TableLayoutPanel2)
+ Me.GroupBox2.Location = New System.Drawing.Point(12, 152)
+ Me.GroupBox2.Name = "GroupBox2"
+ Me.GroupBox2.Size = New System.Drawing.Size(984, 362)
+ Me.GroupBox2.TabIndex = 9
+ Me.GroupBox2.TabStop = False
+ Me.GroupBox2.Text = "Options"
+ '
+ 'TableLayoutPanel2
+ '
+ Me.TableLayoutPanel2.ColumnCount = 2
+ Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
+ Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
+ Me.TableLayoutPanel2.Controls.Add(Me.FlowLayoutPanel3, 1, 0)
+ Me.TableLayoutPanel2.Controls.Add(Me.Panel1, 0, 0)
+ Me.TableLayoutPanel2.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.TableLayoutPanel2.Location = New System.Drawing.Point(3, 17)
+ Me.TableLayoutPanel2.Name = "TableLayoutPanel2"
+ Me.TableLayoutPanel2.RowCount = 1
+ Me.TableLayoutPanel2.RowStyles.Add(New System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50.0!))
+ Me.TableLayoutPanel2.Size = New System.Drawing.Size(978, 342)
+ Me.TableLayoutPanel2.TabIndex = 10
+ '
+ 'FlowLayoutPanel3
+ '
+ Me.FlowLayoutPanel3.AutoScroll = True
+ Me.FlowLayoutPanel3.Controls.Add(Me.Panel3)
+ Me.FlowLayoutPanel3.Controls.Add(Me.Panel4)
+ Me.FlowLayoutPanel3.Controls.Add(Me.Panel5)
+ Me.FlowLayoutPanel3.Controls.Add(Me.CheckBox3)
+ Me.FlowLayoutPanel3.Controls.Add(Me.CheckBox4)
+ Me.FlowLayoutPanel3.Controls.Add(Me.CheckBox5)
+ Me.FlowLayoutPanel3.Controls.Add(Me.Label6)
+ Me.FlowLayoutPanel3.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.FlowLayoutPanel3.FlowDirection = System.Windows.Forms.FlowDirection.TopDown
+ Me.FlowLayoutPanel3.Location = New System.Drawing.Point(492, 3)
+ Me.FlowLayoutPanel3.Name = "FlowLayoutPanel3"
+ Me.FlowLayoutPanel3.Padding = New System.Windows.Forms.Padding(4, 6, 0, 0)
+ Me.FlowLayoutPanel3.Size = New System.Drawing.Size(483, 336)
+ Me.FlowLayoutPanel3.TabIndex = 2
+ Me.FlowLayoutPanel3.WrapContents = False
+ '
+ 'Panel3
+ '
+ Me.Panel3.Controls.Add(Me.CheckBox1)
+ Me.Panel3.Controls.Add(Me.SWMFilePanel)
+ Me.Panel3.Location = New System.Drawing.Point(7, 9)
+ Me.Panel3.Name = "Panel3"
+ Me.Panel3.Size = New System.Drawing.Size(454, 302)
+ Me.Panel3.TabIndex = 5
+ '
+ 'CheckBox1
+ '
+ Me.CheckBox1.AutoEllipsis = True
+ Me.CheckBox1.Location = New System.Drawing.Point(12, 12)
+ Me.CheckBox1.Name = "CheckBox1"
+ Me.CheckBox1.Size = New System.Drawing.Size(432, 17)
+ Me.CheckBox1.TabIndex = 3
+ Me.CheckBox1.Text = "Reference SWM files"
+ Me.CheckBox1.UseVisualStyleBackColor = True
+ '
+ 'SWMFilePanel
+ '
+ Me.SWMFilePanel.Controls.Add(Me.ListBox1)
+ Me.SWMFilePanel.Controls.Add(Me.StatusStrip1)
+ Me.SWMFilePanel.Controls.Add(Me.Panel2)
+ Me.SWMFilePanel.Enabled = False
+ Me.SWMFilePanel.Location = New System.Drawing.Point(28, 35)
+ Me.SWMFilePanel.Name = "SWMFilePanel"
+ Me.SWMFilePanel.Size = New System.Drawing.Size(416, 260)
+ Me.SWMFilePanel.TabIndex = 2
+ '
+ 'ListBox1
+ '
+ Me.ListBox1.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
+ Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.ListBox1.FormattingEnabled = True
+ Me.ListBox1.IntegralHeight = False
+ Me.ListBox1.Location = New System.Drawing.Point(0, 64)
+ Me.ListBox1.Name = "ListBox1"
+ Me.ListBox1.Size = New System.Drawing.Size(416, 174)
+ Me.ListBox1.TabIndex = 2
+ '
+ 'StatusStrip1
+ '
+ Me.StatusStrip1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripStatusLabel1})
+ Me.StatusStrip1.Location = New System.Drawing.Point(0, 238)
+ Me.StatusStrip1.Name = "StatusStrip1"
+ Me.StatusStrip1.Size = New System.Drawing.Size(416, 22)
+ Me.StatusStrip1.SizingGrip = False
+ Me.StatusStrip1.TabIndex = 1
+ Me.StatusStrip1.Text = "StatusStrip1"
+ '
+ 'ToolStripStatusLabel1
+ '
+ Me.ToolStripStatusLabel1.Name = "ToolStripStatusLabel1"
+ Me.ToolStripStatusLabel1.Size = New System.Drawing.Size(119, 17)
+ Me.ToolStripStatusLabel1.Text = "ToolStripStatusLabel1"
+ '
+ 'Panel2
+ '
+ Me.Panel2.Controls.Add(Me.TextBox4)
+ Me.Panel2.Controls.Add(Me.Button5)
+ Me.Panel2.Controls.Add(Me.Button4)
+ Me.Panel2.Controls.Add(Me.Label4)
+ Me.Panel2.Dock = System.Windows.Forms.DockStyle.Top
+ Me.Panel2.Location = New System.Drawing.Point(0, 0)
+ Me.Panel2.Name = "Panel2"
+ Me.Panel2.Size = New System.Drawing.Size(416, 64)
+ Me.Panel2.TabIndex = 0
+ '
+ 'TextBox4
+ '
+ Me.TextBox4.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.TextBox4.Location = New System.Drawing.Point(101, 6)
+ Me.TextBox4.Name = "TextBox4"
+ Me.TextBox4.Size = New System.Drawing.Size(307, 21)
+ Me.TextBox4.TabIndex = 1
+ '
+ 'Button5
+ '
+ Me.Button5.FlatStyle = System.Windows.Forms.FlatStyle.System
+ Me.Button5.Location = New System.Drawing.Point(211, 33)
+ Me.Button5.Name = "Button5"
+ Me.Button5.Size = New System.Drawing.Size(196, 23)
+ Me.Button5.TabIndex = 2
+ Me.Button5.Text = "Scan pattern"
+ Me.Button5.UseVisualStyleBackColor = True
+ '
+ 'Button4
+ '
+ Me.Button4.FlatStyle = System.Windows.Forms.FlatStyle.System
+ Me.Button4.Location = New System.Drawing.Point(9, 33)
+ Me.Button4.Name = "Button4"
+ Me.Button4.Size = New System.Drawing.Size(196, 23)
+ Me.Button4.TabIndex = 2
+ Me.Button4.Text = "Use name of the image"
+ Me.Button4.UseVisualStyleBackColor = True
+ '
+ 'Label4
+ '
+ Me.Label4.AutoEllipsis = True
+ Me.Label4.Location = New System.Drawing.Point(8, 8)
+ Me.Label4.Name = "Label4"
+ Me.Label4.Size = New System.Drawing.Size(87, 13)
+ Me.Label4.TabIndex = 0
+ Me.Label4.Text = "Namimg pattern:"
+ '
+ 'Panel4
+ '
+ Me.Panel4.Controls.Add(Me.TextBox3)
+ Me.Panel4.Controls.Add(Me.CheckBox2)
+ Me.Panel4.Location = New System.Drawing.Point(7, 317)
+ Me.Panel4.Name = "Panel4"
+ Me.Panel4.Size = New System.Drawing.Size(454, 72)
+ Me.Panel4.TabIndex = 6
+ '
+ 'TextBox3
+ '
+ Me.TextBox3.Enabled = False
+ Me.TextBox3.Location = New System.Drawing.Point(28, 36)
+ Me.TextBox3.Name = "TextBox3"
+ Me.TextBox3.Size = New System.Drawing.Size(416, 21)
+ Me.TextBox3.TabIndex = 5
+ '
+ 'CheckBox2
+ '
+ Me.CheckBox2.AutoEllipsis = True
+ Me.CheckBox2.Location = New System.Drawing.Point(12, 12)
+ Me.CheckBox2.Name = "CheckBox2"
+ Me.CheckBox2.Size = New System.Drawing.Size(432, 17)
+ Me.CheckBox2.TabIndex = 4
+ Me.CheckBox2.Text = "Specify a custom name for the destination image"
+ Me.CheckBox2.UseVisualStyleBackColor = True
+ '
+ 'Panel5
+ '
+ Me.Panel5.Controls.Add(Me.Label8)
+ Me.Panel5.Controls.Add(Me.ComboBox1)
+ Me.Panel5.Controls.Add(Me.Label5)
+ Me.Panel5.Location = New System.Drawing.Point(7, 395)
+ Me.Panel5.Name = "Panel5"
+ Me.Panel5.Size = New System.Drawing.Size(454, 130)
+ Me.Panel5.TabIndex = 7
+ '
+ 'Label8
+ '
+ Me.Label8.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.Label8.AutoEllipsis = True
+ Me.Label8.Location = New System.Drawing.Point(25, 58)
+ Me.Label8.Name = "Label8"
+ Me.Label8.Size = New System.Drawing.Size(419, 61)
+ Me.Label8.TabIndex = 16
+ Me.Label8.Text = "(Description goes here)"
+ '
+ 'ComboBox1
+ '
+ Me.ComboBox1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.ComboBox1.FormattingEnabled = True
+ Me.ComboBox1.Items.AddRange(New Object() {"none", "fast", "maximum", "recovery"})
+ Me.ComboBox1.Location = New System.Drawing.Point(28, 34)
+ Me.ComboBox1.Name = "ComboBox1"
+ Me.ComboBox1.Size = New System.Drawing.Size(416, 21)
+ Me.ComboBox1.TabIndex = 15
+ Me.ComboBox1.Text = "fast"
+ '
+ 'Label5
+ '
+ Me.Label5.AutoEllipsis = True
+ Me.Label5.Location = New System.Drawing.Point(12, 12)
+ Me.Label5.Name = "Label5"
+ Me.Label5.Size = New System.Drawing.Size(432, 13)
+ Me.Label5.TabIndex = 14
+ Me.Label5.Text = "Destination image compression type:"
+ '
+ 'CheckBox3
+ '
+ Me.CheckBox3.AutoEllipsis = True
+ Me.CheckBox3.Location = New System.Drawing.Point(7, 531)
+ Me.CheckBox3.Name = "CheckBox3"
+ Me.CheckBox3.Size = New System.Drawing.Size(432, 17)
+ Me.CheckBox3.TabIndex = 4
+ Me.CheckBox3.Text = "Make image bootable (Windows PE only)"
+ Me.CheckBox3.UseVisualStyleBackColor = True
+ '
+ 'CheckBox4
+ '
+ Me.CheckBox4.AutoEllipsis = True
+ Me.CheckBox4.Location = New System.Drawing.Point(7, 554)
+ Me.CheckBox4.Name = "CheckBox4"
+ Me.CheckBox4.Size = New System.Drawing.Size(432, 17)
+ Me.CheckBox4.TabIndex = 4
+ Me.CheckBox4.Text = "Append image with WIMBoot configuration"
+ Me.CheckBox4.UseVisualStyleBackColor = True
+ '
+ 'CheckBox5
+ '
+ Me.CheckBox5.AutoEllipsis = True
+ Me.CheckBox5.Location = New System.Drawing.Point(7, 577)
+ Me.CheckBox5.Name = "CheckBox5"
+ Me.CheckBox5.Size = New System.Drawing.Size(432, 17)
+ Me.CheckBox5.TabIndex = 4
+ Me.CheckBox5.Text = "Check integrity before exporting image"
+ Me.CheckBox5.UseVisualStyleBackColor = True
+ '
+ 'Label6
+ '
+ Me.Label6.AutoEllipsis = True
+ Me.Label6.Location = New System.Drawing.Point(7, 597)
+ Me.Label6.Name = "Label6"
+ Me.Label6.Padding = New System.Windows.Forms.Padding(0, 2, 0, 0)
+ Me.Label6.Size = New System.Drawing.Size(405, 16)
+ Me.Label6.TabIndex = 1
+ Me.Label6.UseMnemonic = False
+ '
+ 'Panel1
+ '
+ Me.Panel1.Controls.Add(Me.ListView1)
+ Me.Panel1.Controls.Add(Me.NumericUpDown1)
+ Me.Panel1.Controls.Add(Me.Label7)
+ Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.Panel1.Location = New System.Drawing.Point(3, 3)
+ Me.Panel1.Name = "Panel1"
+ Me.Panel1.Size = New System.Drawing.Size(483, 336)
+ Me.Panel1.TabIndex = 0
+ '
+ 'ListView1
+ '
+ Me.ListView1.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Left) _
+ Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.ListView1.Columns.AddRange(New System.Windows.Forms.ColumnHeader() {Me.ColumnHeader1, Me.ColumnHeader2, Me.ColumnHeader3, Me.ColumnHeader4})
+ Me.ListView1.Location = New System.Drawing.Point(16, 58)
+ Me.ListView1.Name = "ListView1"
+ Me.ListView1.Size = New System.Drawing.Size(450, 262)
+ Me.ListView1.TabIndex = 9
+ Me.ListView1.UseCompatibleStateImageBehavior = False
+ Me.ListView1.View = System.Windows.Forms.View.Details
+ '
+ 'ColumnHeader1
+ '
+ Me.ColumnHeader1.Text = "Index"
+ Me.ColumnHeader1.Width = 44
+ '
+ 'ColumnHeader2
+ '
+ Me.ColumnHeader2.Text = "Image name"
+ Me.ColumnHeader2.Width = 256
+ '
+ 'ColumnHeader3
+ '
+ Me.ColumnHeader3.Text = "Image description"
+ Me.ColumnHeader3.Width = 256
+ '
+ 'ColumnHeader4
+ '
+ Me.ColumnHeader4.Text = "Image version"
+ Me.ColumnHeader4.Width = 128
+ '
+ 'NumericUpDown1
+ '
+ Me.NumericUpDown1.Location = New System.Drawing.Point(16, 31)
+ Me.NumericUpDown1.Minimum = New Decimal(New Integer() {1, 0, 0, 0})
+ Me.NumericUpDown1.Name = "NumericUpDown1"
+ Me.NumericUpDown1.Size = New System.Drawing.Size(230, 21)
+ Me.NumericUpDown1.TabIndex = 8
+ Me.NumericUpDown1.Value = New Decimal(New Integer() {1, 0, 0, 0})
+ '
+ 'Label7
+ '
+ Me.Label7.AutoSize = True
+ Me.Label7.Location = New System.Drawing.Point(14, 13)
+ Me.Label7.Name = "Label7"
+ Me.Label7.Size = New System.Drawing.Size(104, 13)
+ Me.Label7.TabIndex = 7
+ Me.Label7.Text = "Source image index:"
+ '
+ 'SaveFileDialog1
+ '
+ Me.SaveFileDialog1.Filter = "WIM files|*.wim|ESD files|*.esd"
+ '
+ 'OpenFileDialog1
+ '
+ Me.OpenFileDialog1.Filter = "WIM files|*.wim|SWM files|*.swm"
+ Me.OpenFileDialog1.Title = "Specify a source image file to export"
+ '
+ 'ImgExport
+ '
+ Me.AcceptButton = Me.OK_Button
+ Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
+ Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
+ Me.CancelButton = Me.Cancel_Button
+ Me.ClientSize = New System.Drawing.Size(1008, 561)
+ Me.Controls.Add(Me.GroupBox2)
+ Me.Controls.Add(Me.GroupBox1)
+ Me.Controls.Add(Me.Win10Title)
+ Me.Controls.Add(Me.TableLayoutPanel1)
+ Me.Font = New System.Drawing.Font("Tahoma", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog
+ Me.MaximizeBox = False
+ Me.MinimizeBox = False
+ Me.Name = "ImgExport"
+ Me.ShowInTaskbar = False
+ Me.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent
+ Me.Text = "Export an image"
+ Me.TableLayoutPanel1.ResumeLayout(False)
+ Me.Win10Title.ResumeLayout(False)
+ Me.Win10Title.PerformLayout()
+ CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.GroupBox1.ResumeLayout(False)
+ Me.GroupBox1.PerformLayout()
+ Me.GroupBox2.ResumeLayout(False)
+ Me.TableLayoutPanel2.ResumeLayout(False)
+ Me.FlowLayoutPanel3.ResumeLayout(False)
+ Me.Panel3.ResumeLayout(False)
+ Me.SWMFilePanel.ResumeLayout(False)
+ Me.SWMFilePanel.PerformLayout()
+ Me.StatusStrip1.ResumeLayout(False)
+ Me.StatusStrip1.PerformLayout()
+ Me.Panel2.ResumeLayout(False)
+ Me.Panel2.PerformLayout()
+ Me.Panel4.ResumeLayout(False)
+ Me.Panel4.PerformLayout()
+ Me.Panel5.ResumeLayout(False)
+ Me.Panel1.ResumeLayout(False)
+ Me.Panel1.PerformLayout()
+ CType(Me.NumericUpDown1, System.ComponentModel.ISupportInitialize).EndInit()
+ Me.ResumeLayout(False)
+
+ End Sub
+ Friend WithEvents TableLayoutPanel1 As System.Windows.Forms.TableLayoutPanel
+ Friend WithEvents OK_Button As System.Windows.Forms.Button
+ Friend WithEvents Cancel_Button As System.Windows.Forms.Button
+ Friend WithEvents Win10Title As System.Windows.Forms.Panel
+ Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
+ Friend WithEvents Label1 As System.Windows.Forms.Label
+ Friend WithEvents GroupBox1 As System.Windows.Forms.GroupBox
+ Friend WithEvents Button2 As System.Windows.Forms.Button
+ Friend WithEvents TextBox2 As System.Windows.Forms.TextBox
+ Friend WithEvents Label2 As System.Windows.Forms.Label
+ Friend WithEvents Button1 As System.Windows.Forms.Button
+ Friend WithEvents TextBox1 As System.Windows.Forms.TextBox
+ Friend WithEvents Label3 As System.Windows.Forms.Label
+ Friend WithEvents GroupBox2 As System.Windows.Forms.GroupBox
+ Friend WithEvents NumericUpDown1 As System.Windows.Forms.NumericUpDown
+ Friend WithEvents Label7 As System.Windows.Forms.Label
+ Friend WithEvents ListView1 As System.Windows.Forms.ListView
+ Friend WithEvents ColumnHeader1 As System.Windows.Forms.ColumnHeader
+ Friend WithEvents ColumnHeader2 As System.Windows.Forms.ColumnHeader
+ Friend WithEvents ColumnHeader3 As System.Windows.Forms.ColumnHeader
+ Friend WithEvents ColumnHeader4 As System.Windows.Forms.ColumnHeader
+ Friend WithEvents TableLayoutPanel2 As System.Windows.Forms.TableLayoutPanel
+ Friend WithEvents Panel1 As System.Windows.Forms.Panel
+ Friend WithEvents FlowLayoutPanel3 As System.Windows.Forms.FlowLayoutPanel
+ Friend WithEvents Label6 As System.Windows.Forms.Label
+ Friend WithEvents SWMFilePanel As System.Windows.Forms.Panel
+ Friend WithEvents ListBox1 As System.Windows.Forms.ListBox
+ Friend WithEvents StatusStrip1 As System.Windows.Forms.StatusStrip
+ Friend WithEvents ToolStripStatusLabel1 As System.Windows.Forms.ToolStripStatusLabel
+ Friend WithEvents Panel2 As System.Windows.Forms.Panel
+ Friend WithEvents TextBox4 As System.Windows.Forms.TextBox
+ Friend WithEvents Button5 As System.Windows.Forms.Button
+ Friend WithEvents Button4 As System.Windows.Forms.Button
+ Friend WithEvents Label4 As System.Windows.Forms.Label
+ Friend WithEvents Panel3 As System.Windows.Forms.Panel
+ Friend WithEvents CheckBox1 As System.Windows.Forms.CheckBox
+ Friend WithEvents Panel4 As System.Windows.Forms.Panel
+ Friend WithEvents TextBox3 As System.Windows.Forms.TextBox
+ Friend WithEvents CheckBox2 As System.Windows.Forms.CheckBox
+ Friend WithEvents Panel5 As System.Windows.Forms.Panel
+ Friend WithEvents Label8 As System.Windows.Forms.Label
+ Friend WithEvents ComboBox1 As System.Windows.Forms.ComboBox
+ Friend WithEvents Label5 As System.Windows.Forms.Label
+ Friend WithEvents CheckBox3 As System.Windows.Forms.CheckBox
+ Friend WithEvents CheckBox4 As System.Windows.Forms.CheckBox
+ Friend WithEvents CheckBox5 As System.Windows.Forms.CheckBox
+ Friend WithEvents SaveFileDialog1 As System.Windows.Forms.SaveFileDialog
+ Friend WithEvents OpenFileDialog1 As System.Windows.Forms.OpenFileDialog
+
+End Class
diff --git a/Panels/Img_Ops/ImgExport.resx b/Panels/Img_Ops/ImgExport.resx
new file mode 100644
index 00000000..3323cd5f
--- /dev/null
+++ b/Panels/Img_Ops/ImgExport.resx
@@ -0,0 +1,129 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 17, 17
+
+
+ 134, 17
+
+
+ 271, 17
+
+
\ No newline at end of file
diff --git a/Panels/Img_Ops/ImgExport.vb b/Panels/Img_Ops/ImgExport.vb
new file mode 100644
index 00000000..8e4677b3
--- /dev/null
+++ b/Panels/Img_Ops/ImgExport.vb
@@ -0,0 +1,568 @@
+Imports System.Windows.Forms
+Imports Microsoft.Dism
+Imports System.IO
+Imports System.Threading
+
+Public Class ImgExport
+
+ Dim CompressionTypeStrings() As String = New String(3) {"No compression will be applied to the destination image.", "Fast compression will be applied. This is the default option.", "Maximum compression will be applied. This will take the most time, but will result in a smaller image.", "The compression level for push-button reset images will be applied. This requires exporting the image as an ESD file."}
+ Dim originalFileFilters As String = "WIM files|*.wim|ESD files|*.esd"
+
+ Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
+ If Not ProgressPanel.IsDisposed Then ProgressPanel.Dispose()
+ If TextBox1.Text <> "" And File.Exists(TextBox1.Text) Then
+ If Path.GetExtension(TextBox1.Text).EndsWith("swm", StringComparison.OrdinalIgnoreCase) Then
+ ProgressPanel.imgExportSourceImage = TextBox1.Text.Replace(Path.GetFileNameWithoutExtension(TextBox1.Text), _
+ Path.GetFileNameWithoutExtension(TextBox1.Text) & "*")
+ Else
+ ProgressPanel.imgExportSourceImage = TextBox1.Text
+ End If
+ Else
+ Dim msg As String = ""
+ Select Case MainForm.Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ msg = "Please specify a source image file to export and try again"
+ Case "ESN"
+ msg = "Por favor, especifique un archivo de imagen de origen e inténtelo de nuevo"
+ Case "FRA"
+ msg = "Veuillez indiquer un fichier d'image source à exporter et réessayez."
+ Case "PTB", "PTG"
+ msg = "Especifique um ficheiro de imagem de origem para exportar e tente novamente"
+ End Select
+ Case 1
+ msg = "Please specify a source image file to export and try again"
+ Case 2
+ msg = "Por favor, especifique un archivo de imagen de origen e inténtelo de nuevo"
+ Case 3
+ msg = "Veuillez indiquer un fichier d'image source à exporter et réessayez."
+ Case 4
+ msg = "Especifique um ficheiro de imagem de origem para exportar e tente novamente"
+ End Select
+ MsgBox(msg, vbOKOnly + vbCritical, Label1.Text)
+ Exit Sub
+ End If
+ If TextBox2.Text <> "" Then
+ ProgressPanel.imgExportDestinationImage = TextBox2.Text
+ Else
+ Dim msg As String = ""
+ Select Case MainForm.Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ msg = "Please specify a destination image file and try again"
+ Case "ESN"
+ msg = "Por favor, especifique un archivo de imagen de destino e intente de nuevo"
+ Case "FRA"
+ msg = "Veuillez spécifier un fichier d'image de destination et réessayer"
+ Case "PTB", "PTG"
+ msg = "Especifique um ficheiro de imagem de destino e tente novamente"
+ End Select
+ Case 1
+ msg = "Please specify a destination image file and try again"
+ Case 2
+ msg = "Por favor, especifique un archivo de imagen de destino e intente de nuevo"
+ Case 3
+ msg = "Veuillez spécifier un fichier d'image de destination et réessayer"
+ Case 4
+ msg = "Especifique um ficheiro de imagem de destino e tente novamente"
+ End Select
+ MsgBox(msg, vbOKOnly + vbCritical, Label1.Text)
+ Exit Sub
+ End If
+ ProgressPanel.imgExportSourceIndex = NumericUpDown1.Value
+ ProgressPanel.imgExportDestinationUseCustomName = CheckBox2.Checked
+ If CheckBox2.Checked Then
+ If TextBox3.Text <> "" Then
+ ProgressPanel.imgExportDestinationName = TextBox3.Text
+ Else
+ ProgressPanel.imgExportDestinationName = ""
+ ProgressPanel.imgExportDestinationUseCustomName = False
+ End If
+ End If
+ ProgressPanel.imgExportCompressType = ComboBox1.SelectedIndex
+ ProgressPanel.imgExportMarkBootable = CheckBox3.Checked
+ ProgressPanel.imgExportUseWimBoot = CheckBox4.Checked
+ ProgressPanel.imgExportCheckIntegrity = CheckBox5.Checked
+ Me.DialogResult = System.Windows.Forms.DialogResult.OK
+ ProgressPanel.OperationNum = 10
+ Visible = False
+ ProgressPanel.ShowDialog(Me)
+ Me.Close()
+ End Sub
+
+ Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click
+ Me.DialogResult = System.Windows.Forms.DialogResult.Cancel
+ Me.Close()
+ End Sub
+
+ Private Sub SaveFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles SaveFileDialog1.FileOk
+ TextBox2.Text = SaveFileDialog1.FileName
+ End Sub
+
+ Private Sub OpenFileDialog1_FileOk(sender As Object, e As System.ComponentModel.CancelEventArgs) Handles OpenFileDialog1.FileOk
+ TextBox1.Text = OpenFileDialog1.FileName
+ End Sub
+
+ Private Sub ImgExport_Load(sender As Object, e As EventArgs) Handles MyBase.Load
+ Select Case MainForm.Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ Text = "Export an image"
+ Label1.Text = Text
+ Label2.Text = "Destination image file:"
+ Label3.Text = "Source image file:"
+ Label4.Text = "Naming pattern:"
+ Label5.Text = "Destination image compression type:"
+ Label7.Text = "Source image index:"
+ CheckBox1.Text = "Reference SWM files"
+ CheckBox2.Text = "Specify a custom name for the destination image"
+ CheckBox3.Text = "Make image bootable (Windows PE only)"
+ CheckBox4.Text = "Append image with WIMBoot configuration"
+ CheckBox5.Text = "Check integrity before exporting image"
+ OK_Button.Text = "OK"
+ Cancel_Button.Text = "Cancel"
+ Button1.Text = "Browse..."
+ Button2.Text = "Browse..."
+ Button4.Text = "Use name of the image"
+ Button5.Text = "Scan pattern"
+ GroupBox1.Text = "Sources and destinations"
+ GroupBox2.Text = "Options"
+ OpenFileDialog1.Title = "Specify a source image file to export"
+ ListView1.Columns(0).Text = "Index"
+ ListView1.Columns(1).Text = "Image name"
+ ListView1.Columns(2).Text = "Image description"
+ ListView1.Columns(3).Text = "Image version"
+ CompressionTypeStrings(0) = "No compression will be applied to the destination image."
+ CompressionTypeStrings(1) = "Fast compression will be applied. This is the default option."
+ CompressionTypeStrings(2) = "Maximum compression will be applied. This will take the most time, but will result in a smaller image."
+ CompressionTypeStrings(3) = "The compression level for push-button reset images will be applied. This requires exporting the image as an ESD file."
+ Case "ESN"
+ Text = "Exportar una imagen"
+ Label1.Text = Text
+ Label2.Text = "Archivo de imagen de destino:"
+ Label3.Text = "Archivo de imagen de origen:"
+ Label4.Text = "Patrón de nomenclatura:"
+ Label5.Text = "Tipo de compresión de la imagen de destino:"
+ Label7.Text = "Índice de imagen de origen:"
+ CheckBox1.Text = "Hacer referencia a archivos SWM"
+ CheckBox2.Text = "Especificar un nombre personalizado para la imagen de destino"
+ CheckBox3.Text = "Hacer imagen arrancable (solo Windows PE)"
+ CheckBox4.Text = "Exportar la imagen con configuración WIMBoot"
+ CheckBox5.Text = "Comprobar integridad antes de exportar la imagen"
+ OK_Button.Text = "Aceptar"
+ Cancel_Button.Text = "Cancelar"
+ Button1.Text = "Examinar..."
+ Button2.Text = "Examinar..."
+ Button4.Text = "Usar nombre de imagen"
+ Button5.Text = "Escanear patrón"
+ GroupBox1.Text = "Orígenes y destinos"
+ GroupBox2.Text = "Opciones"
+ OpenFileDialog1.Title = "Especifique un archivo de imagen de origen a exportar"
+ ListView1.Columns(0).Text = "Índice"
+ ListView1.Columns(1).Text = "Nombre de imagen"
+ ListView1.Columns(2).Text = "Descripción de imagen"
+ ListView1.Columns(3).Text = "Versión de imagen"
+ CompressionTypeStrings(0) = "No se aplicará compresión a la imagen de destino."
+ CompressionTypeStrings(1) = "Se aplicará compresión rápida. Esta es la opción predeterminada."
+ CompressionTypeStrings(2) = "Se aplicará compresión máxima. Esto tardará más tiempo, pero resultará en una imagen más pequeña."
+ CompressionTypeStrings(3) = "Se aplicará el nivel de compresión de imágenes de restablecimiento por botón. Esto requiere exportar la imagen como un archivo ESD."
+ Case "FRA"
+ Text = "Exporter une image"
+ Label1.Text = Text
+ Label2.Text = "Fichier d'image de destination :"
+ Label3.Text = "Fichier d'image source :"
+ Label4.Text = "Modèle de dénomination :"
+ Label5.Text = "Type de compression de l'image de destination :"
+ Label7.Text = "Index de l'image source :"
+ CheckBox1.Text = "Référence aux fichiers SWM"
+ CheckBox2.Text = "Spécifier un nom personnalisé pour l'image de destination"
+ CheckBox3.Text = "Rendre l'image démarrable (Windows PE uniquement)"
+ CheckBox4.Text = "Ajouter la configuration WIMBoot à l'image"
+ CheckBox5.Text = "Vérifier l'intégrité avant d'exporter l'image"
+ OK_Button.Text = "OK"
+ Cancel_Button.Text = "Annuler"
+ Button1.Text = "Parcourir..."
+ Button2.Text = "Parcourir..."
+ Button4.Text = "Utiliser le nom de l'image"
+ Button5.Text = "Scanner modèle"
+ GroupBox1.Text = "Sources et destinations"
+ GroupBox2.Text = "Paramètres"
+ OpenFileDialog1.Title = "Spécifier un fichier image source à exporter"
+ ListView1.Columns(0).Text = "Index"
+ ListView1.Columns(1).Text = "Nom de l'image"
+ ListView1.Columns(2).Text = "Description de l'image"
+ ListView1.Columns(3).Text = "Version de l'image"
+ CompressionTypeStrings(0) = "Aucune compression ne sera appliquée à l'image de destination."
+ CompressionTypeStrings(1) = "Une compression rapide sera appliquée. C'est l'option par défaut."
+ CompressionTypeStrings(2) = "Une compression maximale sera appliquée. Cette option prend le plus de temps, mais permet d'obtenir une image plus petite."
+ CompressionTypeStrings(3) = "Le niveau de compression des images réinitialisées par bouton-poussoir sera appliqué. Cela nécessite l'exportation de l'image en tant que fichier ESD."
+ Case "PTB", "PTG"
+ Text = "Exportar uma imagem"
+ Label1.Text = Text
+ Label2.Text = "Ficheiro de imagem de destino:"
+ Label3.Text = "Ficheiro de imagem de origem:"
+ Label4.Text = "Padrão de nomenclatura:"
+ Label5.Text = "Tipo de compressão da imagem de destino:"
+ Label7.Text = "Índice da imagem de origem:"
+ CheckBox1.Text = "Ficheiros SWM de referência"
+ CheckBox2.Text = "Especificar um nome personalizado para a imagem de destino"
+ CheckBox3.Text = "Tornar a imagem de arranque (só para Windows PE)"
+ CheckBox4.Text = "Anexar imagem com a configuração WIMBoot"
+ CheckBox5.Text = "Verificar a integridade antes de exportar a imagem"
+ OK_Button.Text = "OK"
+ Cancel_Button.Text = "Cancelar"
+ Button1.Text = "Procurar..."
+ Button2.Text = "Procurar..."
+ Button4.Text = "Utilizar nome da imagem"
+ Button5.Text = "Examinar padrão"
+ GroupBox1.Text = "Origens e destinos"
+ GroupBox2.Text = "Configurações"
+ OpenFileDialog1.Title = "Especificar um ficheiro de imagem de origem para exportar"
+ ListView1.Columns(0).Text = "Índice"
+ ListView1.Columns(1).Text = "Nome da imagem"
+ ListView1.Columns(2).Text = "Descrição da imagem"
+ ListView1.Columns(3).Text = "Versão da imagem"
+ CompressionTypeStrings(0) = "Não será aplicada qualquer compressão à imagem de destino."
+ CompressionTypeStrings(1) = "Será aplicada uma compressão rápida. Esta é a opção predefinida."
+ CompressionTypeStrings(2) = "Será aplicada a compressão máxima. Esta opção demora mais tempo, mas resulta numa imagem mais pequena."
+ CompressionTypeStrings(3) = "Será aplicado o nível de compressão para imagens reiniciadas por botão de pressão. Para tal, é necessário exportar a imagem como um ficheiro ESD."
+ End Select
+ Case 1
+ Text = "Export an image"
+ Label1.Text = Text
+ Label2.Text = "Destination image file:"
+ Label3.Text = "Source image file:"
+ Label4.Text = "Naming pattern:"
+ Label5.Text = "Destination image compression type:"
+ Label7.Text = "Source image index:"
+ CheckBox1.Text = "Reference SWM files"
+ CheckBox2.Text = "Specify a custom name for the destination image"
+ CheckBox3.Text = "Make image bootable (Windows PE only)"
+ CheckBox4.Text = "Append image with WIMBoot configuration"
+ CheckBox5.Text = "Check integrity before exporting image"
+ OK_Button.Text = "OK"
+ Cancel_Button.Text = "Cancel"
+ Button1.Text = "Browse..."
+ Button2.Text = "Browse..."
+ Button4.Text = "Use name of the image"
+ Button5.Text = "Scan pattern"
+ GroupBox1.Text = "Sources and destinations"
+ GroupBox2.Text = "Options"
+ OpenFileDialog1.Title = "Specify a source image file to export"
+ ListView1.Columns(0).Text = "Index"
+ ListView1.Columns(1).Text = "Image name"
+ ListView1.Columns(2).Text = "Image description"
+ ListView1.Columns(3).Text = "Image version"
+ CompressionTypeStrings(0) = "No compression will be applied to the destination image."
+ CompressionTypeStrings(1) = "Fast compression will be applied. This is the default option."
+ CompressionTypeStrings(2) = "Maximum compression will be applied. This will take the most time, but will result in a smaller image."
+ CompressionTypeStrings(3) = "The compression level for push-button reset images will be applied. This requires exporting the image as an ESD file."
+ Case 2
+ Text = "Exportar una imagen"
+ Label1.Text = Text
+ Label2.Text = "Archivo de imagen de destino:"
+ Label3.Text = "Archivo de imagen de origen:"
+ Label4.Text = "Patrón de nomenclatura:"
+ Label5.Text = "Tipo de compresión de la imagen de destino:"
+ Label7.Text = "Índice de imagen de origen:"
+ CheckBox1.Text = "Hacer referencia a archivos SWM"
+ CheckBox2.Text = "Especificar un nombre personalizado para la imagen de destino"
+ CheckBox3.Text = "Hacer imagen arrancable (solo Windows PE)"
+ CheckBox4.Text = "Exportar la imagen con configuración WIMBoot"
+ CheckBox5.Text = "Comprobar integridad antes de exportar la imagen"
+ OK_Button.Text = "Aceptar"
+ Cancel_Button.Text = "Cancelar"
+ Button1.Text = "Examinar..."
+ Button2.Text = "Examinar..."
+ Button4.Text = "Usar nombre de imagen"
+ Button5.Text = "Escanear patrón"
+ GroupBox1.Text = "Orígenes y destinos"
+ GroupBox2.Text = "Opciones"
+ OpenFileDialog1.Title = "Especifique un archivo de imagen de origen a exportar"
+ ListView1.Columns(0).Text = "Índice"
+ ListView1.Columns(1).Text = "Nombre de imagen"
+ ListView1.Columns(2).Text = "Descripción de imagen"
+ ListView1.Columns(3).Text = "Versión de imagen"
+ CompressionTypeStrings(0) = "No se aplicará compresión a la imagen de destino."
+ CompressionTypeStrings(1) = "Se aplicará compresión rápida. Esta es la opción predeterminada."
+ CompressionTypeStrings(2) = "Se aplicará compresión máxima. Esto tardará más tiempo, pero resultará en una imagen más pequeña."
+ CompressionTypeStrings(3) = "Se aplicará el nivel de compresión de imágenes de restablecimiento por botón. Esto requiere exportar la imagen como un archivo ESD."
+ Case 3
+ Text = "Exporter une image"
+ Label1.Text = Text
+ Label2.Text = "Fichier d'image de destination :"
+ Label3.Text = "Fichier d'image source :"
+ Label4.Text = "Modèle de dénomination :"
+ Label5.Text = "Type de compression de l'image de destination :"
+ Label7.Text = "Index de l'image source :"
+ CheckBox1.Text = "Référence aux fichiers SWM"
+ CheckBox2.Text = "Spécifier un nom personnalisé pour l'image de destination"
+ CheckBox3.Text = "Rendre l'image démarrable (Windows PE uniquement)"
+ CheckBox4.Text = "Ajouter la configuration WIMBoot à l'image"
+ CheckBox5.Text = "Vérifier l'intégrité avant d'exporter l'image"
+ OK_Button.Text = "OK"
+ Cancel_Button.Text = "Annuler"
+ Button1.Text = "Parcourir..."
+ Button2.Text = "Parcourir..."
+ Button4.Text = "Utiliser le nom de l'image"
+ Button5.Text = "Scanner modèle"
+ GroupBox1.Text = "Sources et destinations"
+ GroupBox2.Text = "Paramètres"
+ OpenFileDialog1.Title = "Spécifier un fichier image source à exporter"
+ ListView1.Columns(0).Text = "Index"
+ ListView1.Columns(1).Text = "Nom de l'image"
+ ListView1.Columns(2).Text = "Description de l'image"
+ ListView1.Columns(3).Text = "Version de l'image"
+ CompressionTypeStrings(0) = "Aucune compression ne sera appliquée à l'image de destination."
+ CompressionTypeStrings(1) = "Une compression rapide sera appliquée. C'est l'option par défaut."
+ CompressionTypeStrings(2) = "Une compression maximale sera appliquée. Cette option prend le plus de temps, mais permet d'obtenir une image plus petite."
+ CompressionTypeStrings(3) = "Le niveau de compression des images réinitialisées par bouton-poussoir sera appliqué. Cela nécessite l'exportation de l'image en tant que fichier ESD."
+ Case 4
+ Text = "Exportar uma imagem"
+ Label1.Text = Text
+ Label2.Text = "Ficheiro de imagem de destino:"
+ Label3.Text = "Ficheiro de imagem de origem:"
+ Label4.Text = "Padrão de nomenclatura:"
+ Label5.Text = "Tipo de compressão da imagem de destino:"
+ Label7.Text = "Índice da imagem de origem:"
+ CheckBox1.Text = "Ficheiros SWM de referência"
+ CheckBox2.Text = "Especificar um nome personalizado para a imagem de destino"
+ CheckBox3.Text = "Tornar a imagem de arranque (só para Windows PE)"
+ CheckBox4.Text = "Anexar imagem com a configuração WIMBoot"
+ CheckBox5.Text = "Verificar a integridade antes de exportar a imagem"
+ OK_Button.Text = "OK"
+ Cancel_Button.Text = "Cancelar"
+ Button1.Text = "Procurar..."
+ Button2.Text = "Procurar..."
+ Button4.Text = "Utilizar nome da imagem"
+ Button5.Text = "Examinar padrão"
+ GroupBox1.Text = "Origens e destinos"
+ GroupBox2.Text = "Configurações"
+ OpenFileDialog1.Title = "Especificar um ficheiro de imagem de origem para exportar"
+ ListView1.Columns(0).Text = "Índice"
+ ListView1.Columns(1).Text = "Nome da imagem"
+ ListView1.Columns(2).Text = "Descrição da imagem"
+ ListView1.Columns(3).Text = "Versão da imagem"
+ CompressionTypeStrings(0) = "Não será aplicada qualquer compressão à imagem de destino."
+ CompressionTypeStrings(1) = "Será aplicada uma compressão rápida. Esta é a opção predefinida."
+ CompressionTypeStrings(2) = "Será aplicada a compressão máxima. Esta opção demora mais tempo, mas resulta numa imagem mais pequena."
+ CompressionTypeStrings(3) = "Será aplicado o nível de compressão para imagens reiniciadas por botão de pressão. Para tal, é necessário exportar a imagem como um ficheiro ESD."
+ End Select
+ If MainForm.BackColor = Color.FromArgb(48, 48, 48) Then
+ Win10Title.BackColor = Color.FromArgb(48, 48, 48)
+ BackColor = Color.FromArgb(31, 31, 31)
+ ForeColor = Color.White
+ GroupBox1.ForeColor = Color.White
+ GroupBox2.ForeColor = Color.White
+ TextBox1.BackColor = Color.FromArgb(31, 31, 31)
+ TextBox2.BackColor = Color.FromArgb(31, 31, 31)
+ TextBox3.BackColor = Color.FromArgb(31, 31, 31)
+ TextBox4.BackColor = Color.FromArgb(31, 31, 31)
+ ComboBox1.BackColor = Color.FromArgb(31, 31, 31)
+ NumericUpDown1.BackColor = Color.FromArgb(31, 31, 31)
+ ListBox1.BackColor = Color.FromArgb(31, 31, 31)
+ StatusStrip1.BackColor = Color.FromArgb(31, 31, 31)
+ ListView1.BackColor = Color.FromArgb(31, 31, 31)
+ ElseIf MainForm.BackColor = Color.FromArgb(239, 239, 242) Then
+ Win10Title.BackColor = Color.White
+ BackColor = Color.FromArgb(238, 238, 242)
+ ForeColor = Color.Black
+ GroupBox1.ForeColor = Color.Black
+ GroupBox2.ForeColor = Color.Black
+ TextBox1.BackColor = Color.FromArgb(238, 238, 242)
+ TextBox2.BackColor = Color.FromArgb(238, 238, 242)
+ TextBox3.BackColor = Color.FromArgb(238, 238, 242)
+ TextBox4.BackColor = Color.FromArgb(238, 238, 242)
+ ComboBox1.BackColor = Color.FromArgb(238, 238, 242)
+ NumericUpDown1.BackColor = Color.FromArgb(238, 238, 242)
+ ListBox1.BackColor = Color.FromArgb(238, 238, 242)
+ StatusStrip1.BackColor = Color.FromArgb(238, 238, 242)
+ ListView1.BackColor = Color.FromArgb(238, 238, 242)
+ End If
+ TextBox1.ForeColor = ForeColor
+ TextBox2.ForeColor = ForeColor
+ TextBox3.ForeColor = ForeColor
+ TextBox4.ForeColor = ForeColor
+ ComboBox1.ForeColor = ForeColor
+ NumericUpDown1.ForeColor = ForeColor
+ ListView1.ForeColor = ForeColor
+ ListBox1.ForeColor = ForeColor
+ If Environment.OSVersion.Version.Major = 10 Then
+ Text = ""
+ Win10Title.Visible = True
+ End If
+ Select Case MainForm.Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ ToolStripStatusLabel1.Text = "Please specify the naming pattern of the SWM files"
+ Case "ESN"
+ ToolStripStatusLabel1.Text = "Especifique la nomenclatura del patrón de los archivos SWM"
+ Case "FRA"
+ ToolStripStatusLabel1.Text = "Veuillez spécifier le modèle de dénomination des fichiers SWM"
+ Case "PTB", "PTG"
+ ToolStripStatusLabel1.Text = "Especifique o padrão de nomenclatura dos ficheiros SWM"
+ End Select
+ Case 1
+ ToolStripStatusLabel1.Text = "Please specify the naming pattern of the SWM files"
+ Case 2
+ ToolStripStatusLabel1.Text = "Especifique la nomenclatura del patrón de los archivos SWM"
+ Case 3
+ ToolStripStatusLabel1.Text = "Veuillez spécifier le modèle de dénomination des fichiers SWM"
+ Case 4
+ ToolStripStatusLabel1.Text = "Especifique o padrão de nomenclatura dos ficheiros SWM"
+ End Select
+ Dim handle As IntPtr = MainForm.GetWindowHandle(Me)
+ If MainForm.IsWindowsVersionOrGreater(10, 0, 18362) Then MainForm.EnableDarkTitleBar(handle, MainForm.BackColor = Color.FromArgb(48, 48, 48))
+ End Sub
+
+ Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
+ OpenFileDialog1.ShowDialog()
+ End Sub
+
+ Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
+ SaveFileDialog1.ShowDialog()
+ End Sub
+
+ Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
+ If TextBox1.Text <> "" And File.Exists(TextBox1.Text) Then
+ If MainForm.MountedImageDetectorBW.IsBusy Then
+ MainForm.MountedImageDetectorBW.CancelAsync()
+ While MainForm.MountedImageDetectorBW.IsBusy
+ Application.DoEvents()
+ Thread.Sleep(500)
+ End While
+ End If
+ MainForm.WatcherTimer.Enabled = False
+ If MainForm.WatcherBW.IsBusy Then MainForm.WatcherBW.CancelAsync()
+ While MainForm.WatcherBW.IsBusy
+ Application.DoEvents()
+ Thread.Sleep(100)
+ End While
+ Try
+ ListView1.Items.Clear()
+ DismApi.Initialize(DismLogLevel.LogErrors)
+ Dim imgInfoCollection As DismImageInfoCollection = DismApi.GetImageInfo(TextBox1.Text)
+ NumericUpDown1.Maximum = imgInfoCollection.Count
+ For Each imgInfo As DismImageInfo In imgInfoCollection
+ ListView1.Items.Add(New ListViewItem(New String() {imgInfo.ImageIndex, imgInfo.ImageName, imgInfo.ImageDescription, imgInfo.ProductVersion.ToString()}))
+ Next
+ Catch ex As Exception
+ MsgBox("Could not get index information for this image file", vbOKOnly + vbCritical, Label1.Text)
+ Finally
+ DismApi.Shutdown()
+ End Try
+ If File.Exists(TextBox1.Text) And Path.GetExtension(TextBox1.Text).EndsWith("swm", StringComparison.OrdinalIgnoreCase) Then
+ CheckBox1.Checked = True
+ Button4.PerformClick()
+ End If
+ End If
+ End Sub
+
+ Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
+ SWMFilePanel.Enabled = CheckBox1.Checked = True
+ End Sub
+
+ Private Sub CheckBox2_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox2.CheckedChanged
+ TextBox3.Enabled = CheckBox2.Checked = True
+ End Sub
+
+ Private Sub ComboBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ComboBox1.SelectedIndexChanged
+ SaveFileDialog1.Filter = originalFileFilters
+ If ComboBox1.SelectedItem = "none" Then
+ Label8.Text = CompressionTypeStrings(0)
+ ElseIf ComboBox1.SelectedItem = "fast" Then
+ Label8.Text = CompressionTypeStrings(1)
+ ElseIf ComboBox1.SelectedItem = "maximum" Then
+ Label8.Text = CompressionTypeStrings(2)
+ ElseIf ComboBox1.SelectedItem = "recovery" Then
+ Label8.Text = CompressionTypeStrings(3)
+ ' If recovery is specified, the target image must be an ESD file
+ SaveFileDialog1.Filter = "ESD files|*.esd"
+ If TextBox2.Text <> "" Then
+ ' Switch the extension of the target image file
+ TextBox2.Text = TextBox2.Text.Replace(Path.GetExtension(TextBox2.Text), ".esd").Trim()
+ End If
+ End If
+ End Sub
+
+ Private Sub ImgExport_FormClosing(sender As Object, e As FormClosingEventArgs) Handles MyBase.FormClosing
+ SaveFileDialog1.Filter = originalFileFilters
+ End Sub
+
+ Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
+ TextBox4.Text = Path.GetFileNameWithoutExtension(TextBox1.Text)
+ ScanSwmPattern(TextBox4.Text)
+ End Sub
+
+ Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
+ ScanSwmPattern(TextBox4.Text)
+ End Sub
+
+ Sub ScanSwmPattern(PatternName As String)
+ ListBox1.Items.Clear()
+ If TextBox1.Text = "" Or PatternName = "" Then
+ Select Case MainForm.Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ MsgBox("Please specify a source WIM file. This will let you use the SWM files for later image application", vbOKOnly + vbCritical, "Apply an image")
+ ToolStripStatusLabel1.Text = "This naming pattern returns " & ListBox1.Items.Count & " SWM files"
+ Case "ESN"
+ MsgBox("Especifique el arhivo WIM de origen. Esto le permitirá usar los archivos SWM para la aplicación posterior de la imagen", vbOKOnly + vbCritical, "Aplicar una imagen")
+ ToolStripStatusLabel1.Text = "Esta nomenclatura de patrón devuelve " & ListBox1.Items.Count & " archivos SWM"
+ Case "FRA"
+ MsgBox("Veuillez indiquer un fichier WIM original. Cela vous permettra d'utiliser les fichiers SWM pour une application d'image ultérieure.", vbOKOnly + vbCritical, "Appliquer une image")
+ ToolStripStatusLabel1.Text = "Ce modèle de dénomination renvoie " & ListBox1.Items.Count & " fichiers SWM"
+ Case "PTB", "PTG"
+ MsgBox("Especifique um ficheiro WIM de origem. Isto permitir-lhe-á utilizar os ficheiros SWM para uma aplicação de imagem posterior", vbOKOnly + vbCritical, "Aplicar uma imagem")
+ ToolStripStatusLabel1.Text = "Este padrão de nomenclatura devolve " & ListBox1.Items.Count & " ficheiros SWM"
+ End Select
+ Case 1
+ MsgBox("Please specify a source WIM file. This will let you use the SWM files for later image application", vbOKOnly + vbCritical, "Apply an image")
+ ToolStripStatusLabel1.Text = "This naming pattern returns " & ListBox1.Items.Count & " SWM files"
+ Case 2
+ MsgBox("Especifique el arhivo WIM de origen. Esto le permitirá usar los archivos SWM para la aplicación posterior de la imagen", vbOKOnly + vbCritical, "Aplicar una imagen")
+ ToolStripStatusLabel1.Text = "Esta nomenclatura de patrón devuelve " & ListBox1.Items.Count & " archivos SWM"
+ Case 3
+ MsgBox("Veuillez indiquer un fichier WIM original. Cela vous permettra d'utiliser les fichiers SWM pour une application d'image ultérieure.", vbOKOnly + vbCritical, "Appliquer une image")
+ ToolStripStatusLabel1.Text = "Ce modèle de dénomination renvoie " & ListBox1.Items.Count & " fichiers SWM"
+ Case 4
+ MsgBox("Especifique um ficheiro WIM de origem. Isto permitir-lhe-á utilizar os ficheiros SWM para uma aplicação de imagem posterior", vbOKOnly + vbCritical, "Aplicar uma imagem")
+ ToolStripStatusLabel1.Text = "Este padrão de nomenclatura devolve " & ListBox1.Items.Count & " ficheiros SWM"
+ End Select
+ Beep()
+ Exit Sub
+ End If
+ For Each swmFile In My.Computer.FileSystem.GetFiles(Path.GetDirectoryName(TextBox1.Text), FileIO.SearchOption.SearchTopLevelOnly, "*.swm")
+ If Path.GetFileNameWithoutExtension(swmFile).StartsWith(PatternName) Then
+ ListBox1.Items.Add(Path.GetFileName(swmFile))
+ End If
+ Next
+ Select Case MainForm.Language
+ Case 0
+ Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName
+ Case "ENU", "ENG"
+ ToolStripStatusLabel1.Text = "This naming pattern returns " & ListBox1.Items.Count & " SWM files"
+ Case "ESN"
+ ToolStripStatusLabel1.Text = "Esta nomenclatura de patrón devuelve " & ListBox1.Items.Count & " archivos SWM"
+ Case "FRA"
+ ToolStripStatusLabel1.Text = "Ce modèle de dénomination renvoie " & ListBox1.Items.Count & " fichiers SWM"
+ Case "PTB", "PTG"
+ ToolStripStatusLabel1.Text = "Este padrão de nomenclatura devolve " & ListBox1.Items.Count & " ficheiros SWM"
+ End Select
+ Case 1
+ ToolStripStatusLabel1.Text = "This naming pattern returns " & ListBox1.Items.Count & " SWM files"
+ Case 2
+ ToolStripStatusLabel1.Text = "Esta nomenclatura de patrón devuelve " & ListBox1.Items.Count & " archivos SWM"
+ Case 3
+ ToolStripStatusLabel1.Text = "Ce modèle de dénomination renvoie " & ListBox1.Items.Count & " fichiers SWM"
+ Case 4
+ ToolStripStatusLabel1.Text = "Este padrão de nomenclatura devolve " & ListBox1.Items.Count & " ficheiros SWM"
+ End Select
+ If ListBox1.Items.Count <= 0 Then Beep()
+ End Sub
+End Class
diff --git a/Panels/Img_Ops/OSUninst/SetOSUninstWindow.vb b/Panels/Img_Ops/OSUninst/SetOSUninstWindow.vb
index f0288299..6172bb05 100644
--- a/Panels/Img_Ops/OSUninst/SetOSUninstWindow.vb
+++ b/Panels/Img_Ops/OSUninst/SetOSUninstWindow.vb
@@ -8,6 +8,7 @@ Public Class SetOSUninstWindow
Dim uninstWindow As Integer
Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click
+ If Not ProgressPanel.IsDisposed Then ProgressPanel.Dispose()
If NumericUpDown1.Value = uninstWindow Then Exit Sub
ProgressPanel.osUninstDayCount = NumericUpDown1.Value
Me.DialogResult = System.Windows.Forms.DialogResult.OK
diff --git a/Resources/error_32px.png b/Resources/error_32px.png
new file mode 100644
index 00000000..3dcb9c4e
Binary files /dev/null and b/Resources/error_32px.png differ
diff --git a/Updater/DISMTools-UCS/MainForm.vb b/Updater/DISMTools-UCS/MainForm.vb
index 15bc0059..99748a93 100644
--- a/Updater/DISMTools-UCS/MainForm.vb
+++ b/Updater/DISMTools-UCS/MainForm.vb
@@ -236,7 +236,7 @@ Public Class MainForm
Sub CompareVersions()
If File.Exists(Application.StartupPath & "\DISMTools.exe") Then
Dim fv As String = FileVersionInfo.GetVersionInfo(Application.StartupPath & "\DISMTools.exe").ProductVersion.ToString()
- If fv = latestVer Then
+ If fv = latestVer Or New Version(fv) > New Version(latestVer) Then
MsgBox("There aren't any updates available", vbOKOnly + vbInformation, Text)
End
Else
diff --git a/Updater/DISMTools-UCS/My Project/AssemblyInfo.vb b/Updater/DISMTools-UCS/My Project/AssemblyInfo.vb
index cb36c92f..f64413c7 100644
--- a/Updater/DISMTools-UCS/My Project/AssemblyInfo.vb
+++ b/Updater/DISMTools-UCS/My Project/AssemblyInfo.vb
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' mediante el asterisco ('*'), como se muestra a continuación:
'
-
-
+
+
diff --git a/Updater/DISMTools-UCS/update-bin/preview.ini b/Updater/DISMTools-UCS/update-bin/preview.ini
index a397fbb8..7115ebe3 100644
--- a/Updater/DISMTools-UCS/update-bin/preview.ini
+++ b/Updater/DISMTools-UCS/update-bin/preview.ini
@@ -1,6 +1,6 @@
[Version]
-LatestVer = 0.5.0.2431
-ReleaseTag = v0.5_pre_2431
+LatestVer = 0.5.0.2432
+ReleaseTag = v0.5_pre_2432
[Options]
MigrateSettings = True
\ No newline at end of file
diff --git a/Updater/DISMTools-UCS/update-bin/update.exe b/Updater/DISMTools-UCS/update-bin/update.exe
index 8863ab3f..ccd3b62c 100644
Binary files a/Updater/DISMTools-UCS/update-bin/update.exe and b/Updater/DISMTools-UCS/update-bin/update.exe differ
diff --git a/Updater/DISMTools-UCS/verinfo/preview.ini b/Updater/DISMTools-UCS/verinfo/preview.ini
index a397fbb8..7115ebe3 100644
--- a/Updater/DISMTools-UCS/verinfo/preview.ini
+++ b/Updater/DISMTools-UCS/verinfo/preview.ini
@@ -1,6 +1,6 @@
[Version]
-LatestVer = 0.5.0.2431
-ReleaseTag = v0.5_pre_2431
+LatestVer = 0.5.0.2432
+ReleaseTag = v0.5_pre_2432
[Options]
MigrateSettings = True
\ No newline at end of file
diff --git a/settings.ini b/settings.ini
index 04f09fb3..4986bbef 100644
--- a/settings.ini
+++ b/settings.ini
@@ -50,6 +50,9 @@ RunAllProcs=0
RemountImages=1
CheckForUpdates=1
+[Shutdown]
+AutoCleanMounts=0
+
[WndParams]
WndWidth=1280
WndHeight=720