mirror of
https://github.com/dockur/windows-arm.git
synced 2024-11-06 22:21:49 +00:00
feat: Automatically execute script after installation (#94)
This commit is contained in:
parent
210efeb1d6
commit
5768ae5c2a
4 changed files with 55 additions and 3 deletions
|
@ -464,6 +464,11 @@
|
|||
<CommandLine>netsh advfirewall firewall set rule group="File and Printer Sharing" new enable=Yes</CommandLine>
|
||||
<Description>Enable File Sharing</Description>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<Order>23</Order>
|
||||
<CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine>
|
||||
<Description>Execute custom script from the OEM folder if exists</Description>
|
||||
</SynchronousCommand>
|
||||
</FirstLogonCommands>
|
||||
</component>
|
||||
</settings>
|
||||
|
|
|
@ -488,6 +488,11 @@
|
|||
<CommandLine>reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f</CommandLine>
|
||||
<Description>Disable unsupported hardware notifications</Description>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<Order>24</Order>
|
||||
<CommandLine>cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"</CommandLine>
|
||||
<Description>Execute custom script from the OEM folder if exists</Description>
|
||||
</SynchronousCommand>
|
||||
</FirstLogonCommands>
|
||||
</component>
|
||||
</settings>
|
||||
|
|
15
readme.md
15
readme.md
|
@ -155,9 +155,7 @@ docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --cap-add NET_
|
|||
|
||||
* ### How do I customize the installation?
|
||||
|
||||
You can customize any part of the automatic installation, and even execute certain commands at boot if needed.
|
||||
|
||||
Download the XML file corresponding to your Windows version, for example [win11arm64.xml](https://raw.githubusercontent.com/dockur/windows-arm/master/assets/win11arm64.xml). Then apply your modifications to it, and add this line to your compose file:
|
||||
You can customize every setting used by the automatic installation. Download the XML file corresponding to your Windows version, for example [win11arm64.xml](https://raw.githubusercontent.com/dockur/windows/master/assets/win11arm64.xml). Then apply your modifications to it, and add this line to your compose file:
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
|
@ -166,6 +164,17 @@ docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --cap-add NET_
|
|||
|
||||
Replace the example path `/home/user/custom.xml` with the filename of the modified XML file.
|
||||
|
||||
* ### How do I run a script after installation?
|
||||
|
||||
To run your own script after installation, you can create a file called `install.bat` and place it in a folder together with other files it needs (programs to install for example). Then bind it in your compose file like this:
|
||||
|
||||
```yaml
|
||||
volumes:
|
||||
- /home/user/example:/storage/oem
|
||||
```
|
||||
|
||||
The example path `/home/user/example` will be copied to `C:\OEM` during installation and the containing `install.bat` will be executed.
|
||||
|
||||
* ### How do I assign an individual IP address to the container?
|
||||
|
||||
By default, the container uses bridge networking, which shares the IP address with the host.
|
||||
|
|
|
@ -638,6 +638,35 @@ updateImage() {
|
|||
return 0
|
||||
}
|
||||
|
||||
copyOEM() {
|
||||
local dir="$1"
|
||||
local folder="$STORAGE/oem"
|
||||
local src
|
||||
|
||||
[ ! -d "$folder" ] && folder="$STORAGE/OEM"
|
||||
[ ! -d "$folder" ] && folder="$STORAGE/shared/oem"
|
||||
[ ! -d "$folder" ] && folder="$STORAGE/shared/OEM"
|
||||
[ ! -d "$folder" ] && return 0
|
||||
|
||||
local msg="Copying OEM folder to image..."
|
||||
info "$msg" && html "$msg"
|
||||
|
||||
src=$(find "$dir" -maxdepth 1 -type d -iname sources | head -n 1)
|
||||
|
||||
if [ ! -d "$src" ]; then
|
||||
error "failed to locate 'sources' folder in ISO image!" && return 1
|
||||
fi
|
||||
|
||||
local dest="$src/\$OEM\$/\$1/"
|
||||
mkdir -p "$dest"
|
||||
|
||||
if ! cp -r "$folder" "$dest"; then
|
||||
error "Failed to copy OEM folder!" && return 1
|
||||
fi
|
||||
|
||||
return 0
|
||||
}
|
||||
|
||||
buildImage() {
|
||||
|
||||
local dir="$1"
|
||||
|
@ -736,6 +765,10 @@ if ! rm -f "$ISO" 2> /dev/null; then
|
|||
rm -f "$ISO"
|
||||
fi
|
||||
|
||||
if ! copyOEM "$DIR"; then
|
||||
exit 63
|
||||
fi
|
||||
|
||||
if ! buildImage "$DIR"; then
|
||||
exit 65
|
||||
fi
|
||||
|
|
Loading…
Reference in a new issue