diff --git a/Installer/Nightly/dt_setup.exe b/Installer/Nightly/dt_setup.exe index 253a0771..78bceff9 100644 Binary files a/Installer/Nightly/dt_setup.exe and b/Installer/Nightly/dt_setup.exe differ diff --git a/MainForm.Designer.vb b/MainForm.Designer.vb index bb37e99b..52e2cd57 100644 --- a/MainForm.Designer.vb +++ b/MainForm.Designer.vb @@ -3993,7 +3993,7 @@ Partial Class MainForm Me.TableLayoutPanel2.ColumnCount = 3 Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 32.4200897!)) Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 67.5799103!)) - Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 140.0!)) + Me.TableLayoutPanel2.ColumnStyles.Add(New System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 141.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) @@ -4028,9 +4028,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(52, 146) + Me.LinkLabel1.Location = New System.Drawing.Point(51, 146) Me.LinkLabel1.Name = "LinkLabel1" - Me.LinkLabel1.Size = New System.Drawing.Size(237, 254) + Me.LinkLabel1.Size = New System.Drawing.Size(238, 254) Me.LinkLabel1.TabIndex = 5 Me.LinkLabel1.TabStop = True Me.LinkLabel1.Text = "Click here to mount an image" @@ -4040,7 +4040,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(52, 3) + Me.Panel8.Location = New System.Drawing.Point(51, 3) Me.Panel8.Name = "Panel8" Me.Panel8.Size = New System.Drawing.Size(96, 23) Me.Panel8.TabIndex = 8 @@ -4072,9 +4072,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(52, 131) + Me.Label5.Location = New System.Drawing.Point(51, 131) Me.Label5.Name = "Label5" - Me.Label5.Size = New System.Drawing.Size(237, 15) + Me.Label5.Size = New System.Drawing.Size(238, 15) Me.Label5.TabIndex = 2 Me.Label5.Text = "imgStatus" ' @@ -4084,7 +4084,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(43, 102) + Me.Label2.Size = New System.Drawing.Size(42, 102) Me.Label2.TabIndex = 1 Me.Label2.Text = "Location:" Me.Label2.TextAlign = System.Drawing.ContentAlignment.TopRight @@ -4094,9 +4094,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(52, 29) + Me.Label3.Location = New System.Drawing.Point(51, 29) Me.Label3.Name = "Label3" - Me.Label3.Size = New System.Drawing.Size(237, 102) + Me.Label3.Size = New System.Drawing.Size(238, 102) Me.Label3.TabIndex = 2 Me.Label3.Text = "projPath" ' @@ -4107,7 +4107,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(43, 269) + Me.Label4.Size = New System.Drawing.Size(42, 269) Me.Label4.TabIndex = 1 Me.Label4.Text = "Images mounted?" Me.Label4.TextAlign = System.Drawing.ContentAlignment.TopRight @@ -4118,7 +4118,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(43, 23) + Me.Panel9.Size = New System.Drawing.Size(42, 23) Me.Panel9.TabIndex = 9 ' 'Label1 @@ -4126,7 +4126,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(43, 23) + Me.Label1.Size = New System.Drawing.Size(42, 23) Me.Label1.TabIndex = 1 Me.Label1.Text = "Name:" Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleRight @@ -4922,7 +4922,7 @@ Partial Class MainForm ' Me.TreeViewCMS.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ExpandToolStripMenuItem, Me.AccessDirectoryToolStripMenuItem, Me.ToolStripSeparator23, Me.UnloadProjectToolStripMenuItem1, Me.ToolStripSeparator24, Me.CopyDeploymentToolsToolStripMenuItem, Me.ToolStripSeparator27, Me.ImageOperationsToolStripMenuItem, Me.ToolStripSeparator30, Me.UnattendedAnswerFilesToolStripMenuItem1, Me.ToolStripSeparator31, Me.ScratchDirectorySettingsToolStripMenuItem, Me.ToolStripSeparator32, Me.ManageReportsToolStripMenuItem, Me.ToolStripSeparator33, Me.AddToolStripMenuItem}) Me.TreeViewCMS.Name = "TreeViewCMS" - Me.TreeViewCMS.Size = New System.Drawing.Size(219, 266) + Me.TreeViewCMS.Size = New System.Drawing.Size(219, 244) ' 'ExpandToolStripMenuItem ' @@ -5056,13 +5056,13 @@ Partial Class MainForm 'ManageToolStripMenuItem ' Me.ManageToolStripMenuItem.Name = "ManageToolStripMenuItem" - Me.ManageToolStripMenuItem.Size = New System.Drawing.Size(152, 22) + Me.ManageToolStripMenuItem.Size = New System.Drawing.Size(117, 22) Me.ManageToolStripMenuItem.Text = "Manage" ' 'CreationWizardToolStripMenuItem ' Me.CreationWizardToolStripMenuItem.Name = "CreationWizardToolStripMenuItem" - Me.CreationWizardToolStripMenuItem.Size = New System.Drawing.Size(152, 22) + Me.CreationWizardToolStripMenuItem.Size = New System.Drawing.Size(117, 22) Me.CreationWizardToolStripMenuItem.Text = "Create" ' 'ToolStripSeparator31 @@ -5179,7 +5179,7 @@ Partial Class MainForm ' 'ImgInfoSFD ' - Me.ImgInfoSFD.Filter = "Text files|*.txt" + Me.ImgInfoSFD.Filter = "Markdown files|*.md" ' 'Timer1 ' diff --git a/MainForm.resx b/MainForm.resx index 70d379fd..32a17fcf 100644 --- a/MainForm.resx +++ b/MainForm.resx @@ -1158,7 +1158,7 @@ 399, 95 - 727, 95 + 893, 95 283, 95 @@ -1167,7 +1167,7 @@ 155, 95 - 816, 95 + 727, 95 982, 95 @@ -1175,10 +1175,4 @@ 17, 95 - - 678, 95 - - - 844, 95 - \ No newline at end of file diff --git a/Panels/Get_Ops/InfoSave/ImgInfoSaveDlg.vb b/Panels/Get_Ops/InfoSave/ImgInfoSaveDlg.vb index cdf6db8a..3961dabb 100644 --- a/Panels/Get_Ops/InfoSave/ImgInfoSaveDlg.vb +++ b/Panels/Get_Ops/InfoSave/ImgInfoSaveDlg.vb @@ -50,6 +50,35 @@ Public Class ImgInfoSaveDlg Public ForceAppxApi As Boolean + Const TableSeparator As String = "|" + Const CodeBlockChar As String = "`" + + ' Table Headers + Const ImageFileTableHeader As String = "| Version | Image name | Image description | Image size | Architecture | HAL | Service Pack build | Service Pack level | Installation type | Edition | Product type | Product suite | System root directory | Languages | Date of creation | Date of modification |" & CrLf & _ + "|:--------|:-----------|:------------------|:-----------|:-------------|:----|:-------------------|:-------------------|:------------------|:--------|:-------------|:--------------|:----------------------|:----------|:-----------------|:---------------------|" & CrLf + Const FullPackageTableHeader As String = "| Package name | Applicable? | Copyright | Company | Creation time | Description | Install client | Install package name | Install time | Last update time | Display name | Product name | Product version | Release type | Restart required? | Support information | Package state | Boot up required? | Capability identity | Custom properties | Features |" & CrLf & _ + "|:-------------|:------------|:----------|:--------|:--------------|:------------|:---------------|:---------------------|:-------------|:-----------------|:-------------|:-------------|:----------------|:-------------|:------------------|:--------------------|:--------------|:------------------|:--------------------|:------------------|:---------|" & CrLf + Const BasicPackageTableHeader As String = "| Package name | Package state | Package release type | Package install time |" & CrLf & _ + "|:-------------|:--------------|:---------------------|:---------------------|" & CrLf + Const FullFeatureTableHeader As String = "| Feature name | Display name | Description | Restart required? | Feature state | Custom properties |" & CrLf & _ + "|:-------------|:-------------|:------------|:------------------|:--------------|:------------------|" & CrLf + Const BasicFeatureTableHeader As String = "| Feature name | Feature state |" & CrLf & _ + "|:-------------|:--------------|" & CrLf + Const FullAppxTableHeader As String = "| Package name | Application display name | Architecture | Resource ID | Version | Registered to a user? | Installation location | Package manifest location | Store logo asset directory | Main store logo asset |" & CrLf & _ + "|:-------------|:-------------------------|:-------------|:------------|:--------|:----------------------|:----------------------|:--------------------------|:---------------------------|:----------------------|" & CrLf + Const BasicAppxTableHeader As String = "| Package name | Application display name | Architecture | Resource ID | Version |" & CrLf & _ + "|:-------------|:-------------------------|:-------------|:------------|:--------|" & CrLf + Const FullCapabilityTableHeader As String = "| Capability identity | Capability name | Capability state | Display name | Download size | Installation size |" & CrLf & _ + "|:--------------------|:----------------|:-----------------|:-------------|:--------------|:------------------|" & CrLf + Const BasicCapabilityTableHeader As String = "| Capability name | Capability state |" & CrLf & _ + "|:----------------|:-----------------|" & CrLf + Const FullDriverTableHeader As String = "| Published name | Original file name | Provider name | Class name | Class description | Class GUID | Catalog file path | Part of the Windows distribution? | Critical to the boot process? | Version | Date | Signature status |" & CrLf & _ + "|:---------------|:-------------------|:--------------|:-----------|:------------------|:-----------|:------------------|:----------------------------------|:------------------------------|:--------|:-----|:-----------------|" & CrLf + Const BasicDriverTableHeader As String = "| Published name | Original file name | Part of the Windows distribution? | Class name | Provider name | Date | Version |" & CrLf & _ + "|:---------------|:-------------------|:----------------------------------|:-----------|:--------------|:-----|:--------|" & CrLf + Const DriverFileTableHeader As String = "| Hardware description | Hardware IDs | Compatible IDs | Exclude IDs | Hardware manufacturer | Architecture |" & CrLf & _ + "|:---------------------|:-------------|:---------------|:------------|:----------------------|:-------------|" & CrLf + Sub ReportChanges(Message As String, ProgressPercentage As Double) Label2.Text = Message ProgressBar1.Value = ProgressPercentage @@ -60,20 +89,20 @@ Public Class ImgInfoSaveDlg Dim ImageInfoCollection As DismImageInfoCollection = Nothing Dim ImageInfoList As New List(Of DismImageInfo) If ImageInfoList.Count <> 0 Then ImageInfoList.Clear() - Contents &= "----> Image information" & CrLf & CrLf + Contents &= "## Image information" & CrLf & CrLf If OnlineMode Then - Contents &= " Active installation information:" & CrLf & _ - " - Name: " & My.Computer.Info.OSFullName & CrLf & _ - " - Boot point (mount point): " & Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.Windows)) & CrLf & _ - " - Version: " & Environment.OSVersion.Version.Major & "." & Environment.OSVersion.Version.Minor & "." & Environment.OSVersion.Version.Build & "." & FileVersionInfo.GetVersionInfo(Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\system32\ntoskrnl.exe").ProductPrivatePart & CrLf & CrLf + Contents &= "### Active installation information:" & CrLf & CrLf & _ + "- Name: " & My.Computer.Info.OSFullName & CrLf & _ + "- Boot point (mount point): " & Path.GetPathRoot(Environment.GetFolderPath(Environment.SpecialFolder.Windows)) & CrLf & _ + "- Version: " & Environment.OSVersion.Version.Major & "." & Environment.OSVersion.Version.Minor & "." & Environment.OSVersion.Version.Build & "." & FileVersionInfo.GetVersionInfo(Environment.GetFolderPath(Environment.SpecialFolder.Windows) & "\system32\ntoskrnl.exe").ProductPrivatePart & CrLf & CrLf Exit Sub ElseIf OfflineMode Then - Contents &= " Offline installation information:" & CrLf & _ - " - Boot point (mount point): " & ImgMountDir & CrLf & _ - " - Version: " & FileVersionInfo.GetVersionInfo(ImgMountDir & "\Windows\system32\ntoskrnl.exe").ProductVersion.ToString() & CrLf & CrLf + Contents &= "### Offline installation information:" & CrLf & CrLf & _ + "- Boot point (mount point): " & ImgMountDir & CrLf & _ + "- Version: " & FileVersionInfo.GetVersionInfo(ImgMountDir & "\Windows\system32\ntoskrnl.exe").ProductVersion.ToString() & CrLf & CrLf Exit Sub End If - Contents &= " - Image file to get information from: " & If(SourceImage <> "" And Not OnlineMode, Quote & SourceImage & Quote, "") + Contents &= "- Image file to get information from: " & If(SourceImage <> "" And Not OnlineMode, Quote & SourceImage & Quote, "") Debug.WriteLine("[GetImageInformation] Starting task...") Try Debug.WriteLine("[GetImageInformation] Starting API...") @@ -82,7 +111,7 @@ Public Class ImgInfoSaveDlg ImageInfoCollection = DismApi.GetImageInfo(SourceImage) Debug.WriteLine("[GetImageInformation] Information processes completed for the image. Obtained images: " & ImageInfoCollection.Count) Contents &= CrLf & CrLf & _ - " Getting information of " & ImageInfoCollection.Count & " images..." & CrLf & CrLf + "**Information summary for " & ImageInfoCollection.Count & " image(s):**" & CrLf & CrLf & ImageFileTableHeader Debug.WriteLine("[GetImageInformation] Exporting information to contents...") For Each ImageInfo As DismImageInfo In ImageInfoCollection Dim msg As String = "" @@ -111,35 +140,20 @@ Public Class ImgInfoSaveDlg Case 5 msg = "Ottenere informazioni sull'immagine... (immagine " & ImageInfoCollection.IndexOf(ImageInfo) + 1 & " di " & ImageInfoCollection.Count & ")" End Select - ReportChanges(msg, (ImageInfoCollection.IndexOf(ImageInfo) / ImageInfoCollection.Count) * 100) - Contents &= " Image " & ImageInfoCollection.IndexOf(ImageInfo) + 1 & ":" & CrLf & _ - " - Version: " & ImageInfo.ProductVersion.ToString() & CrLf & _ - " - Image name: " & Quote & ImageInfo.ImageName & Quote & CrLf & _ - " - Image description: " & Quote & ImageInfo.ImageDescription & Quote & CrLf & _ - " - Image size: " & ImageInfo.ImageSize.ToString("N0") & " bytes (~" & Converters.BytesToReadableSize(ImageInfo.ImageSize) & ")" & CrLf & _ - " - Architecture: " & Casters.CastDismArchitecture(ImageInfo.Architecture) & CrLf & _ - " - HAL: " & If(ImageInfo.Hal <> "", ImageInfo.Hal, "undefined by the image") & CrLf & _ - " - Service Pack build: " & ImageInfo.ProductVersion.Revision & CrLf & _ - " - Service Pack level: " & ImageInfo.SpLevel & CrLf & _ - " - Installation type: " & ImageInfo.InstallationType & CrLf & _ - " - Edition: " & ImageInfo.EditionId & CrLf & _ - " - Product type: " & ImageInfo.ProductType & CrLf & _ - " - Product suite: " & ImageInfo.ProductSuite & CrLf & _ - " - System root directory: " & ImageInfo.SystemRoot & CrLf & _ - " - Languages:" & CrLf + Dim languages As String = "" + ReportChanges(msg, (ImageInfoCollection.IndexOf(ImageInfo) / ImageInfoCollection.Count) * 100) + Contents &= TableSeparator & ImageInfo.ProductVersion.ToString() & TableSeparator & ImageInfo.ImageName & TableSeparator & ImageInfo.ImageDescription & TableSeparator & ImageInfo.ImageSize.ToString("N0") & " bytes (~" & Converters.BytesToReadableSize(ImageInfo.ImageSize) & ")" & TableSeparator & Casters.CastDismArchitecture(ImageInfo.Architecture) & TableSeparator & If(ImageInfo.Hal <> "", ImageInfo.Hal, "Undefined by the image") & TableSeparator & ImageInfo.ProductVersion.Revision & TableSeparator & ImageInfo.SpLevel & TableSeparator & ImageInfo.InstallationType & TableSeparator & ImageInfo.EditionId & TableSeparator & ImageInfo.ProductType & TableSeparator & ImageInfo.ProductSuite & TableSeparator & ImageInfo.SystemRoot & TableSeparator & languages & TableSeparator & ImageInfo.CustomizedInfo.CreatedTime & TableSeparator & ImageInfo.CustomizedInfo.ModifiedTime & TableSeparator & CrLf Next Catch ex As Exception Debug.WriteLine("[GetImageInformation] An error occurred while getting image information: " & ex.ToString() & " - " & ex.Message) - Contents &= " The program could not get information about this task. See below for reasons why:" & CrLf & CrLf & _ - " - Exception: " & ex.ToString() & CrLf & _ - " - Exception message: " & ex.Message & CrLf & _ - " - Error code: " & Hex(ex.HResult) & CrLf & CrLf + Contents &= CrLf & "The program could not get information about this task. See below for reasons why:" & CrLf & CrLf & _ + "- Exception: " & ex.ToString() & CrLf & _ + "- Exception message: " & ex.Message & CrLf & _ + "- Error code: " & Hex(ex.HResult) & CrLf & CrLf Finally DismApi.Shutdown() End Try @@ -213,8 +227,8 @@ Public Class ImgInfoSaveDlg "Volete ottenere queste informazioni e salvarle nel rapporto?" msg(2) = "Informazioni sul pacchetto" End Select - Contents &= "----> Package information" & CrLf & CrLf & _ - " - Image file to get information from: " & If(SourceImage <> "" And Not OnlineMode, Quote & SourceImage & Quote, "active installation") & CrLf & CrLf + Contents &= "## Package information" & CrLf & CrLf & _ + "- Image file to get information from: " & If(SourceImage <> "" And Not OnlineMode, Quote & SourceImage & Quote, "active installation") & CrLf & CrLf Debug.WriteLine("[GetPackageInformation] Starting task...") Try Debug.WriteLine("[GetPackageInformation] Starting API...") @@ -225,7 +239,7 @@ Public Class ImgInfoSaveDlg Debug.WriteLine("[GetPackageInformation] Getting basic package information...") ReportChanges(msg(0), 5) InstalledPkgInfo = DismApi.GetPackages(imgSession) - Contents &= " Installed packages in this image: " & InstalledPkgInfo.Count & CrLf & CrLf + Contents &= "**Information summary for " & InstalledPkgInfo.Count & " package(s):**" & CrLf & CrLf Select Case MainForm.Language Case 0 Select Case My.Computer.Info.InstalledUICulture.ThreeLetterWindowsLanguageName @@ -252,7 +266,10 @@ Public Class ImgInfoSaveDlg msg(0) = "I pacchetti sono stati acquisiti" End Select ReportChanges(msg(0), 10) + Dim pkgCustomPropsList As String = "