Skip to content

Commit 4c473b1

Browse files
61C62CAA-E57F-47EF-9060-104E7AFAFE68
1 parent 17a915e commit 4c473b1

File tree

10 files changed

+430
-21
lines changed

10 files changed

+430
-21
lines changed

README.md

Lines changed: 180 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,180 @@
1+
<h1>WinDiskWriter</h1>
2+
3+
<p>
4+
&emsp;&emsp;<b>WinDiskWriter</b> - an application for macOS that allows you to write flash drives with <b>Microsoft Windows</b> using a macOS-based computer.<br>
5+
&emsp;&emsp;This software is <b>free</b> and <b>open source</b>, and you can <strong>support me</strong> by <strong>making a donation</strong>.<br>
6+
</p>
7+
8+
<p align="center">
9+
<img width="420" alt="WinDiskWriter Main Screen" src="https://github.com/TechUnRestricted/windiskwriter/assets/83237609/ab8fd7bf-8be0-487b-a48e-c6809e558d99">
10+
</p>
11+
12+
<p>
13+
&emsp;&emsp;You can choose between a user-friendly <b>graphical interface</b> or a powerful <b>console</b> version, depending on your preference and skill level.<br>
14+
&emsp;&emsp;WinDiskWriter is <i>still in development</i>, so if you encounter any issues or have any questions, please <i>feel free to create an Issue on GitHub</i> and I will do my best to help you.</p>
15+
16+
<h2>Compatibility</h2>
17+
<h3>macOS Support</h3>
18+
<table>
19+
<thead>
20+
<tr>
21+
<th>Version</th>
22+
<th>Architecture</th>
23+
<th>Is Verified</th>
24+
</tr>
25+
</thead>
26+
<tbody>
27+
<tr>
28+
<td>Mac OS X Snow Leopard 10.6</td>
29+
<td rowspan="10" align="center">x86_64</td>
30+
<td rowspan="3" align="center">
31+
Not Yet<br>
32+
<sub>(should work)</sub>
33+
</td>
34+
</tr>
35+
<tr>
36+
<td>Mac OS X Lion 10.7</td>
37+
</tr>
38+
<tr>
39+
<td>Mac OS X Mountain Lion 10.8</td>
40+
</tr>
41+
<tr>
42+
<td>OS X Mavericks 10.9</td>
43+
<td rowspan="8" align="center">Yes</td>
44+
</tr>
45+
<tr>
46+
<td>OS X Yosemite 10.10</td>
47+
</tr>
48+
<tr>
49+
<td>OS X El Capitan 10.11</td>
50+
</tr>
51+
<tr>
52+
<td>macOS Sierra 10.12</td>
53+
</tr>
54+
<tr>
55+
<td>macOS High Sierra 10.13</td>
56+
</tr>
57+
<tr>
58+
<td>macOS Mojave 10.14</td>
59+
</tr>
60+
<tr>
61+
<td>macOS Catalina 10.15</td>
62+
</tr>
63+
<tr>
64+
<td>macOS Big Sur 11.0</td>
65+
<td rowspan="999" align="center">
66+
x86_64,<br>
67+
ARM64
68+
</td>
69+
</tr>
70+
<tr>
71+
<td>macOS Monterey 12.0</td>
72+
<td rowspan="999" align="center">
73+
Not Yet<br>
74+
<sub>(should work)</sub>
75+
</td>
76+
</tr>
77+
<tr>
78+
<td>macOS Ventura 13.0</td>
79+
</tr>
80+
<tr>
81+
<td>macOS Sonoma 14.0</td>
82+
</tr>
83+
</tbody>
84+
</table>
85+
86+
<h3>Windows Images</h3>
87+
<table>
88+
<thead>
89+
<tr>
90+
<th>Version</th>
91+
<th>Architecture</th>
92+
<th>Boot Mode</th>
93+
<th>Is Verified</th>
94+
</tr>
95+
</thead>
96+
<tbody>
97+
<tr>
98+
<td>Windows Vista</td>
99+
<td rowspan="999" align="center">x86_64</td>
100+
<td rowspan="999" align="center">UEFI</td>
101+
<td rowspan="999" align="center">Yes</td>
102+
</tr>
103+
<tr>
104+
<td>Windows 7</td>
105+
</tr>
106+
<tr>
107+
<td>Windows 8</td>
108+
</tr>
109+
<tr>
110+
<td>Windows 8.1</td>
111+
</tr>
112+
<tr>
113+
<td>Windows 10</td>
114+
</tr>
115+
<tr>
116+
<td>Windows 11</td>
117+
</tr>
118+
</tbody>
119+
</table>
120+
121+
<sup>
122+
Only <b>UEFI x86_64</b> images are currently supported.<br>
123+
Images with install.<b>esd</b> (compressed system image) over 4GB are not supported yet on FAT32, but install.<b>wim</b> works fine with every size.<br>
124+
<i>Legacy Boot Mode and install.<b>esd</b> support is <b>coming soon</b>.</i>
125+
</sup>
126+
127+
<h2>Additional Information</h2>
128+
<p align="center">
129+
<img width="340" alt="WinDiskWriter About Screen" src="https://github.com/TechUnRestricted/windiskwriter/assets/83237609/96367a8c-b40f-4e18-8481-30fc37dff9e9">
130+
</p>
131+
<p>
132+
&emsp;&emsp;WinDiskWriter is developed in the <b>Objective-C</b> programming language to ensure <b>maximum backward compatibility</b> with older versions of macOS.<br>
133+
&emsp;&emsp;For building the interface, a custom solution was developed, which is an alternative to NSStackView, but for old operating systems.<br>
134+
&emsp;&emsp;The interface supports setting minimum and maximum widths and heights of elements, which would simply be impossible to implement through .xib or .storyboard.<br>
135+
&emsp;&emsp;The application <b>does not have any external dynamically-linked additional helpers</b>, so its functionality is guaranteed even if you run the application binary file separately.<br>
136+
&emsp;&emsp;Since WinDiskWriter was written in Objective-C, which is supported from the very first version of Mac OS X, the <b>size of the application is very small</b>, while it contains several architectures (x86_64 and ARM64).
137+
</p>
138+
139+
<h2>Todo</h2>
140+
<ul>
141+
<li>
142+
Add support for Legacy BIOS booting.
143+
</li>
144+
<li>
145+
Add support for choosing individual partitions in WinDiskWriter (GUI).
146+
</li>
147+
<li>
148+
Add "Show internal drives" toggle.
149+
</li>
150+
<li>
151+
Add support for bypassing Windows 11 install requirements on unsupported hardware.
152+
</li>
153+
<li>
154+
Add support for splitting install.<b>esd</b> (compressed system image) files for FAT32 filesystem.
155+
</li>
156+
<li>
157+
Fix UI bugs on Mac OS X Mavericks 10.9 and lower.
158+
</li>
159+
<li>
160+
Add 32-Bit CPU support for the already existing fat binary. (x86_64 + ARM64 + x86)
161+
</li>
162+
</ul>
163+
164+
<h2>❤️ Support Me ❤️ (Donations)</h2>
165+
<sup><b>(add later)</b></sup>
166+
167+
<h2>Authors</h2>
168+
<ul>
169+
<li>
170+
<a href="https://www.github.com/TechUnRestricted">@TechUnRestricted</a>
171+
</li>
172+
</ul>
173+
174+
<h2>Used Libraries</h2>
175+
<ul>
176+
<li>
177+
<a href="https://wimlib.net/">wimlib</a> <sub><sup><a href="https://github.com/TechUnRestricted/windiskwriter/blob/main/libs/wimlib/License.txt">(GNU LESSER GENERAL PUBLIC LICENSE Version 3)</a></sup></sub>
178+
</li>
179+
</ul>
180+

WinDiskWriter GUI/AppDelegate.m

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,8 @@ - (void)writeAction {
511511

512512
dispatch_async(dispatch_get_main_queue(), ^{
513513

514+
[self->mainWindow removeAttachedSheetWithReturnCode: NSAlertFirstButtonReturn];
515+
514516
NSAlert *alert = [[NSAlert alloc] init];
515517

516518
[alert setMessageText: @"A problem occurred when writing a file to disk"];
@@ -725,10 +727,6 @@ - (void)applicationDidFinishLaunching:(NSNotification *)aNotification {
725727
[devicePickerHorizontalLayout addView:devicePickerView minWidth:0 maxWidth:INFINITY minHeight:0 maxHeight:devicePickerView.cell.cellSize.height];
726728

727729
[self updateDeviceList];
728-
729-
//[devicePickerView addItemWithTitle: @"Первый"];
730-
//[devicePickerView addItemWithTitle: @"Второй"];
731-
//[devicePickerView addItemWithTitle: @"Третий"];
732730
}
733731

734732
updateDeviceListButtonView = [[ButtonView alloc] init]; {
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
//
2+
// Licenses-Constants.h
3+
// WinDiskWriter GUI
4+
//
5+
// Created by Macintosh on 22.08.2023.
6+
// Copyright © 2023 TechUnRestricted. All rights reserved.
7+
//
8+
9+
#import <Foundation/Foundation.h>
10+
11+
NS_ASSUME_NONNULL_BEGIN
12+
13+
@interface Licenses_Constants : NSObject
14+
15+
extern NSString * const WIMLIB_LICENSE_TEXT;
16+
17+
@end
18+
19+
NS_ASSUME_NONNULL_END

0 commit comments

Comments
 (0)