A modern disk image writing utility for USB drives and SD cards
ImageWriter is a modernized and enhanced version of the dd for Windows utility, originally developed by John Newbigin. This project provides a graphical interface and additional features for writing disk images to removable media.
Original Project: dd for Windows by John Newbigin ([email protected])
Current Developer: Anton Zelenov ([email protected])
GitHub: https://github.com/tixset/ImageWriter
License: GNU General Public License v3.0
ImageWriter/
├── src/ # Source code
│ ├── *.pas, *.dfm # Delphi modules and forms
│ ├── managers/ # Business logic managers
│ │ ├── ArchiveHandler.pas # Archive format support
│ │ ├── DeviceBenchmark.pas # Performance testing
│ │ ├── DeviceManager.pas # Device operations
│ │ └── ... # Other manager modules
│ └── studio/ # Helper modules
│ ├── md5/ # MD5 hashing
│ ├── random/ # Random number generator
│ └── sha256/ # SHA-256 hashing
├── tests/ # Automated test suite
│ ├── *.pas # Test modules (DUnit)
│ ├── ImageWriterTests.dpr # Test runner
│ ├── run_tests.bat # Test execution script
│ ├── *.ps1 # PowerShell integration tests
│ └── README.md # Test documentation
├── docs/ # Documentation
│ ├── README.md # Main documentation (English)
│ ├── README.ru.md # Documentation in Russian
│ ├── CODING_STYLE_GUIDE.md # Code style guidelines
│ ├── COMMIT_CONVENTIONS.md # Git commit standards
│ └── ... # Other documentation files
├── resources/ # Application resources
│ ├── *.rc # Resource files
│ └── *.RES # Compiled resources
├── lib/ # External libraries
│ └── zlib1.dll # ZLib compression library
├── LICENSE # GNU GPL v3.0 license
├── CHANGELOG.md # Version history
├── CONTRIBUTING.md # Contribution guidelines
├── CODE_OF_CONDUCT.md # Community guidelines
├── ROADMAP.md # Development roadmap
├── SECURITY.md # Security policy
├── BUILD_CONFIGURATION.md # Build instructions (IDE + command-line)
├── *.dpr # Delphi project files
├── *.dof # Delphi IDE project settings
├── *.cfg # Compiler configuration (command-line)
├── build.bat # Build script
└── .gitignore
- 🖥️ Graphical User Interface - Easy-to-use Windows GUI
- ⌨️ Command-Line Interface (CLI) - Console mode for automation and scripting
- 💾 Multiple Image Formats - Support for raw, GZIP (.gz), ZIP (.zip), XZ, BZIP2, 7z, TAR
- ✅ Hash Verification - MD5 and SHA-256 checksums for data integrity
- 📊 Partition Information - Display MBR and GPT partition tables (even from archives!)
- 🔒 UAC Elevation - Automatic privilege elevation on Vista and later
- ⚡ High Performance - Optimized I/O operations with progress tracking
- 🎯 Drag & Drop - Simple file selection via drag and drop
- 🔧 Advanced Options - Block size, count, seek, and skip parameters
- 🛡️ Safe Operations - Volume locking and dismounting for data safety
- 📊 Progress Tracking - Real-time progress bar and status updates with ETA and speed
- 🌐 Network Shares - Pro version supports network-mounted drives (UNC paths)
- 🔄 Dynamic Loading - On-demand library loading for better startup performance
- 📝 Comprehensive Logging - Detailed operation logs for troubleshooting
- 🔧 Clean Code Architecture - Modular design with 37+ manager methods
- ✅ Automated Testing - DUnit tests and PowerShell integration tests
- 🎯 Active Development - Recent refactoring and GitHub-ready infrastructure
- 🛡️ GitHub Ready - Full CI/CD workflows, issue templates, security policy
- 🔬 Device Benchmarking - Test disk performance with read/write benchmarks
- 🏥 Device Health Monitoring - Automatic diagnostics with WMI, SMART, and partition validation
- 🛡️ Smart Safety Features - Visual health indicators and write protection for critical devices
- Windows 7 or later (Vista supported with limitations)
- Administrator privileges for writing to disk devices
- zlib1.dll (included, auto-extracted when needed)
build.batRequires: Borland Delphi 7 or compatible compiler
- Run ImageWriter.exe or ImageWriterPro.exe
- Select source image file or device
- Select target device
- Configure options (block size, count, etc.)
- Click "Write" or "Read"
Versions:
- ImageWriter.exe - Standard version for local drives
- ImageWriterPro.exe - Extended version with network share support
List available devices:
ImageWriter.exe --cli --listWrite image to USB drive:
ImageWriter.exe --cli --write --device \\.\PhysicalDrive2 --file ubuntu.iso --verifyRead device to compressed image:
ImageWriter.exe --cli --read --device E:\ --file backup.img.gz --hash md5Verify device against image:
ImageWriter.exe --cli --verify --device E:\ --file backup.img --hash sha256Show help:
ImageWriter.exe --cli --helpCLI Options:
--device <path>- Device path (e.g.,\\.\PhysicalDrive2orE:\)--file <path>- Image file (.img, .iso, .gz, .zip)--bs <size>- Block size in bytes (default: 1048576)--count <n>- Number of blocks to copy--hash <md5|sha256>- Calculate hash after operation--verify- Verify written data--force- Skip safety checks (dangerous!)--quiet- Suppress progress output
See ImageWriter.exe --cli --help for complete documentation.
Full documentation is available in the docs/ directory:
Run automated tests:
cd tests
run_tests.batTests include:
- Unit Tests - DUnit framework for core functionality
- Integration Tests - PowerShell scripts for real-world scenarios
- GUI Automation - UI testing via Windows Automation API
We welcome contributions! Please read CONTRIBUTING.md before submitting pull requests.
GNU General Public License v3.0 - see LICENSE for details.
If you discover a security vulnerability, please see SECURITY.md for responsible disclosure guidelines.
ImageWriter includes an automated test suite:
cd tests
run_tests.batSafety Features:
- Tests ONLY on removable devices (USB drives)
- NEVER tests on fixed disks
- Automatic device type verification
- Safe read-only operations
See tests/README.md for details.
- Delphi 7 (Borland Delphi Version 15.0)
- Win32 API for low-level disk access
- Named Pipes for IPC in Pro version
- ZLib for compressed image support (dynamic loading)
Contributions are welcome! Please read CONTRIBUTING.md for details on our code of conduct and the process for submitting pull requests.
Additional Resources:
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
- John Newbigin - Original author of dd for Windows
- The ZLib team for the compression library
- All contributors to this project
- Author: Anton Zelenov
- Email: [email protected]
- GitHub: https://github.com/tixset/ImageWriter
- Original dd for Windows: John Newbigin ([email protected])
Made with ❤️ for the open-source community
Note: This is a derivative work based on dd for Windows.
Original project © Chrysocome and John Newbigin, available under the GPL license.
