Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
bc6132d
Update assembly information
CodingWonders Jul 17, 2026
4c7be27
[PE Helper] Add BDE-GUI encrypt and decrypt commands
CodingWonders Jul 20, 2026
6d8facb
[PE Helper] Add BDE-GUI encrypt and decrypt commands
CodingWonders Jul 20, 2026
cfa83de
[Enhance] Select source index by clicking list view
CodingWonders Jul 21, 2026
43c3257
[PE Helper/BDE-GUI] Update submodule
CodingWonders Jul 21, 2026
5a56eb7
[PE Helper/BDE-GUI] Update submodule
CodingWonders Jul 21, 2026
aec1267
[PE Helper/BDE-GUI] Update submodule
CodingWonders Jul 22, 2026
7fec93d
[Enhance] Exporting drivers using multiple class names
CodingWonders Jul 22, 2026
60c4a23
[Fix] Handle empty items
CodingWonders Jul 22, 2026
e514c09
[Enhance] Don't wait
CodingWonders Jul 22, 2026
299ec78
[ISO Creator] Delete ISOTASKS when all tasks finish
CodingWonders Jul 22, 2026
46e7eab
[Enhance] No more waiting
CodingWonders Jul 23, 2026
c845d10
[Enhance] Configurable concurrent ISO creation limit
CodingWonders Jul 23, 2026
b75504d
[Enhance] Add auto-determination based on beefiness
CodingWonders Jul 23, 2026
26f6a62
[Enhance] Only set unique items
CodingWonders Jul 23, 2026
08ab413
[Fix] HiDPI
CodingWonders Jul 24, 2026
429d139
[Unattended answer file/SSE] Disable match tester on null expression
CodingWonders Jul 24, 2026
187979b
[PE Helper/Sysprep Preparator] BDE support
CodingWonders Jul 25, 2026
0140283
[Enhance] Convert path parts in INI to common: vars
CodingWonders Jul 26, 2026
6d1100a
[Enhance] Update branch info
CodingWonders Jul 26, 2026
e7c6240
Minor update
CodingWonders Jul 26, 2026
7b9c09c
Add 4th anniversary message
CodingWonders Jul 26, 2026
e0908c3
Overhaul runtime localization system
MinDeaDBlood Jul 26, 2026
d195132
Fix localization compilation
MinDeaDBlood Jul 26, 2026
3af9310
Fix malformed ProgressPanel Select block
MinDeaDBlood Jul 26, 2026
f1d7318
Default first-use language to English
MinDeaDBlood Jul 26, 2026
f135fd5
Adapt About dialog copyright to localization
MinDeaDBlood Jul 26, 2026
b6bdc28
Move runtime localization out of designer files
MinDeaDBlood Jul 26, 2026
01982c6
Restore fork release workflow for test builds
MinDeaDBlood Jul 26, 2026
02b1ece
Pass output directory to dependency preparation
MinDeaDBlood Jul 26, 2026
57b1a4d
Restore Starter Script Editor namespace values
MinDeaDBlood Jul 26, 2026
fc2c26d
Delete .github/workflows/create-nightly-installer.yaml
CodingWonders Jul 26, 2026
13cb343
Replace NameOf usages for VB2012 compatibility
MinDeaDBlood Jul 26, 2026
93a0cc5
Add explicit Get block for VB2012 compatibility
MinDeaDBlood Jul 26, 2026
33a354d
[PE Helper/SysprepPreparator] Update binary
CodingWonders Jul 26, 2026
98a924c
Restore release build workflow for validation
MinDeaDBlood Jul 27, 2026
9f8d641
[Fix] Automatically close the dialog
CodingWonders Jul 28, 2026
b687a48
[Fix] Fixed HiDPI issues
CodingWonders Jul 28, 2026
30f789f
[PE Helper/BDE-GUI] Update submodule
CodingWonders Jul 28, 2026
ce7bded
[Unattended answer file/DTSS] Suck it LG
CodingWonders Jul 28, 2026
8d50ae7
[REL] Update What's New section
CodingWonders Jul 29, 2026
c07ed21
Merge branch 'dt_prerel_2681' into localization-system-overhaul-081
CodingWonders Jul 30, 2026
0b1c528
Merge branch 'dt_prerel_2682' into localization-system-overhaul-081
CodingWonders Jul 30, 2026
15b5e3d
Remove localization for ListView1 Columns(5)
MinDeaDBlood Jul 31, 2026
2f58744
Fix typo in German localization for version label
MinDeaDBlood Jul 31, 2026
f981129
Fix typo in language file for version label
MinDeaDBlood Jul 31, 2026
4cb6dfc
Fix typo in Spanish translation for 'Versión'
MinDeaDBlood Jul 31, 2026
2dfce27
Fix typo in French translation for 'Version'
MinDeaDBlood Jul 31, 2026
8cf9022
Fix typo in Italian translation for 'Version'
MinDeaDBlood Jul 31, 2026
dd358e1
Fix typo in Portuguese translation for 'Version'
MinDeaDBlood Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
211 changes: 151 additions & 60 deletions .github/workflows/create-nightly-installer.yaml
Original file line number Diff line number Diff line change
@@ -1,73 +1,164 @@
name: Create Nightly Installer
name: Build and publish DISMTools release

on:
push:
branches:
- dt_prerel_*
- dt_rel*
paths-ignore:
- '.github/**'
- '**/README.md'
- 'res/**'
workflow_dispatch:
inputs:
release_type:
description: Release type
required: true
default: prerelease
type: choice
options:
- prerelease
- release
- draft
release_tag:
description: Optional release tag (leave empty to generate one)
required: false
type: string
release_name:
description: Optional release name (leave empty to use the tag)
required: false
type: string

permissions:
contents: write

env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

jobs:
build-runspace:
build-release:
runs-on: windows-latest

steps:
- uses: actions/checkout@v4
with:
ref: ${{ github.head_ref }}
submodules: 'true'
- name: Set up MSBuild
uses: microsoft/Setup-MSBuild@v2
- name: Prepare NuGet packages
run: .\nugetpkgprep.bat
continue-on-error: false
- name: Generate installer
run: |
$ghAction = "yes"
$solutionDir = "$((Get-Location).Path)\"
$projectDir = "$((Get-Location).Path)\"
$targetDir = (Get-Location).Path + "\bin\Debug\"
iex "$($solutionDir)CheckMissingDlls.ps1"
msbuild DISMTools.vbproj /p:Configuration=Debug /p:DeployOnBuild=true /p:SolutionDir=$solutionDir /p:ProjectDir=$projectDir /p:TargetDir=$targetDir
- name: Upload Artifact
uses: actions/upload-artifact@v4
with:
name: build-result
path: ${{ github.workspace }}\Installer\Output\dt_setup.exe
upload-installer:
runs-on: ubuntu-latest
needs: build-runspace
steps:
- uses: actions/checkout@v4
- name: Grab Artifacts
uses: actions/download-artifact@v4
- name: Check out selected branch
uses: actions/checkout@v4
with:
name: build-result
path: ./downloaded_artifacts
- name: Prepare directory
submodules: "true"
lfs: "true"
fetch-depth: 0

- name: Verify Git LFS package archive
shell: pwsh
run: |
mkdir -p "./${{ GITHUB.REF_NAME }}"
mv -f "./downloaded_artifacts/dt_setup.exe" "./${{ GITHUB.REF_NAME }}/dt_setup.exe"
rm -rf "./downloaded_artifacts"
- name: Fix OpenSSL Issues
$packageArchive = Get-Item ".\pkgsrc.zip"
if ($packageArchive.Length -lt 1MB) {
throw "pkgsrc.zip is not the Git LFS archive. File size: $($packageArchive.Length) bytes."
}
$signature = [System.IO.File]::ReadAllBytes($packageArchive.FullName)[0..1]
if ($signature[0] -ne 0x50 -or $signature[1] -ne 0x4B) {
throw "pkgsrc.zip does not have a valid ZIP signature."
}

- name: Set up MSBuild
uses: microsoft/Setup-MSBuild@v2

- name: Prepare NuGet packages
shell: pwsh
run: .\nugetpkgprep.bat

- name: Build application and installer
shell: pwsh
run: |
sudo apt remove openssh-server openssh-client
sudo apt install openssh-server openssh-client
- name: Upload Installer
env:
SSH_DEPLOY_KEY: ${{ secrets.SSH_DEPLOY_KEY }}
API_TOKEN_GITHUB: ${{ secrets.API_TOKEN_GITHUB }}
uses: cpina/github-action-push-to-another-repository@main
New-Item -ItemType Directory -Path ".\artifacts" -Force | Out-Null
$ghAction = "yes"
$solutionDir = "$((Get-Location).Path)\"
$projectDir = "$((Get-Location).Path)\"
$targetDir = (Get-Location).Path + "\bin\Debug\"
iex "$($solutionDir)CheckMissingDlls.ps1"
$logPath = Join-Path (Get-Location).Path "artifacts\msbuild.log"
msbuild DISMTools.vbproj `
/p:Configuration=Debug `
/p:DeployOnBuild=true `
/p:SolutionDir=$solutionDir `
/p:ProjectDir=$projectDir `
/bl:artifacts\build.binlog `
"/flp:logfile=$logPath;verbosity=diagnostic"
if ($LASTEXITCODE -ne 0) {
throw "MSBuild failed with exit code $LASTEXITCODE."
}

- name: Create release files
shell: pwsh
run: |
$portableOutput = ".\bin\Debug"
$installerOutput = ".\Installer\Output\dt_setup.exe"
if (-not (Test-Path "$portableOutput\DISMTools.exe")) {
throw "DISMTools.exe was not produced."
}
if (-not (Test-Path $installerOutput)) {
throw "dt_setup.exe was not produced."
}
if ((Test-Path ".\portable") -and -not (Test-Path "$portableOutput\portable")) {
Copy-Item ".\portable" "$portableOutput\portable" -Force
}
Compress-Archive `
-Path "$portableOutput\*" `
-DestinationPath ".\artifacts\DISMTools.zip" `
-CompressionLevel Optimal `
-Force
Copy-Item $installerOutput ".\artifacts\dt_setup.exe" -Force

- name: Upload workflow artifacts
uses: actions/upload-artifact@v4
with:
source-directory: '${{ GITHUB.REF_NAME }}'
destination-github-username: 'CodingWonders'
destination-repository-name: 'dt-nightly-installers'
user-email: '101426328+CodingWonders@users.noreply.github.com'
target-directory: '${{ GITHUB.REF_NAME }}'
target-branch: main
name: DISMTools-release-assets-${{ github.run_number }}
path: |
artifacts\DISMTools.zip
artifacts\dt_setup.exe
artifacts\msbuild.log
artifacts\build.binlog
if-no-files-found: error

- name: Publish GitHub release
shell: pwsh
env:
GH_TOKEN: ${{ github.token }}
RELEASE_TYPE: ${{ inputs.release_type }}
REQUESTED_TAG: ${{ inputs.release_tag }}
REQUESTED_NAME: ${{ inputs.release_name }}
run: |
$assemblyInfo = Get-Content ".\My Project\AssemblyInfo.vb" -Raw
if ($assemblyInfo -notmatch 'AssemblyFileVersion\("([^"]+)"\)') {
throw "Could not determine the DISMTools file version."
}
$fileVersion = $Matches[1]
$versionParts = $fileVersion.Split(".")
$publicVersion = ($versionParts[0..2] -join ".")
$datePart = Get-Date -Format "yyMMdd"
$generatedTag = "v$($publicVersion)_$($datePart).${{ github.run_number }}"
$tag = if ([string]::IsNullOrWhiteSpace($env:REQUESTED_TAG)) {
$generatedTag
} else {
$env:REQUESTED_TAG.Trim()
}
$releaseName = if ([string]::IsNullOrWhiteSpace($env:REQUESTED_NAME)) {
$tag
} else {
$env:REQUESTED_NAME.Trim()
}
$releaseArgs = @(
"release", "create", $tag,
".\artifacts\DISMTools.zip",
".\artifacts\dt_setup.exe",
"--repo", $env:GITHUB_REPOSITORY,
"--target", $env:GITHUB_SHA,
"--title", $releaseName,
"--notes", "Automated DISMTools build from branch $env:GITHUB_REF_NAME at commit $env:GITHUB_SHA. Application file version: $fileVersion."
)
switch ($env:RELEASE_TYPE) {
"prerelease" { $releaseArgs += "--prerelease" }
"draft" { $releaseArgs += "--draft" }
"release" { }
default { throw "Unsupported release type: $env:RELEASE_TYPE" }
}
& gh @releaseArgs
if ($LASTEXITCODE -ne 0) {
throw "GitHub release creation failed with exit code $LASTEXITCODE."
}
$releaseUrl = gh release view $tag --repo $env:GITHUB_REPOSITORY --json url --jq ".url"
"### Published release" >> $env:GITHUB_STEP_SUMMARY
"- Release: [$tag]($releaseUrl)" >> $env:GITHUB_STEP_SUMMARY
"- Application version: $fileVersion" >> $env:GITHUB_STEP_SUMMARY
"- Assets: DISMTools.zip, dt_setup.exe" >> $env:GITHUB_STEP_SUMMARY
2 changes: 1 addition & 1 deletion ApplicationEvents.vb
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ Namespace My
Private debounceInterval As TimeSpan = TimeSpan.FromSeconds(2)

Private Sub Start(sender As Object, e As EventArgs) Handles Me.Startup
LocalizationService.Initialize()
DynaLog.LogMessage("Adding startup event handlers...")
AddHandler Microsoft.Win32.SystemEvents.UserPreferenceChanged, AddressOf SysEvts_UserPreferenceChanged
AddHandler Microsoft.Win32.SystemEvents.DisplaySettingsChanging, AddressOf SysEvts_DisplaySettingsChanging
Expand Down Expand Up @@ -184,4 +185,3 @@ Namespace My


End Namespace

26 changes: 23 additions & 3 deletions DISMTools.vbproj
Original file line number Diff line number Diff line change
Expand Up @@ -247,6 +247,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="ApplicationEvents.vb" />
<Compile Include="RuntimeFormLocalization.vb" />
<Compile Include="Elements\AppxPackage.vb" />
<Compile Include="Elements\AutoUnattend\ActiveDirectory\ADDSJoinDialog.Designer.vb">
<DependentUpon>ADDSJoinDialog.vb</DependentUpon>
Expand Down Expand Up @@ -1046,7 +1047,8 @@
<Compile Include="Utilities\GroupPolicy\ServicingGPOHelper.vb" />
<Compile Include="Utilities\ImageWatcher.vb" />
<Compile Include="Utilities\IsoFileUtilities\IsoHelper.vb" />
<Compile Include="Utilities\LanguageUtilities\LanguageHelper.vb" />
<Compile Include="Utilities\Language\LanguageHelper.vb" />
<Compile Include="Utilities\Language\LocalizationService.vb" />
<Compile Include="Utilities\ListViewColumnSorter.vb" />
<Compile Include="Utilities\MarkdownHelper.vb" />
<Compile Include="Utilities\PhysicalDiskUtilities\WMIDiskHelper.vb" />
Expand Down Expand Up @@ -1625,6 +1627,24 @@
<None Include="packages.config">
<SubType>Designer</SubType>
</None>
<Content Include="language\de-DE.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="language\en-US.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="language\es-ES.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="language\fr-FR.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="language\it-IT.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<Content Include="language\pt-PT.ini">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="settings.ini">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
Expand Down Expand Up @@ -2223,7 +2243,7 @@
<Folder Include="Panels\Set_Ops\" />
<Folder Include="Tools\UnpEax\" />
<Folder Include="Updater\" />
<Folder Include="Utilities\LanguageUtilities\LanguageFiles\" />
<Folder Include="Utilities\Language\LanguageFiles\" />
<Folder Include="wimlib\" />
</ItemGroup>
<ItemGroup>
Expand Down Expand Up @@ -2466,4 +2486,4 @@ IF EXIST "report.html" (del "report.html")</PreBuildEvent>
</PropertyGroup>
<Error Condition="!Exists('packages\Scintilla5.NET.6.1.2\build\scintilla5.net.targets')" Text="$([System.String]::Format('$(ErrorText)', 'packages\Scintilla5.NET.6.1.2\build\scintilla5.net.targets'))" />
</Target>
</Project>
</Project>
Loading