Thank you for contributing. ImageWriter performs destructive low-level disk operations, so changes to device selection, IPC, service installation, archive handling, and verification require especially careful review.
Include the ImageWriter version, Windows version, edition (Standard or Pro), exact steps, expected and observed behavior, logs, and screenshots where useful. Report security vulnerabilities privately according to SECURITY.md, not in a public issue.
Requirements:
- Windows development environment;
- Delphi 12 Athens (Embarcadero Studio 23.0), Win32 target;
- Git with submodule support.
Clone and initialize dependencies:
git clone --recurse-submodules https://github.com/tixset/ImageWriter.git
cd ImageWriter
git submodule update --init --recursivelib/HtmlViewer/source/htmlview.pas must exist before opening the GUI projects.
Build from the Delphi IDE in this order:
ImageWriter.dprojImageWriterPro.dprojImageWriterSvc.dproj
Delphi Community Edition does not provide a supported command-line build. The repository has no build.bat. See BUILD_CONFIGURATION.md for project options and output directories.
ImageWriter/
βββ ImageWriter*.dpr/.dproj # Standard, Pro, and service projects
βββ src/ # Core units and VCL forms
β βββ managers/ # 16 business-logic units
β βββ studio/ # Hashing, RNG, and helper units
βββ resources/ # Manifests, icons, RC/RES files
βββ lib/HtmlViewer/ # Required Git submodule
βββ tests/ # DUnit and PowerShell test sources
βββ docs/ # User and technical documentation
βββ reports/ # Dated audit snapshots
- Branch from
main. - Keep changes focused and preserve unrelated user work.
- Follow the existing Pascal style and use
try..finallyfor owned resources. - Add or update tests for behavioral changes.
- Update current documentation and
CHANGELOG.mdfor user-visible changes. - For privileged code, document the trust boundary and fail-closed behavior.
- Do not claim a build or test passed unless the corresponding command actually ran.
- Follow COMMIT_CONVENTIONS.md.
Before submitting, build all three projects in Delphi 12 and test on disposable removable media. Never use a system disk for destructive testing.
The repository contains useful test sources, but tests/IPCIntegrationTests.pas currently prevents the complete DUnit runner from compiling. GitHub workflows perform repository checks only; they are not a Delphi build/test pipeline. State exactly which individual checks you ran in the pull request.
Contributions are licensed under GNU GPL v3.0. The project is based on dd for Windows by John Newbigin.