diff --git a/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json b/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
deleted file mode 100644
index cc0e5ae..0000000
--- a/.devcontainer/010 - Windows 11 Enterprise/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows 11 Enterprise",
- "service": "windows",
- "containerEnv": {
- "VERSION": "11e"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/020 - Windows 11 LTSC/devcontainer.json b/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
deleted file mode 100644
index 23e54ff..0000000
--- a/.devcontainer/020 - Windows 11 LTSC/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows 11 LTSC",
- "service": "windows",
- "containerEnv": {
- "VERSION": "11l"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/030 - Windows 10 Pro/devcontainer.json b/.devcontainer/030 - Windows 10 Pro/devcontainer.json
deleted file mode 100644
index c5a647b..0000000
--- a/.devcontainer/030 - Windows 10 Pro/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows 10 Pro",
- "service": "windows",
- "containerEnv": {
- "VERSION": "10"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json b/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
deleted file mode 100644
index 1466e11..0000000
--- a/.devcontainer/040 - Windows 10 Enterprise/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows 10 Enterprise",
- "service": "windows",
- "containerEnv": {
- "VERSION": "10e"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/050 - Windows 10 LTSC/devcontainer.json b/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
deleted file mode 100644
index dfc8f5c..0000000
--- a/.devcontainer/050 - Windows 10 LTSC/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows 10 LTSC",
- "service": "windows",
- "containerEnv": {
- "VERSION": "10l"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json b/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
deleted file mode 100644
index e58f7ad..0000000
--- a/.devcontainer/060 - Windows 8.1 Enterprise/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows 8.1 Enterprise",
- "service": "windows",
- "containerEnv": {
- "VERSION": "8e"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json b/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
deleted file mode 100644
index 85878f0..0000000
--- a/.devcontainer/070 - Windows 7 Ultimate/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows 7 Ultimate",
- "service": "windows",
- "containerEnv": {
- "VERSION": "7u"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json b/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
deleted file mode 100644
index b99c942..0000000
--- a/.devcontainer/080 - Windows Vista Ultimate/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows Vista Ultimate",
- "service": "windows",
- "containerEnv": {
- "VERSION": "vu"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/090 - Windows XP Professional/devcontainer.json b/.devcontainer/090 - Windows XP Professional/devcontainer.json
deleted file mode 100644
index a2c51c4..0000000
--- a/.devcontainer/090 - Windows XP Professional/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows XP Professional",
- "service": "windows",
- "containerEnv": {
- "VERSION": "xp"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/100 - Windows 2000 Professional/devcontainer.json b/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
deleted file mode 100644
index e5fab13..0000000
--- a/.devcontainer/100 - Windows 2000 Professional/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows 2000 Professional",
- "service": "windows",
- "containerEnv": {
- "VERSION": "2k"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/110 - Windows Server 2025/devcontainer.json b/.devcontainer/110 - Windows Server 2025/devcontainer.json
deleted file mode 100644
index 96089cc..0000000
--- a/.devcontainer/110 - Windows Server 2025/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows Server 2025",
- "service": "windows",
- "containerEnv": {
- "VERSION": "2025"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/120 - Windows Server 2022/devcontainer.json b/.devcontainer/120 - Windows Server 2022/devcontainer.json
deleted file mode 100644
index 9897a67..0000000
--- a/.devcontainer/120 - Windows Server 2022/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows Server 2022",
- "service": "windows",
- "containerEnv": {
- "VERSION": "2022"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/130 - Windows Server 2019/devcontainer.json b/.devcontainer/130 - Windows Server 2019/devcontainer.json
deleted file mode 100644
index 9903599..0000000
--- a/.devcontainer/130 - Windows Server 2019/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows Server 2019",
- "service": "windows",
- "containerEnv": {
- "VERSION": "2019"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/140 - Windows Server 2016/devcontainer.json b/.devcontainer/140 - Windows Server 2016/devcontainer.json
deleted file mode 100644
index 614b171..0000000
--- a/.devcontainer/140 - Windows Server 2016/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows Server 2016",
- "service": "windows",
- "containerEnv": {
- "VERSION": "2016"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json b/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
deleted file mode 100644
index 158036c..0000000
--- a/.devcontainer/150 - Windows Server 2012 R2/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows Server 2012 R2",
- "service": "windows",
- "containerEnv": {
- "VERSION": "2012"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json b/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
deleted file mode 100644
index 5dc1af6..0000000
--- a/.devcontainer/160 - Windows Server 2008 R2/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows Server 2008 R2",
- "service": "windows",
- "containerEnv": {
- "VERSION": "2008"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/170 - Windows Server 2003/devcontainer.json b/.devcontainer/170 - Windows Server 2003/devcontainer.json
deleted file mode 100644
index c47effb..0000000
--- a/.devcontainer/170 - Windows Server 2003/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows Server 2003",
- "service": "windows",
- "containerEnv": {
- "VERSION": "2003"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/180 - Tiny11/devcontainer.json b/.devcontainer/180 - Tiny11/devcontainer.json
deleted file mode 100644
index 225a746..0000000
--- a/.devcontainer/180 - Tiny11/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Tiny11",
- "service": "windows",
- "containerEnv": {
- "VERSION": "tiny11"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/190 - Tiny11 Core/devcontainer.json b/.devcontainer/190 - Tiny11 Core/devcontainer.json
deleted file mode 100644
index 78da098..0000000
--- a/.devcontainer/190 - Tiny11 Core/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Tiny11 Core",
- "service": "windows",
- "containerEnv": {
- "VERSION": "core11"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/200 - Tiny11 Nano/devcontainer.json b/.devcontainer/200 - Tiny11 Nano/devcontainer.json
deleted file mode 100644
index c7fdca9..0000000
--- a/.devcontainer/200 - Tiny11 Nano/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Tiny11 Nano",
- "service": "windows",
- "containerEnv": {
- "VERSION": "nano11"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/210 - Tiny10/devcontainer.json b/.devcontainer/210 - Tiny10/devcontainer.json
deleted file mode 100644
index 3df1b88..0000000
--- a/.devcontainer/210 - Tiny10/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Tiny10",
- "service": "windows",
- "containerEnv": {
- "VERSION": "tiny10"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "../codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.devcontainer/codespaces.yml b/.devcontainer/codespaces.yml
deleted file mode 100644
index 85e3f64..0000000
--- a/.devcontainer/codespaces.yml
+++ /dev/null
@@ -1,21 +0,0 @@
-services:
- windows:
- container_name: windows
- image: ghcr.io/dockur/windows
- environment:
- RAM_SIZE: "half"
- DISK_SIZE: "max"
- CPU_CORES: "max"
- devices:
- - /dev/kvm
- - /dev/net/tun
- cap_add:
- - NET_ADMIN
- ports:
- - 8006:8006
- - 3389:3389/tcp
- - 3389:3389/udp
- volumes:
- - ./windows:/storage
- restart: on-failure
- stop_grace_period: 2m
diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
deleted file mode 100644
index d7c98a8..0000000
--- a/.devcontainer/devcontainer.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "Windows 11 Pro",
- "service": "windows",
- "containerEnv": {
- "VERSION": "11"
- },
- "forwardPorts": [8006],
- "portsAttributes": {
- "8006": {
- "label": "Web",
- "onAutoForward": "notify"
- }
- },
- "otherPortsAttributes": {
- "onAutoForward": "ignore"
- },
- "dockerComposeFile": "codespaces.yml",
- "workspaceFolder": "/workspaces/windows",
- "initializeCommand": "docker system prune --all --force"
-}
diff --git a/.dockerignore b/.dockerignore
index 154d44a..2cf7b5a 100644
--- a/.dockerignore
+++ b/.dockerignore
@@ -1,5 +1,4 @@
.dockerignore
-.devcontainer
.git
.github
.gitignore
@@ -7,8 +6,6 @@
.gitmodules
Dockerfile
Dockerfile.archive
-compose.yml
-compose.yaml
docker-compose.yml
-docker-compose.yaml
+
*.md
diff --git a/.github/ISSUE_TEMPLATE/1-issue.yml b/.github/ISSUE_TEMPLATE/1-issue.yml
deleted file mode 100644
index 87860c9..0000000
--- a/.github/ISSUE_TEMPLATE/1-issue.yml
+++ /dev/null
@@ -1,41 +0,0 @@
-name: "\U0001F6A8 Technical issue"
-description: When you're experiencing problems using the container
-body:
- - type: input
- id: os
- attributes:
- label: Operating system
- description: Your Linux distribution (can be shown by `lsb_release -a`).
- placeholder: e.g. Ubuntu 24.04
- validations:
- required: true
- - type: textarea
- id: summary
- attributes:
- label: Description
- description: A clear and concise description of your issue.
- validations:
- required: true
- - type: textarea
- id: compose
- attributes:
- label: Docker compose
- description: The compose file (or otherwise the `docker run` command used).
- render: yaml
- validations:
- required: true
- - type: textarea
- id: log
- attributes:
- label: Docker log
- description: The logfile of the container (as shown by `docker logs windows`).
- render: shell
- validations:
- required: true
- - type: textarea
- id: screenshot
- attributes:
- label: Screenshots (optional)
- description: Screenshots that might help to make the problem more clear.
- validations:
- required: false
diff --git a/.github/ISSUE_TEMPLATE/2-feature.yml b/.github/ISSUE_TEMPLATE/2-feature.yml
deleted file mode 100644
index eb95b34..0000000
--- a/.github/ISSUE_TEMPLATE/2-feature.yml
+++ /dev/null
@@ -1,37 +0,0 @@
-name: "\U0001F680 Feature request"
-description: Suggest an idea for improving the container
-title: "[Feature]: "
-labels: ["enhancement"]
-body:
- - type: textarea
- id: problem
- attributes:
- label: Is your proposal related to a problem?
- description: |
- Provide a clear and concise description of what the problem is.
- For example, "I'm always frustrated when..."
- validations:
- required: true
- - type: textarea
- id: solution
- attributes:
- label: Describe the solution you'd like.
- description: |
- Provide a clear and concise description of what you want to happen.
- validations:
- required: true
- - type: textarea
- id: alternatives
- attributes:
- label: Describe alternatives you've considered.
- description: |
- Let us know about other solutions you've tried or researched.
- validations:
- required: true
- - type: textarea
- id: context
- attributes:
- label: Additional context
- description: |
- Is there anything else you can add about the proposal?
- You might want to link to related issues here, if you haven't already.
diff --git a/.github/ISSUE_TEMPLATE/3-bug.yml b/.github/ISSUE_TEMPLATE/3-bug.yml
deleted file mode 100644
index f614f27..0000000
--- a/.github/ISSUE_TEMPLATE/3-bug.yml
+++ /dev/null
@@ -1,43 +0,0 @@
-name: "\U0001F41E Bug report"
-description: Create a report to help us improve the container
-title: "[Bug]: "
-labels: ["bug"]
-body:
- - type: input
- id: os
- attributes:
- label: Operating system
- description: Your Linux distribution (can be shown by `lsb_release -a`).
- placeholder: e.g. Ubuntu 24.04
- validations:
- required: true
- - type: textarea
- id: summary
- attributes:
- label: Description
- description: Describe the expected behaviour, the actual behaviour, and the steps to reproduce.
- validations:
- required: true
- - type: textarea
- id: compose
- attributes:
- label: Docker compose
- description: The compose file (or otherwise the `docker run` command used).
- render: yaml
- validations:
- required: true
- - type: textarea
- id: log
- attributes:
- label: Docker log
- description: The logfile of the container (as shown by `docker logs windows`).
- render: shell
- validations:
- required: true
- - type: textarea
- id: screenshot
- attributes:
- label: Screenshots (optional)
- description: Screenshots that might help to make the problem more clear.
- validations:
- required: false
diff --git a/.github/ISSUE_TEMPLATE/4-question.yml b/.github/ISSUE_TEMPLATE/4-question.yml
deleted file mode 100644
index 9094d6d..0000000
--- a/.github/ISSUE_TEMPLATE/4-question.yml
+++ /dev/null
@@ -1,26 +0,0 @@
-name: "\U00002753 General question"
-description: Questions about the container not related to an issue
-title: "[Question]: "
-labels: ["question"]
-body:
- - type: checkboxes
- attributes:
- label: Is your question not already answered in the FAQ?
- description: Please read the [FAQ](https://github.com/dockur/windows/blob/master/readme.md) carefully to avoid asking duplicate questions.
- options:
- - label: I made sure the question is not listed in the [FAQ](https://github.com/dockur/windows/blob/master/readme.md).
- required: true
- - type: checkboxes
- attributes:
- label: Is this a general question and not a technical issue?
- description: For questions related to issues you must use the [technical issue](https://github.com/dockur/windows/issues/new?assignees=&labels=&projects=&template=1-issue.yml) form instead. It contains all the right fields (system info, logfiles, etc.) we need in order to be able to help you.
- options:
- - label: I am sure my question is not about a technical issue.
- required: true
- - type: textarea
- id: question
- attributes:
- label: Question
- description: What's the question you have about the container?
- validations:
- required: true
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
deleted file mode 100644
index 3ba13e0..0000000
--- a/.github/ISSUE_TEMPLATE/config.yml
+++ /dev/null
@@ -1 +0,0 @@
-blank_issues_enabled: false
diff --git a/.github/winboat.png b/.github/winboat.png
deleted file mode 100644
index 2b5f6db..0000000
Binary files a/.github/winboat.png and /dev/null differ
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index 27c6385..a193a38 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -2,6 +2,16 @@ name: Build
on:
workflow_dispatch:
+ push:
+ branches:
+ - master
+ paths-ignore:
+ - '**/*.md'
+ - '**/*.yml'
+ - '.gitignore'
+ - '.dockerignore'
+ - '.github/**'
+ - '.github/workflows/**'
concurrency:
group: build
@@ -22,7 +32,7 @@ jobs:
steps:
-
name: Checkout
- uses: actions/checkout@v5
+ uses: actions/checkout@v4
with:
fetch-depth: 0
-
@@ -40,7 +50,7 @@ jobs:
labels: |
org.opencontainers.image.title=${{ vars.NAME }}
env:
- DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
+ DOCKER_METADATA_ANNOTATIONS_LEVELS: manifest,index
-
name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
@@ -59,12 +69,12 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
-
name: Build Docker image
- uses: docker/build-push-action@v6
+ uses: docker/build-push-action@v5
with:
context: .
push: true
provenance: false
- platforms: linux/amd64,linux/arm64
+ platforms: linux/amd64,linux/arm64,linux/arm
tags: ${{ steps.meta.outputs.tags }}
labels: ${{ steps.meta.outputs.labels }}
annotations: ${{ steps.meta.outputs.annotations }}
diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml
index 9e9d278..ea76481 100644
--- a/.github/workflows/check.yml
+++ b/.github/workflows/check.yml
@@ -7,29 +7,19 @@ jobs:
name: shellcheck
runs-on: ubuntu-latest
steps:
- -
- name: Checkout
- uses: actions/checkout@v5
- -
- name: Run ShellCheck
+ - uses: actions/checkout@v4
+ - name: Run ShellCheck
uses: ludeeus/action-shellcheck@master
env:
SHELLCHECK_OPTS: -x --source-path=src -e SC1091 -e SC2001 -e SC2002 -e SC2034 -e SC2064 -e SC2153 -e SC2317 -e SC2028
- -
- name: Lint Dockerfile
- uses: hadolint/hadolint-action@v3.3.0
- with:
- dockerfile: Dockerfile
- ignore: DL3006,DL3008
- failure-threshold: warning
- -
- name: Validate XML
+ - name: Validate XML
uses: action-pack/valid-xml@v1
with:
path: "assets"
file-endings: ".xml"
- -
- name: Validate JSON and YML files
- uses: GrantBirki/json-yaml-validate@v4
+ - name: Lint Dockerfile
+ uses: hadolint/hadolint-action@v3.1.0
with:
- yaml_exclude_regex: ".*\\kubernetes\\.yml$"
+ dockerfile: Dockerfile
+ ignore: DL3008,DL4006,SC3037
+ failure-threshold: warning
diff --git a/.github/workflows/hub.yml b/.github/workflows/hub.yml
index 0b2c17e..0e0bcd1 100644
--- a/.github/workflows/hub.yml
+++ b/.github/workflows/hub.yml
@@ -12,10 +12,10 @@ jobs:
dockerHubDescription:
runs-on: ubuntu-latest
steps:
- - uses: actions/checkout@v5
+ - uses: actions/checkout@v4
-
name: Docker Hub Description
- uses: peter-evans/dockerhub-description@v5
+ uses: peter-evans/dockerhub-description@v4
with:
username: ${{ secrets.DOCKERHUB_USERNAME }}
password: ${{ secrets.DOCKERHUB_TOKEN }}
diff --git a/.github/workflows/review.yml b/.github/workflows/review.yml
deleted file mode 100644
index 51f8503..0000000
--- a/.github/workflows/review.yml
+++ /dev/null
@@ -1,66 +0,0 @@
-on:
- pull_request:
-
-name: "Review"
-
-permissions:
- contents: read
- pull-requests: write
- checks: write
-
-jobs:
- review:
- name: review
- runs-on: ubuntu-latest
- steps:
- -
- name: Checkout
- uses: actions/checkout@v5
- -
- name: Spelling
- uses: reviewdog/action-misspell@v1
- with:
- locale: "US"
- level: warning
- pattern: |
- *.md
- *.sh
- reporter: github-pr-review
- github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
- -
- name: Hadolint
- uses: reviewdog/action-hadolint@v1
- with:
- level: warning
- reporter: github-pr-review
- hadolint_ignore: DL3006 DL3008
- github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
- -
- name: YamlLint
- uses: reviewdog/action-yamllint@v1
- with:
- level: warning
- reporter: github-pr-review
- github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
- -
- name: ActionLint
- uses: reviewdog/action-actionlint@v1
- with:
- level: warning
- reporter: github-pr-review
- github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
- -
- name: Shellformat
- uses: reviewdog/action-shfmt@v1
- with:
- level: warning
- shfmt_flags: "-i 2 -ci -bn"
- github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
- -
- name: Shellcheck
- uses: reviewdog/action-shellcheck@v1
- with:
- level: warning
- reporter: github-pr-review
- shellcheck_flags: -x -e SC1091 -e SC2001 -e SC2002 -e SC2034 -e SC2064 -e SC2153 -e SC2317 -e SC2028
- github_token: ${{ secrets.REPO_ACCESS_TOKEN }}
diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml
index c275f1a..4903636 100644
--- a/.github/workflows/test.yml
+++ b/.github/workflows/test.yml
@@ -1,6 +1,12 @@
on:
workflow_dispatch:
pull_request:
+ paths:
+ - '**/*.sh'
+ - '**/*.xml'
+ - '.github/workflows/test.yml'
+ - '.github/workflows/check.yml'
+ - 'Dockerfile'
name: "Test"
permissions: {}
diff --git a/Dockerfile b/Dockerfile
index bf6dab2..910b559 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,46 +1,44 @@
-# syntax=docker/dockerfile:1
+FROM scratch
+COPY --from=qemux/qemu-docker:4.20 / /
-ARG VERSION_ARG="latest"
-FROM scratch AS build-amd64
+ARG DEBCONF_NOWARNINGS "yes"
+ARG DEBIAN_FRONTEND "noninteractive"
+ARG DEBCONF_NONINTERACTIVE_SEEN "true"
-COPY --from=qemux/qemu:7.27 / /
-
-ARG TARGETARCH
-ARG DEBCONF_NOWARNINGS="yes"
-ARG DEBIAN_FRONTEND="noninteractive"
-ARG DEBCONF_NONINTERACTIVE_SEEN="true"
-
-RUN set -eu && \
- apt-get update && \
+RUN apt-get update && \
apt-get --no-install-recommends -y install \
+ curl \
+ 7zip \
+ wsdd \
samba \
- wimtools \
dos2unix \
cabextract \
- libxml2-utils \
- libarchive-tools && \
- wget "https://github.com/gershnik/wsdd-native/releases/download/v1.22/wsddn_1.22_${TARGETARCH}.deb" -O /tmp/wsddn.deb -q && \
- dpkg -i /tmp/wsddn.deb && \
+ genisoimage \
+ libxml2-utils && \
+ echo "deb http://deb.debian.org/debian/ sid main" >> /etc/apt/sources.list.d/sid.list && \
+ echo -e "Package: *\nPin: release n=trixie\nPin-Priority: 900\nPackage: *\nPin: release n=sid\nPin-Priority: 400" | tee /etc/apt/preferences.d/preferences > /dev/null && \
+ apt-get update && \
+ apt-get -t sid --no-install-recommends -y install wimtools && \
apt-get clean && \
rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
-COPY --chmod=755 ./src /run/
-COPY --chmod=755 ./assets /run/assets
+COPY ./src /run/
+COPY ./assets /run/assets
-ADD --chmod=664 https://github.com/qemus/virtiso-whql/releases/download/v1.9.48-0/virtio-win-1.9.48.tar.xz /var/drivers.txz
+ADD https://raw.githubusercontent.com/christgau/wsdd/v0.8/src/wsdd.py /usr/sbin/wsdd
+ADD https://github.com/qemus/virtiso/releases/download/v0.1.248/virtio-win-0.1.248.iso /run/drivers.iso
-FROM dockurr/windows-arm:${VERSION_ARG} AS build-arm64
-FROM build-${TARGETARCH}
+RUN chmod +x /run/*.sh && chmod +x /usr/sbin/wsdd
-ARG VERSION_ARG="0.00"
+EXPOSE 8006 3389
+VOLUME /storage
+
+ENV RAM_SIZE "4G"
+ENV CPU_CORES "2"
+ENV DISK_SIZE "64G"
+ENV VERSION "win11"
+
+ARG VERSION_ARG "0.0"
RUN echo "$VERSION_ARG" > /run/version
-VOLUME /storage
-EXPOSE 3389 8006
-
-ENV VERSION="11"
-ENV RAM_SIZE="4G"
-ENV CPU_CORES="2"
-ENV DISK_SIZE="64G"
-
ENTRYPOINT ["/usr/bin/tini", "-s", "/run/entry.sh"]
diff --git a/assets/win10x64-enterprise-eval.xml b/assets/win10x64-enterprise-eval.xml
deleted file mode 100644
index ee75f27..0000000
--- a/assets/win10x64-enterprise-eval.xml
+++ /dev/null
@@ -1,439 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
- 0
- 3
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"
-
-
- 3
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f
-
-
- 4
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f
-
-
- 5
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 6
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 7
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f
-
-
- 8
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 9
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f
-
-
- 10
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f
-
-
- 11
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f
-
-
- 12
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f
-
-
- 13
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f
-
-
- 14
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f
-
-
- 15
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f
-
-
- 16
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f
-
-
- 17
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f
-
-
- 18
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 19
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 20
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 21
- reg.exe unload "HKU\mount"
-
-
- 22
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 23
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 24
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 25
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 12
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win10x64-enterprise.xml b/assets/win10x64-enterprise.xml
deleted file mode 100644
index 5e5eb8c..0000000
--- a/assets/win10x64-enterprise.xml
+++ /dev/null
@@ -1,442 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
- 0
- 3
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- NPPR9-FWDCX-D2C8J-H872K-2YT43
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"
-
-
- 3
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f
-
-
- 4
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f
-
-
- 5
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 6
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 7
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f
-
-
- 8
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 9
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f
-
-
- 10
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f
-
-
- 11
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f
-
-
- 12
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f
-
-
- 13
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f
-
-
- 14
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f
-
-
- 15
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f
-
-
- 16
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f
-
-
- 17
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f
-
-
- 18
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 19
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 20
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 21
- reg.exe unload "HKU\mount"
-
-
- 22
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 23
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 24
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 25
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 12
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win10x64-iot.xml b/assets/win10x64-iot.xml
deleted file mode 100644
index 00a049e..0000000
--- a/assets/win10x64-iot.xml
+++ /dev/null
@@ -1,448 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
-
- /image/index
- 2
-
-
-
- 0
- 3
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
-
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"
-
-
- 3
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f
-
-
- 4
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f
-
-
- 5
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 6
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 7
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f
-
-
- 8
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 9
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f
-
-
- 10
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f
-
-
- 11
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f
-
-
- 12
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f
-
-
- 13
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f
-
-
- 14
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f
-
-
- 15
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f
-
-
- 16
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f
-
-
- 17
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f
-
-
- 18
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 19
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 20
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 21
- reg.exe unload "HKU\mount"
-
-
- 22
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 23
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 24
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 25
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 12
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win10x64-ltsc.xml b/assets/win10x64-ltsc.xml
index e77dd6a..f9d0f11 100644
--- a/assets/win10x64-ltsc.xml
+++ b/assets/win10x64-ltsc.xml
@@ -86,12 +86,56 @@
true
Docker
Windows for Docker
+
false
false
+
+
+
+ D:\viostor\w10\amd64
+
+
+ D:\NetKVM\w10\amd64
+
+
+ D:\Balloon\w10\amd64
+
+
+ D:\pvpanic\w10\amd64
+
+
+ D:\qemupciserial\w10\amd64
+
+
+ D:\qxldod\w10\amd64
+
+
+ D:\vioinput\w10\amd64
+
+
+ D:\viorng\w10\amd64
+
+
+ D:\vioscsi\w10\amd64
+
+
+ D:\vioserial\w10\amd64
+
+
+ D:\viogpudo\w10\amd64
+
+
+ D:\sriov\w10\amd64
+
+
+ D:\viofs\w10\amd64
+
+
+
@@ -221,36 +265,11 @@
18
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 19
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 20
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 21
reg.exe unload "HKU\mount"
- 22
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 23
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 24
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 25
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
+ 19
+ reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 0 /f
@@ -264,8 +283,8 @@
true
+ Remote Desktop
all
- @FirewallAPI.dll,-28752
@@ -305,18 +324,13 @@
true
-
- 32
- 1920
- 1080
-
true
true
true
true
true
- Home
+ Other
3
true
true
@@ -329,11 +343,16 @@
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
Allow guest access to network shares
+
+ 2
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
+
3
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
Enable option for passwordless sign-in
-
+
4
cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
@@ -351,93 +370,33 @@
7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 12
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
Disable Network Discovery popup
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
+ 8
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
+ Disable Network Discovery popup
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
+ 9
+ reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
+ Disable first-run experience in Edge
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
+ 10
+ reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
+ Show file extensions in Explorer
+
+
+ 11
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
+ Zero Hibernation File
+
+
+ 12
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
+ Disable Hibernation Mode
diff --git a/assets/win10x64.xml b/assets/win10x64.xml
index 7c21359..a332efd 100644
--- a/assets/win10x64.xml
+++ b/assets/win10x64.xml
@@ -89,6 +89,49 @@
false
+
+
+
+ D:\viostor\w10\amd64
+
+
+ D:\NetKVM\w10\amd64
+
+
+ D:\Balloon\w10\amd64
+
+
+ D:\pvpanic\w10\amd64
+
+
+ D:\qemupciserial\w10\amd64
+
+
+ D:\qxldod\w10\amd64
+
+
+ D:\vioinput\w10\amd64
+
+
+ D:\viorng\w10\amd64
+
+
+ D:\vioscsi\w10\amd64
+
+
+ D:\vioserial\w10\amd64
+
+
+ D:\viogpudo\w10\amd64
+
+
+ D:\sriov\w10\amd64
+
+
+ D:\viofs\w10\amd64
+
+
+
@@ -218,36 +261,11 @@
18
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 19
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 20
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 21
reg.exe unload "HKU\mount"
- 22
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 23
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 24
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 25
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
+ 19
+ reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 0 /f
@@ -261,8 +279,8 @@
true
+ Remote Desktop
all
- @FirewallAPI.dll,-28752
@@ -302,18 +320,13 @@
true
-
- 32
- 1920
- 1080
-
true
true
true
true
true
- Home
+ Other
3
true
true
@@ -326,11 +339,16 @@
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
Allow guest access to network shares
+
+ 2
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
+
3
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
Enable option for passwordless sign-in
-
+
4
cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
@@ -348,93 +366,33 @@
7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 12
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
Disable Network Discovery popup
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
+ 8
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
+ Disable Network Discovery popup
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
+ 9
+ reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
+ Disable first-run experience in Edge
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
+ 10
+ reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
+ Show file extensions in Explorer
+
+
+ 11
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
+ Zero Hibernation File
+
+
+ 12
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
+ Disable Hibernation Mode
diff --git a/assets/win11x64-enterprise-eval.xml b/assets/win11x64-enterprise-eval.xml
deleted file mode 100644
index 39c3f02..0000000
--- a/assets/win11x64-enterprise-eval.xml
+++ /dev/null
@@ -1,472 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
- 0
- 3
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- false
-
- false
-
-
-
- 1
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f
-
-
- 3
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f
-
-
- 4
- reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f
-
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"
-
-
- 3
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f
-
-
- 4
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f
-
-
- 5
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 6
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 7
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f
-
-
- 8
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 9
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f
-
-
- 10
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f
-
-
- 11
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f
-
-
- 12
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f
-
-
- 13
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f
-
-
- 14
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f
-
-
- 15
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f
-
-
- 16
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f
-
-
- 17
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f
-
-
- 18
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 19
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 20
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 21
- reg.exe unload "HKU\mount"
-
-
- 22
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 23
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 24
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 25
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
- 26
- pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf
- Install VirtIO display driver
-
-
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 2
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f
- Disable SMB signing requirement
-
-
- 4
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 5
- powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1
- Password Never Expires
-
-
- 6
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 7
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
- reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f
- Disable unsupported hardware notifications
-
-
- 23
- reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f
- Disable unsupported hardware notifications
-
-
- 24
- cmd /C rd /q C:\Windows.old
- Remove empty Windows.old folder
-
-
- 25
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 26
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win11x64-enterprise.xml b/assets/win11x64-enterprise.xml
deleted file mode 100644
index bafed49..0000000
--- a/assets/win11x64-enterprise.xml
+++ /dev/null
@@ -1,475 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
- 0
- 3
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- NPPR9-FWDCX-D2C8J-H872K-2YT43
-
-
- false
-
- false
-
-
-
- 1
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f
-
-
- 3
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f
-
-
- 4
- reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f
-
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"
-
-
- 3
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f
-
-
- 4
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f
-
-
- 5
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 6
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 7
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f
-
-
- 8
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 9
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f
-
-
- 10
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f
-
-
- 11
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f
-
-
- 12
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f
-
-
- 13
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f
-
-
- 14
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f
-
-
- 15
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f
-
-
- 16
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f
-
-
- 17
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f
-
-
- 18
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 19
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 20
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 21
- reg.exe unload "HKU\mount"
-
-
- 22
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 23
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 24
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 25
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
- 26
- pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf
- Install VirtIO display driver
-
-
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 2
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f
- Disable SMB signing requirement
-
-
- 4
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 5
- powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1
- Password Never Expires
-
-
- 6
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 7
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
- reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f
- Disable unsupported hardware notifications
-
-
- 23
- reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f
- Disable unsupported hardware notifications
-
-
- 24
- cmd /C rd /q C:\Windows.old
- Remove empty Windows.old folder
-
-
- 25
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 26
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win11x64-iot.xml b/assets/win11x64-iot.xml
deleted file mode 100644
index d6825d0..0000000
--- a/assets/win11x64-iot.xml
+++ /dev/null
@@ -1,475 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
- 0
- 3
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- CGK42-GYN6Y-VD22B-BX98W-J8JXD
-
-
- false
-
- false
-
-
-
- 1
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f
-
-
- 3
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f
-
-
- 4
- reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f
-
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"
-
-
- 3
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f
-
-
- 4
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f
-
-
- 5
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 6
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 7
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f
-
-
- 8
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 9
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f
-
-
- 10
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f
-
-
- 11
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f
-
-
- 12
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f
-
-
- 13
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f
-
-
- 14
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f
-
-
- 15
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f
-
-
- 16
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f
-
-
- 17
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f
-
-
- 18
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 19
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 20
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 21
- reg.exe unload "HKU\mount"
-
-
- 22
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 23
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 24
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 25
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
- 26
- pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf
- Install VirtIO display driver
-
-
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 2
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f
- Disable SMB signing requirement
-
-
- 4
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 5
- powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1
- Password Never Expires
-
-
- 6
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 7
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
- reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f
- Disable unsupported hardware notifications
-
-
- 23
- reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f
- Disable unsupported hardware notifications
-
-
- 24
- cmd /C rd /q C:\Windows.old
- Remove empty Windows.old folder
-
-
- 25
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 26
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win11x64-ltsc.xml b/assets/win11x64-ltsc.xml
deleted file mode 100644
index a9a6ce7..0000000
--- a/assets/win11x64-ltsc.xml
+++ /dev/null
@@ -1,475 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
- 0
- 3
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- M7XTQ-FN8P6-TTKYV-9D4CC-J462D
-
-
- false
-
- false
-
-
-
- 1
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassTPMCheck /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassSecureBootCheck /t REG_DWORD /d 1 /f
-
-
- 3
- reg.exe add "HKLM\SYSTEM\Setup\LabConfig" /v BypassRAMCheck /t REG_DWORD /d 1 /f
-
-
- 4
- reg.exe add "HKLM\SYSTEM\Setup\MoSetup" /v AllowUpgradesWithUnsupportedTPMOrCPU /t REG_DWORD /d 1 /f
-
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE" /v BypassNRO /t REG_DWORD /d 1 /f
-
-
- 2
- reg.exe load "HKU\mount" "C:\Users\Default\NTUSER.DAT"
-
-
- 3
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "ContentDeliveryAllowed" /t REG_DWORD /d 0 /f
-
-
- 4
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "FeatureManagementEnabled" /t REG_DWORD /d 0 /f
-
-
- 5
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "OEMPreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 6
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 7
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "PreInstalledAppsEverEnabled" /t REG_DWORD /d 0 /f
-
-
- 8
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SilentInstalledAppsEnabled" /t REG_DWORD /d 0 /f
-
-
- 9
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SoftLandingEnabled" /t REG_DWORD /d 0 /f
-
-
- 10
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContentEnabled" /t REG_DWORD /d 0 /f
-
-
- 11
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-310093Enabled" /t REG_DWORD /d 0 /f
-
-
- 12
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338387Enabled" /t REG_DWORD /d 0 /f
-
-
- 13
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338388Enabled" /t REG_DWORD /d 0 /f
-
-
- 14
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338389Enabled" /t REG_DWORD /d 0 /f
-
-
- 15
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-338393Enabled" /t REG_DWORD /d 0 /f
-
-
- 16
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SubscribedContent-353698Enabled" /t REG_DWORD /d 0 /f
-
-
- 17
- reg.exe add "HKU\mount\Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager" /v "SystemPaneSuggestionsEnabled" /t REG_DWORD /d 0 /f
-
-
- 18
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 19
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 20
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 21
- reg.exe unload "HKU\mount"
-
-
- 22
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 23
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 24
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 25
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
- 26
- pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf
- Install VirtIO display driver
-
-
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 2
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f
- Disable SMB signing requirement
-
-
- 4
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 5
- powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1
- Password Never Expires
-
-
- 6
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 7
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
- reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f
- Disable unsupported hardware notifications
-
-
- 23
- reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f
- Disable unsupported hardware notifications
-
-
- 24
- cmd /C rd /q C:\Windows.old
- Remove empty Windows.old folder
-
-
- 25
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 26
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win11x64.xml b/assets/win11x64.xml
index 8082c7c..3fa19df 100644
--- a/assets/win11x64.xml
+++ b/assets/win11x64.xml
@@ -107,6 +107,49 @@
+
+
+
+ D:\viostor\w11\amd64
+
+
+ D:\NetKVM\w11\amd64
+
+
+ D:\Balloon\w11\amd64
+
+
+ D:\pvpanic\w11\amd64
+
+
+ D:\qemupciserial\w11\amd64
+
+
+ D:\qxldod\w11\amd64
+
+
+ D:\vioinput\w11\amd64
+
+
+ D:\viorng\w11\amd64
+
+
+ D:\vioscsi\w11\amd64
+
+
+ D:\vioserial\w11\amd64
+
+
+ D:\viogpudo\w11\amd64
+
+
+ D:\sriov\w11\amd64
+
+
+ D:\viofs\w11\amd64
+
+
+
@@ -236,41 +279,11 @@
18
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 19
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 20
- reg.exe add "HKU\mount\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 21
reg.exe unload "HKU\mount"
- 22
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableCloudOptimizedContent" /t REG_DWORD /d 1 /f
-
-
- 23
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 1 /f
-
-
- 24
- reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableConsumerAccountStateContent" /t REG_DWORD /d 1 /f
-
-
- 25
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
- 26
- pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf
- Install VirtIO display driver
+ 19
+ reg.exe add "HKLM\Software\Policies\Microsoft\Windows\CloudContent" /v "DisableWindowsConsumerFeatures" /t REG_DWORD /d 0 /f
@@ -284,8 +297,8 @@
true
+ Remote Desktop
all
- @FirewallAPI.dll,-28752
@@ -325,18 +338,13 @@
true
-
- 32
- 1920
- 1080
-
true
true
true
true
true
- Home
+ Other
3
true
true
@@ -351,38 +359,43 @@
2
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f
- Disable SMB signing requirement
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
- 4
+ 3
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
Enable option for passwordless sign-in
- 5
- powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1
+ 4
+ cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
Password Never Expires
- 6
+ 5
cmd /C POWERCFG -H OFF
Disable Hibernation
- 7
+ 6
cmd /C POWERCFG -X -monitor-timeout-ac 0
Disable monitor blanking
+
+ 7
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
+ Disable Network Discovery popup
+
8
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
+ Disable Network Discovery popup
9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
+ reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
+ Disable first-run experience in Edge
10
@@ -397,78 +410,18 @@
12
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
+ Disable Hibernation Mode
13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV1 /d 0 /t REG_DWORD /f
Disable unsupported hardware notifications
- 23
+ 14
reg.exe add "HKCU\Control Panel\UnsupportedHardwareNotificationCache" /v SV2 /d 0 /t REG_DWORD /f
Disable unsupported hardware notifications
-
-
- 24
- cmd /C rd /q C:\Windows.old
- Remove empty Windows.old folder
-
-
- 25
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 26
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
+
diff --git a/assets/win2008r2-eval.xml b/assets/win2008r2-eval.xml
deleted file mode 100644
index 09a23ce..0000000
--- a/assets/win2008r2-eval.xml
+++ /dev/null
@@ -1,304 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- 100
-
-
- 2
- Primary
- true
-
-
-
-
- NTFS
-
- 1
- true
- 1
- 0x27
-
-
- true
- NTFS
-
- C
- 2
- 2
-
-
-
-
-
-
-
-
- 1
- /IMAGE/INDEX
-
-
-
- 0
- 2
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- true
-
-
- true
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 10
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 11
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 13
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 14
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 15
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 16
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 17
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 18
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 19
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 20
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 21
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win2008r2.xml b/assets/win2008r2.xml
index 5dee0a5..275a8b9 100644
--- a/assets/win2008r2.xml
+++ b/assets/win2008r2.xml
@@ -75,15 +75,47 @@
true
Docker
Windows for Docker
-
- YC6KT-GKW9T-YTKYR-T4X34-R7VHC
-
+
false
false
+
+
+
+ D:\viostor\2k8R2\amd64
+
+
+ D:\NetKVM\2k8R2\amd64
+
+
+ D:\Balloon\2k8R2\amd64
+
+
+ D:\pvpanic\2k8R2\amd64
+
+
+ D:\qemupciserial\2k8R2\amd64
+
+
+ D:\qxldod\2k8R2\amd64
+
+
+ D:\vioinput\2k8R2\amd64
+
+
+ D:\viorng\2k8R2\amd64
+
+
+ D:\vioscsi\2k8R2\amd64
+
+
+ D:\vioserial\2k8R2\amd64
+
+
+
@@ -136,12 +168,6 @@
en-US
en-US
-
- true
-
-
- true
-
false
@@ -152,8 +178,8 @@
true
+ Remote Desktop
all
- @FirewallAPI.dll,-28752
@@ -185,15 +211,10 @@
true
-
- 32
- 1920
- 1080
-
true
true
- Home
+ Other
3
true
true
@@ -207,99 +228,59 @@
Allow guest access to network shares
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
+ 2
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
- 4
+ 3
cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
Password Never Expires
- 5
+ 4
cmd /C POWERCFG -H OFF
Disable Hibernation
- 6
+ 5
cmd /C POWERCFG -X -monitor-timeout-ac 0
Disable monitor blanking
- 7
+ 6
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
Disable Network Discovery popup
- 8
+ 7
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
Disable Network Discovery popup
- 9
+ 8
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
Disable Network Discovery popup
-
+
- 10
+ 9
reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
Disable first-run experience in Edge
- 11
+ 10
reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
Show file extensions in Explorer
- 12
+ 11
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
Zero Hibernation File
- 13
+ 12
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 14
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 15
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 16
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 17
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 18
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 19
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 20
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 21
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
+ Disable Hibernation Mode
diff --git a/assets/win2012r2-eval.xml b/assets/win2012r2-eval.xml
index 6351559..7b22e00 100644
--- a/assets/win2012r2-eval.xml
+++ b/assets/win2012r2-eval.xml
@@ -63,7 +63,7 @@
-
+
/image/index
2
@@ -88,12 +88,56 @@
true
Docker
Windows for Docker
+
false
false
+
+
+
+ D:\viostor\2k16\amd64
+
+
+ D:\NetKVM\2k16\amd64
+
+
+ D:\Balloon\2k16\amd64
+
+
+ D:\pvpanic\2k16\amd64
+
+
+ D:\qemupciserial\2k16\amd64
+
+
+ D:\qxldod\2k16\amd64
+
+
+ D:\vioinput\2k16\amd64
+
+
+ D:\viorng\2k16\amd64
+
+
+ D:\vioscsi\2k16\amd64
+
+
+ D:\vioserial\2k16\amd64
+
+
+ D:\viogpudo\2k16\amd64
+
+
+ D:\sriov\2k16\amd64
+
+
+ D:\viofs\2k16\amd64
+
+
+
@@ -148,15 +192,6 @@
en-US
en-US
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
true
@@ -173,8 +208,8 @@
true
+ Remote Desktop
all
- @FirewallAPI.dll,-28752
@@ -212,18 +247,13 @@
true
-
- 32
- 1920
- 1080
-
true
true
true
true
true
- Home
+ Other
3
true
true
@@ -236,6 +266,11 @@
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
Allow guest access to network shares
+
+ 2
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
+
3
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
@@ -258,68 +293,33 @@
7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
Disable Network Discovery popup
- 17
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
+ 8
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
+ Disable Network Discovery popup
- 18
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
+ 9
+ reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
+ Disable first-run experience in Edge
- 19
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
+ 10
+ reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
+ Show file extensions in Explorer
+
+
+ 11
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
+ Zero Hibernation File
+
+
+ 12
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
+ Disable Hibernation Mode
diff --git a/assets/win2012r2.xml b/assets/win2012r2.xml
deleted file mode 100644
index bb3dd70..0000000
--- a/assets/win2012r2.xml
+++ /dev/null
@@ -1,330 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
-
- /image/index
- 2
-
-
-
- 0
- 3
-
- OnError
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- D2N9P-3P6X9-2R39C-7RTCD-MDVJX
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
-
- true
-
-
- true
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 17
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 18
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 19
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win2016-eval.xml b/assets/win2016-eval.xml
index d788960..e2200a0 100644
--- a/assets/win2016-eval.xml
+++ b/assets/win2016-eval.xml
@@ -88,12 +88,56 @@
true
Docker
Windows for Docker
+
false
false
+
+
+
+ D:\viostor\2k16\amd64
+
+
+ D:\NetKVM\2k16\amd64
+
+
+ D:\Balloon\2k16\amd64
+
+
+ D:\pvpanic\2k16\amd64
+
+
+ D:\qemupciserial\2k16\amd64
+
+
+ D:\qxldod\2k16\amd64
+
+
+ D:\vioinput\2k16\amd64
+
+
+ D:\viorng\2k16\amd64
+
+
+ D:\vioscsi\2k16\amd64
+
+
+ D:\vioserial\2k16\amd64
+
+
+ D:\viogpudo\2k16\amd64
+
+
+ D:\sriov\2k16\amd64
+
+
+ D:\viofs\2k16\amd64
+
+
+
@@ -148,15 +192,6 @@
en-US
en-US
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
true
@@ -173,8 +208,8 @@
true
+ Remote Desktop
all
- @FirewallAPI.dll,-28752
@@ -212,18 +247,13 @@
true
-
- 32
- 1920
- 1080
-
true
true
true
true
true
- Home
+ Other
3
true
true
@@ -236,6 +266,11 @@
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
Allow guest access to network shares
+
+ 2
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
+
3
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
@@ -258,88 +293,33 @@
7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 18
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 19
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 20
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
Disable Network Discovery popup
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
+ 8
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
+ Disable Network Discovery popup
- 22
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
+ 9
+ reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
+ Disable first-run experience in Edge
- 23
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
+ 10
+ reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
+ Show file extensions in Explorer
+
+
+ 11
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
+ Zero Hibernation File
+
+
+ 12
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
+ Disable Hibernation Mode
diff --git a/assets/win2016.xml b/assets/win2016.xml
deleted file mode 100644
index e055e00..0000000
--- a/assets/win2016.xml
+++ /dev/null
@@ -1,350 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
-
- /IMAGE/NAME
- Windows Server 2016 SERVERSTANDARD
-
-
-
- 0
- 3
-
- OnError
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- WC2BQ-8NRM3-FDDYY-2BFGV-KHKQY
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
-
- true
-
-
- true
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 18
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 19
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 20
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 23
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win2019-eval.xml b/assets/win2019-eval.xml
index 332d974..b01d491 100644
--- a/assets/win2019-eval.xml
+++ b/assets/win2019-eval.xml
@@ -88,12 +88,56 @@
true
Docker
Windows for Docker
+
false
false
+
+
+
+ D:\viostor\2k19\amd64
+
+
+ D:\NetKVM\2k19\amd64
+
+
+ D:\Balloon\2k19\amd64
+
+
+ D:\pvpanic\2k19\amd64
+
+
+ D:\qemupciserial\2k19\amd64
+
+
+ D:\qxldod\2k19\amd64
+
+
+ D:\vioinput\2k19\amd64
+
+
+ D:\viorng\2k19\amd64
+
+
+ D:\vioscsi\2k19\amd64
+
+
+ D:\vioserial\2k19\amd64
+
+
+ D:\viogpudo\2k19\amd64
+
+
+ D:\sriov\2k19\amd64
+
+
+ D:\viofs\2k19\amd64
+
+
+
@@ -152,15 +196,6 @@
en-US
en-US
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
true
@@ -177,8 +212,8 @@
true
+ Remote Desktop
all
- @FirewallAPI.dll,-28752
@@ -216,18 +251,13 @@
true
-
- 32
- 1920
- 1080
-
true
true
true
true
true
- Home
+ Other
3
true
true
@@ -240,6 +270,11 @@
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
Allow guest access to network shares
+
+ 2
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
+
3
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
@@ -262,88 +297,33 @@
7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 18
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 19
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 20
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
Disable Network Discovery popup
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
+ 8
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
+ Disable Network Discovery popup
- 22
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
+ 9
+ reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
+ Disable first-run experience in Edge
- 23
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
+ 10
+ reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
+ Show file extensions in Explorer
+
+
+ 11
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
+ Zero Hibernation File
+
+
+ 12
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
+ Disable Hibernation Mode
diff --git a/assets/win2019-hv.xml b/assets/win2019-hv.xml
deleted file mode 100644
index 2fb6e32..0000000
--- a/assets/win2019-hv.xml
+++ /dev/null
@@ -1,356 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
-
- /IMAGE/NAME
- Hyper-V Server 2019 SERVERHYPERCORE
-
-
-
- 0
- 3
-
- OnError
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
- 2
- dism.exe /online /Disable-Feature /FeatureName:Microsoft-Hyper-V /NoRestart
- Disable Hyper-V role
-
-
-
-
- true
-
-
- true
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 18
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 19
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 20
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 23
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win2019.xml b/assets/win2019.xml
deleted file mode 100644
index b5d8235..0000000
--- a/assets/win2019.xml
+++ /dev/null
@@ -1,354 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
-
- /IMAGE/NAME
- Windows Server 2019 SERVERSTANDARD
-
-
-
- 0
- 3
-
- OnError
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- N69G4-B89J2-4G8F4-WWYCC-J464C
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
-
- true
-
-
- true
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 18
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 19
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 20
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 23
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win2022-eval.xml b/assets/win2022-eval.xml
index 5748cb4..3bfc483 100644
--- a/assets/win2022-eval.xml
+++ b/assets/win2022-eval.xml
@@ -88,12 +88,56 @@
true
Docker
Windows for Docker
+
false
false
+
+
+
+ D:\viostor\2k22\amd64
+
+
+ D:\NetKVM\2k22\amd64
+
+
+ D:\Balloon\2k22\amd64
+
+
+ D:\pvpanic\2k22\amd64
+
+
+ D:\qemupciserial\2k22\amd64
+
+
+ D:\qxldod\2k22\amd64
+
+
+ D:\vioinput\2k22\amd64
+
+
+ D:\viorng\2k22\amd64
+
+
+ D:\vioscsi\2k22\amd64
+
+
+ D:\vioserial\2k22\amd64
+
+
+ D:\viogpudo\2k22\amd64
+
+
+ D:\sriov\2k22\amd64
+
+
+ D:\viofs\2k22\amd64
+
+
+
@@ -152,15 +196,6 @@
en-US
en-US
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
true
@@ -177,8 +212,8 @@
true
+ Remote Desktop
all
- @FirewallAPI.dll,-28752
@@ -216,18 +251,13 @@
true
-
- 32
- 1920
- 1080
-
true
true
true
true
true
- Home
+ Other
3
true
true
@@ -240,6 +270,11 @@
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
Allow guest access to network shares
+
+ 2
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
+
3
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
@@ -262,88 +297,33 @@
7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 18
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 19
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 20
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
Disable Network Discovery popup
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
+ 8
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
+ Disable Network Discovery popup
- 22
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
+ 9
+ reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
+ Disable first-run experience in Edge
- 23
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
+ 10
+ reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
+ Show file extensions in Explorer
+
+
+ 11
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
+ Zero Hibernation File
+
+
+ 12
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
+ Disable Hibernation Mode
diff --git a/assets/win2022.xml b/assets/win2022.xml
deleted file mode 100644
index eac9414..0000000
--- a/assets/win2022.xml
+++ /dev/null
@@ -1,354 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
-
- /IMAGE/NAME
- Windows Server 2022 SERVERSTANDARD
-
-
-
- 0
- 3
-
- OnError
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- VDYBN-27WPP-V4HQT-9VMD4-VMK7H
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
-
- true
-
-
- true
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Search" /v "SearchboxTaskbarMode" /t REG_DWORD /d 0 /f
- Remove Search from the Taskbar
-
-
- 15
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 18
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 19
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 20
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 23
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win2025-eval.xml b/assets/win2025-eval.xml
deleted file mode 100644
index 5b92f00..0000000
--- a/assets/win2025-eval.xml
+++ /dev/null
@@ -1,361 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
-
- /IMAGE/NAME
- Windows Server 2025 SERVERSTANDARD
-
-
-
- 0
- 3
-
- OnError
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
- 2
- pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf
- Install VirtIO display driver
-
-
-
-
- true
-
-
- true
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 2
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f
- Disable SMB signing requirement
-
-
- 4
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 5
- powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1
- Password Never Expires
-
-
- 6
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 7
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
- cmd /C rd /q C:\Windows.old
- Remove empty Windows.old folder
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win2025.xml b/assets/win2025.xml
deleted file mode 100644
index 2796db6..0000000
--- a/assets/win2025.xml
+++ /dev/null
@@ -1,364 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
-
- /IMAGE/NAME
- Windows Server 2025 SERVERSTANDARD
-
-
-
- 0
- 3
-
- OnError
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- TVRH6-WHNXV-R9WG3-9XRFY-MY832
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
- 24/7
-
- Dockur
- https://github.com/dockur/windows/issues
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
- 2
- pnputil -i -a C:\Windows\Drivers\viogpudo\viogpudo.inf
- Install VirtIO display driver
-
-
-
-
- true
-
-
- true
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 2
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "RequireSecuritySignature" /t REG_DWORD /d 0 /f
- Disable SMB signing requirement
-
-
- 4
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 5
- powershell.exe -ExecutionPolicy Unrestricted -NoLogo -NoProfile -NonInteractive set-localuser -name "Docker" -passwordneverexpires 1
- Password Never Expires
-
-
- 6
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 7
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 9
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowCopilotButton" /t REG_DWORD /d 0 /f
- Hide Copilot button
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 16
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "ShowTaskViewButton" /t REG_DWORD /d 0 /f
- Remove Task View from the Taskbar
-
-
- 17
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarDa" /t REG_DWORD /d 0 /f
- Remove Widgets from the Taskbar
-
-
- 18
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "TaskbarMn" /t REG_DWORD /d 0 /f
- Remove Chat from the Taskbar
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 20
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 22
- cmd /C rd /q C:\Windows.old
- Remove empty Windows.old folder
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win7x64-enterprise-eval.xml b/assets/win7x64-enterprise-eval.xml
deleted file mode 100644
index c3cc15b..0000000
--- a/assets/win7x64-enterprise-eval.xml
+++ /dev/null
@@ -1,283 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- 100
-
-
- 2
- Primary
- true
-
-
-
-
- NTFS
-
- 1
- true
- 1
- 0x27
-
-
- true
- NTFS
-
- C
- 2
- 2
-
-
-
-
-
-
-
-
- Windows 7 Enterprise
- /IMAGE/NAME
-
-
-
- 0
- 2
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 17
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 18
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win7x64-enterprise.xml b/assets/win7x64-enterprise.xml
deleted file mode 100644
index b362a9f..0000000
--- a/assets/win7x64-enterprise.xml
+++ /dev/null
@@ -1,287 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- 100
-
-
- 2
- Primary
- true
-
-
-
-
- NTFS
-
- 1
- true
- 1
- 0x27
-
-
- true
- NTFS
-
- C
- 2
- 2
-
-
-
-
-
-
-
-
- Windows 7 Enterprise
- /IMAGE/NAME
-
-
-
- 0
- 2
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- H7X92-3VPBB-Q799D-Y6JJ3-86WC6
- OnError
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 17
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 18
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win7x64-ultimate.xml b/assets/win7x64-ultimate.xml
deleted file mode 100644
index 2ee085a..0000000
--- a/assets/win7x64-ultimate.xml
+++ /dev/null
@@ -1,287 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- 100
-
-
- 2
- Primary
- true
-
-
-
-
- NTFS
-
- 1
- true
- 1
- 0x27
-
-
- true
- NTFS
-
- C
- 2
- 2
-
-
-
-
-
-
-
-
- Windows 7 Ultimate
- /IMAGE/NAME
-
-
-
- 0
- 2
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- D4F6K-QK3RD-TMVMJ-BBMRX-3MBMV
- OnError
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 17
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 18
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win7x64.xml b/assets/win7x64.xml
index 3769dfd..e9050e5 100644
--- a/assets/win7x64.xml
+++ b/assets/win7x64.xml
@@ -52,8 +52,8 @@
- Windows 7 PROFESSIONAL
- /IMAGE/NAME
+ 1
+ /IMAGE/INDEX
@@ -76,7 +76,7 @@
Docker
Windows for Docker
- HYF8J-CVRMY-CM74G-RPHKF-PW487
+ H7X92-3VPBB-Q799D-Y6JJ3-86WC6
OnError
@@ -85,6 +85,40 @@
false
+
+
+
+ D:\viostor\w7\amd64
+
+
+ D:\NetKVM\w7\amd64
+
+
+ D:\Balloon\w7\amd64
+
+
+ D:\pvpanic\w7\amd64
+
+
+ D:\qemupciserial\w7\amd64
+
+
+ D:\qxldod\w8\amd64
+
+
+ D:\vioinput\w7\amd64
+
+
+ D:\viorng\w7\amd64
+
+
+ D:\vioscsi\w7\amd64
+
+
+ D:\vioserial\w7\amd64
+
+
+
@@ -147,8 +181,8 @@
true
+ Remote Desktop
all
- @FirewallAPI.dll,-28752
@@ -180,15 +214,10 @@
true
-
- 32
- 1920
- 1080
-
true
true
- Home
+ Other
3
true
true
@@ -201,6 +230,11 @@
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
Allow guest access to network shares
+
+ 2
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
+
3
cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
@@ -230,7 +264,7 @@
8
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
Disable Network Discovery popup
-
+
9
reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
@@ -249,37 +283,7 @@
12
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 17
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 18
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
+ Disable Hibernation Mode
diff --git a/assets/win7x86-enterprise.xml b/assets/win7x86-enterprise.xml
deleted file mode 100644
index 7ac8ef0..0000000
--- a/assets/win7x86-enterprise.xml
+++ /dev/null
@@ -1,287 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- 100
-
-
- 2
- Primary
- true
-
-
-
-
- NTFS
-
- 1
- true
- 1
- 0x27
-
-
- true
- NTFS
-
- C
- 2
- 2
-
-
-
-
-
-
-
-
- Windows 7 Enterprise
- /IMAGE/NAME
-
-
-
- 0
- 2
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- H7X92-3VPBB-Q799D-Y6JJ3-86WC6
- OnError
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 17
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 18
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win7x86-ultimate.xml b/assets/win7x86-ultimate.xml
deleted file mode 100644
index 419a508..0000000
--- a/assets/win7x86-ultimate.xml
+++ /dev/null
@@ -1,287 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- 100
-
-
- 2
- Primary
- true
-
-
-
-
- NTFS
-
- 1
- true
- 1
- 0x27
-
-
- true
- NTFS
-
- C
- 2
- 2
-
-
-
-
-
-
-
-
- Windows 7 Ultimate
- /IMAGE/NAME
-
-
-
- 0
- 2
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- D4F6K-QK3RD-TMVMJ-BBMRX-3MBMV
- OnError
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 17
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 18
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win7x86.xml b/assets/win7x86.xml
deleted file mode 100644
index bae5a8f..0000000
--- a/assets/win7x86.xml
+++ /dev/null
@@ -1,287 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- 100
-
-
- 2
- Primary
- true
-
-
-
-
- NTFS
-
- 1
- true
- 1
- 0x27
-
-
- true
- NTFS
-
- C
- 2
- 2
-
-
-
-
-
-
-
-
- Windows 7 PROFESSIONAL
- /IMAGE/NAME
-
-
-
- 0
- 2
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- HYF8J-CVRMY-CM74G-RPHKF-PW487
- OnError
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteAPP to launch unlisted programs
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 17
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 18
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win81x64-enterprise-eval.xml b/assets/win81x64-enterprise-eval.xml
deleted file mode 100644
index 745fd9d..0000000
--- a/assets/win81x64-enterprise-eval.xml
+++ /dev/null
@@ -1,312 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
- 0
- 3
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 17
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 18
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 19
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win81x64-enterprise.xml b/assets/win81x64-enterprise.xml
deleted file mode 100644
index a073c38..0000000
--- a/assets/win81x64-enterprise.xml
+++ /dev/null
@@ -1,315 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 0
- true
-
-
-
- 1
- EFI
- 128
-
-
-
- 2
- MSR
- 128
-
-
-
- 3
- Primary
- true
-
-
-
-
-
- 1
- 1
-
- FAT32
-
-
-
- 2
- 2
-
-
-
- 3
- 3
-
- C
- NTFS
-
-
-
-
-
-
-
- 0
- 3
-
- false
-
-
-
- true
- Never
-
-
- false
- Never
-
-
- true
- Docker
- Windows for Docker
-
- FHQNR-XYXYC-8PMHT-TV4PH-DRQ3H
-
-
- false
-
- false
-
-
-
-
-
- false
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
-
- Dockur
- Windows for Docker
-
- Windows for Docker
-
-
- 1
-
-
- true
- true
- https://google.com
- about:blank
-
-
- true
- true
- https://google.com
- about:blank
-
-
- 0
-
-
- 1
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
-
- false
-
-
- 0
-
-
-
-
- true
- all
- @FirewallAPI.dll,-28752
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- true
- true
- true
- true
- Home
- 3
- true
- true
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
- Enable option for passwordless sign-in
-
-
- 4
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 5
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 6
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 17
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 18
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 19
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/win81x64.xml b/assets/win81x64.xml
index 6b45785..f201a16 100644
--- a/assets/win81x64.xml
+++ b/assets/win81x64.xml
@@ -96,6 +96,49 @@
false
+
+
+
+ D:\viostor\w10\amd64
+
+
+ D:\NetKVM\w10\amd64
+
+
+ D:\Balloon\w10\amd64
+
+
+ D:\pvpanic\w10\amd64
+
+
+ D:\qemupciserial\w10\amd64
+
+
+ D:\qxldod\w10\amd64
+
+
+ D:\vioinput\w10\amd64
+
+
+ D:\viorng\w10\amd64
+
+
+ D:\vioscsi\w10\amd64
+
+
+ D:\vioserial\w10\amd64
+
+
+ D:\viogpudo\w10\amd64
+
+
+ D:\sriov\w10\amd64
+
+
+ D:\viofs\w10\amd64
+
+
+
@@ -149,15 +192,6 @@
en-US
en-US
-
-
-
- 1
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\FirstNetwork" /v Category /t REG_DWORD /d 1 /f
- Set Network Location to Home
-
-
-
false
@@ -168,8 +202,8 @@
true
+ Remote Desktop
all
- @FirewallAPI.dll,-28752
@@ -207,18 +241,13 @@
true
-
- 32
- 1920
- 1080
-
true
true
true
true
true
- Home
+ Other
3
true
true
@@ -231,6 +260,11 @@
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
Allow guest access to network shares
+
+ 2
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
+
3
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\PasswordLess\Device" /v "DevicePasswordLessBuildVersion" /t REG_DWORD /d 0 /f
@@ -253,68 +287,33 @@
7
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 8
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 9
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 10
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 11
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 12
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 13
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 14
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows\WindowsUpdate\AU" /v "NoAutoUpdate" /t REG_DWORD /d 1 /f
- Turn off Windows Update auto download
-
-
- 15
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 16
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
Disable Network Discovery popup
- 17
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
+ 8
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
+ Disable Network Discovery popup
- 18
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
+ 9
+ reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
+ Disable first-run experience in Edge
- 19
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
+ 10
+ reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
+ Show file extensions in Explorer
+
+
+ 11
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
+ Zero Hibernation File
+
+
+ 12
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
+ Disable Hibernation Mode
diff --git a/assets/winvistax64-enterprise.xml b/assets/winvistax64-enterprise.xml
deleted file mode 100644
index a3dac19..0000000
--- a/assets/winvistax64-enterprise.xml
+++ /dev/null
@@ -1,266 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- true
-
-
-
-
- true
- NTFS
-
- C
- 1
- 1
-
-
-
-
-
-
-
-
- Windows Vista Enterprise
- /IMAGE/NAME
-
-
-
- 0
- 1
-
- OnError
- false
-
-
-
- true
- Docker
- Windows for Docker
-
- VKK3X-68KWM-X2YGT-QR4M6-4BWMV
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
- VKK3X-68KWM-X2YGT-QR4M6-4BWMV
- Pacific Standard Time
-
- Dockur
- Windows for Docker
-
- Dockur
- Windows for Docker
-
-
- 1
-
-
- false
-
-
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- about:blank
-
-
- 0
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- Home
- 3
- true
- false
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes
- Add RDP in firewall
-
-
- 15
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
- Enable RDP
-
-
- 16
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f
- Turn off sidebar
-
-
- 17
- reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f
- Disable screensaver
-
-
- 18
- reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f
- Disable screensaver
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 20
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/winvistax64-ultimate.xml b/assets/winvistax64-ultimate.xml
deleted file mode 100644
index eb12e60..0000000
--- a/assets/winvistax64-ultimate.xml
+++ /dev/null
@@ -1,266 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- true
-
-
-
-
- true
- NTFS
-
- C
- 1
- 1
-
-
-
-
-
-
-
-
- Windows Vista Ultimate
- /IMAGE/NAME
-
-
-
- 0
- 1
-
- OnError
- false
-
-
-
- true
- Docker
- Windows for Docker
-
- VMCB9-FDRV6-6CDQM-RV23K-RP8F7
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
- VMCB9-FDRV6-6CDQM-RV23K-RP8F7
- Pacific Standard Time
-
- Dockur
- Windows for Docker
-
- Dockur
- Windows for Docker
-
-
- 1
-
-
- false
-
-
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- about:blank
-
-
- 0
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- Home
- 3
- true
- false
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes
- Add RDP in firewall
-
-
- 15
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
- Enable RDP
-
-
- 16
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f
- Turn off sidebar
-
-
- 17
- reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f
- Disable screensaver
-
-
- 18
- reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f
- Disable screensaver
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 20
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/winvistax64.xml b/assets/winvistax64.xml
index ad2ac70..06ceea7 100644
--- a/assets/winvistax64.xml
+++ b/assets/winvistax64.xml
@@ -20,17 +20,29 @@
1
Primary
+ 100
+
+
+ 2
+ Primary
true
+
+ NTFS
+
+ 1
+ true
+ 1
+
true
NTFS
C
- 1
- 1
+ 2
+ 2
@@ -39,13 +51,13 @@
- Windows Vista BUSINESS
+ Windows Vista Ultimate
/IMAGE/NAME
0
- 1
+ 2
OnError
false
@@ -56,10 +68,23 @@
Docker
Windows for Docker
- 4D2XH-PRBMM-8Q22B-K8BM3-MRW4W
+ VMCB9-FDRV6-6CDQM-RV23K-RP8F7
+
+
+
+ D:\viostor\2k8\amd64
+
+
+ D:\NetKVM\2k8\amd64
+
+
+ D:\vioscsi\2k8\amd64
+
+
+
@@ -75,7 +100,7 @@
*
- 4D2XH-PRBMM-8Q22B-K8BM3-MRW4W
+ VMCB9-FDRV6-6CDQM-RV23K-RP8F7
Pacific Standard Time
Dockur
@@ -94,7 +119,6 @@
0409:00000409
- en-US
en-US
en-US
@@ -130,14 +154,9 @@
true
-
- 32
- 1920
- 1080
-
true
- Home
+ Other
3
true
false
@@ -150,6 +169,11 @@
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
Allow guest access to network shares
+
+ 2
+ reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LimitBlankPasswordUse /t REG_DWORD /d 0 /f
+ Allow RDP login with blank password
+
3
cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
@@ -179,7 +203,7 @@
8
reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
Disable Network Discovery popup
-
+
9
reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
@@ -198,17 +222,17 @@
12
reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
+ Disable Hibernation Mode
13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
+ netsh.exe advfirewall firewall set rule group="Remote Desktop" new enable=Yes
+ Add RDP in firewall
14
- netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes
- Add RDP in firewall
+ netsh.exe Advfirewall set allprofiles state off
+ Disable firewall
15
@@ -222,44 +246,9 @@
17
- reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f
+ reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_DWORD /d 0 /f
Disable screensaver
-
- 18
- reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f
- Disable screensaver
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 20
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
diff --git a/assets/winvistax86-enterprise.xml b/assets/winvistax86-enterprise.xml
deleted file mode 100644
index 5092331..0000000
--- a/assets/winvistax86-enterprise.xml
+++ /dev/null
@@ -1,266 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- true
-
-
-
-
- true
- NTFS
-
- C
- 1
- 1
-
-
-
-
-
-
-
-
- Windows Vista Enterprise
- /IMAGE/NAME
-
-
-
- 0
- 1
-
- OnError
- false
-
-
-
- true
- Docker
- Windows for Docker
-
- VKK3X-68KWM-X2YGT-QR4M6-4BWMV
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
- VKK3X-68KWM-X2YGT-QR4M6-4BWMV
- Pacific Standard Time
-
- Dockur
- Windows for Docker
-
- Dockur
- Windows for Docker
-
-
- 1
-
-
- false
-
-
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- about:blank
-
-
- 0
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- Home
- 3
- true
- false
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes
- Add RDP in firewall
-
-
- 15
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
- Enable RDP
-
-
- 16
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f
- Turn off sidebar
-
-
- 17
- reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f
- Disable screensaver
-
-
- 18
- reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f
- Disable screensaver
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 20
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/winvistax86-ultimate.xml b/assets/winvistax86-ultimate.xml
deleted file mode 100644
index 97ad23e..0000000
--- a/assets/winvistax86-ultimate.xml
+++ /dev/null
@@ -1,266 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- true
-
-
-
-
- true
- NTFS
-
- C
- 1
- 1
-
-
-
-
-
-
-
-
- Windows Vista Ultimate
- /IMAGE/NAME
-
-
-
- 0
- 1
-
- OnError
- false
-
-
-
- true
- Docker
- Windows for Docker
-
- VMCB9-FDRV6-6CDQM-RV23K-RP8F7
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
- VMCB9-FDRV6-6CDQM-RV23K-RP8F7
- Pacific Standard Time
-
- Dockur
- Windows for Docker
-
- Dockur
- Windows for Docker
-
-
- 1
-
-
- false
-
-
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- about:blank
-
-
- 0
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- Home
- 3
- true
- false
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes
- Add RDP in firewall
-
-
- 15
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
- Enable RDP
-
-
- 16
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f
- Turn off sidebar
-
-
- 17
- reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f
- Disable screensaver
-
-
- 18
- reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f
- Disable screensaver
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 20
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/assets/winvistax86.xml b/assets/winvistax86.xml
deleted file mode 100644
index ade1942..0000000
--- a/assets/winvistax86.xml
+++ /dev/null
@@ -1,266 +0,0 @@
-
-
-
-
-
- en-US
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
-
- OnError
-
- 0
- true
-
-
- 1
- Primary
- true
-
-
-
-
- true
- NTFS
-
- C
- 1
- 1
-
-
-
-
-
-
-
-
- Windows Vista BUSINESS
- /IMAGE/NAME
-
-
-
- 0
- 1
-
- OnError
- false
-
-
-
- true
- Docker
- Windows for Docker
-
- 4D2XH-PRBMM-8Q22B-K8BM3-MRW4W
-
-
-
-
-
-
- true
-
-
- 1
-
-
-
-
- true
-
-
- *
- 4D2XH-PRBMM-8Q22B-K8BM3-MRW4W
- Pacific Standard Time
-
- Dockur
- Windows for Docker
-
- Dockur
- Windows for Docker
-
-
- 1
-
-
- false
-
-
-
-
- 0409:00000409
- en-US
- en-US
- en-US
-
-
- about:blank
-
-
- 0
-
-
-
-
-
- Docker
- Administrators
-
-
- true
-
-
-
-
- password
- true
-
-
-
- Docker
- true
- 65432
-
-
- true
-
-
-
- 32
- 1920
- 1080
-
-
- true
- Home
- 3
- true
- false
-
- Dockur
- Windows for Docker
-
-
- 1
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Services\LanmanWorkstation\Parameters" /v "AllowInsecureGuestAuth" /t REG_DWORD /d 1 /f
- Allow guest access to network shares
-
-
- 3
- cmd /C wmic useraccount where name="Docker" set PasswordExpires=false
- Password Never Expires
-
-
- 4
- cmd /C POWERCFG -H OFF
- Disable Hibernation
-
-
- 5
- cmd /C POWERCFG -X -monitor-timeout-ac 0
- Disable monitor blanking
-
-
- 6
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NewNetworkWindowOff" /f
- Disable Network Discovery popup
-
-
- 7
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Network\NetworkLocationWizard" /v "HideWizard" /t REG_DWORD /d 1 /f
- Disable Network Discovery popup
-
-
- 8
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\NewNetworks" /v NetworkList /t REG_MULTI_SZ /d "" /f
- Disable Network Discovery popup
-
-
- 9
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Edge" /v "HideFirstRunExperience" /t REG_DWORD /d 1 /f
- Disable first-run experience in Edge
-
-
- 10
- reg.exe add "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /v "HideFileExt" /t REG_DWORD /d 0 /f
- Show file extensions in Explorer
-
-
- 11
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateFileSizePercent" /t REG_DWORD /d 0 /f
- Zero Hibernation File
-
-
- 12
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Power" /v "HibernateEnabled" /t REG_DWORD /d 0 /f
- Disable Hibernation
-
-
- 13
- cmd /C POWERCFG -X -standby-timeout-ac 0
- Disable Sleep
-
-
- 14
- netsh.exe advfirewall firewall set rule group="@FirewallAPI.dll,-28752" new enable=Yes
- Add RDP in firewall
-
-
- 15
- reg.exe add "HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server" /v fDenyTSConnections /t REG_DWORD /d 0 /f
- Enable RDP
-
-
- 16
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Windows\Sidebar" /v "TurnOffSidebar" /t REG_DWORD /d 1 /f
- Turn off sidebar
-
-
- 17
- reg.exe add "HKCU\Control Panel\Desktop" /v "ScreenSaveActive" /t REG_SZ /d 0 /f
- Disable screensaver
-
-
- 18
- reg.exe add "HKCU\Control Panel\Desktop" /v SCRNSAVE.EXE /t REG_SZ /d C:\Windows\System32\scrnsavex.scr /f
- Disable screensaver
-
-
- 19
- reg.exe add "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\Terminal Services" /v "fAllowUnlistedRemotePrograms" /t REG_DWORD /d 1 /f
- Enable RemoteApp to launch unlisted programs
-
-
- 20
- reg.exe add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Terminal Server\TSAppAllowList" /v "fDisabledAllowList" /t REG_DWORD /d 1 /f
- Disable RemoteApp allowlist
-
-
- 21
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-32752" new enable=Yes
- Enable Network Discovery
-
-
- 22
- netsh advfirewall firewall set rule group="@FirewallAPI.dll,-28502" new enable=Yes
- Enable File Sharing
-
-
- 23
- cmd /C mklink /d %userprofile%\Desktop\Shared \\host.lan\Data
- Create desktop shortcut to shared folder
-
-
- 24
- cmd /C if exist "C:\OEM\install.bat" start "Install" "cmd /C C:\OEM\install.bat"
- Execute custom script from the OEM folder if exists
-
-
-
-
-
diff --git a/compose.yml b/docker-compose.yml
similarity index 71%
rename from compose.yml
rename to docker-compose.yml
index e5b6257..fc2fbf9 100644
--- a/compose.yml
+++ b/docker-compose.yml
@@ -1,19 +1,17 @@
+version: "3"
services:
windows:
image: dockurr/windows
container_name: windows
environment:
- VERSION: "11"
+ VERSION: "win11"
devices:
- /dev/kvm
- - /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
- volumes:
- - ./windows:/storage
- restart: always
stop_grace_period: 2m
+ restart: on-failure
diff --git a/kubernetes.yml b/kubernetes.yml
deleted file mode 100644
index fa8eef0..0000000
--- a/kubernetes.yml
+++ /dev/null
@@ -1,100 +0,0 @@
----
-apiVersion: v1
-kind: PersistentVolumeClaim
-metadata:
- name: windows-pvc
-spec:
- accessModes:
- - ReadWriteOnce
- resources:
- requests:
- storage: 64Gi
----
-apiVersion: apps/v1
-kind: Deployment
-metadata:
- name: windows
- labels:
- name: windows
-spec:
- replicas: 1
- selector:
- matchLabels:
- app: windows
- template:
- metadata:
- labels:
- app: windows
- spec:
- containers:
- - name: windows
- image: dockurr/windows
- env:
- - name: VERSION
- value: "11"
- - name: DISK_SIZE
- value: "64G"
- ports:
- - containerPort: 8006
- name: http
- protocol: TCP
- - containerPort: 3389
- name: rdp
- protocol: TCP
- - containerPort: 3389
- name: udp
- protocol: UDP
- - containerPort: 5900
- name: vnc
- protocol: TCP
- securityContext:
- capabilities:
- add:
- - NET_ADMIN
- privileged: true
- volumeMounts:
- - mountPath: /storage
- name: storage
- - mountPath: /dev/kvm
- name: dev-kvm
- - mountPath: /dev/net/tun
- name: dev-tun
- terminationGracePeriodSeconds: 120
- volumes:
- - name: storage
- persistentVolumeClaim:
- claimName: windows-pvc
- - hostPath:
- path: /dev/kvm
- name: dev-kvm
- - hostPath:
- path: /dev/net/tun
- type: CharDevice
- name: dev-tun
----
-apiVersion: v1
-kind: Service
-metadata:
- name: windows
-spec:
- internalTrafficPolicy: Cluster
- ports:
- - name: http
- port: 8006
- protocol: TCP
- targetPort: 8006
- - name: rdp
- port: 3389
- protocol: TCP
- targetPort: 3389
- - name: udp
- port: 3389
- protocol: UDP
- targetPort: 3389
- - name: vnc
- port: 5900
- protocol: TCP
- targetPort: 5900
- selector:
- app: windows
- type: ClusterIP
diff --git a/readme.md b/readme.md
index adbb6bf..68faa1e 100644
--- a/readme.md
+++ b/readme.md
@@ -7,76 +7,59 @@
[![Build]][build_url]
[![Version]][tag_url]
[![Size]][tag_url]
-[![Package]][pkg_url]
[![Pulls]][hub_url]
-Windows inside a Docker container.
+Windows in a Docker container.
-## Features ✨
+## Features
- ISO downloader
- KVM acceleration
- Web-based viewer
-## Video 📺
+## Video
[](https://www.youtube.com/watch?v=xhGYobuG508)
-## Usage 🐳
+## Usage
-##### Via Docker Compose:
+Via `docker-compose.yml`
```yaml
+version: "3"
services:
windows:
image: dockurr/windows
container_name: windows
environment:
- VERSION: "11"
+ VERSION: "win11"
devices:
- /dev/kvm
- - /dev/net/tun
cap_add:
- NET_ADMIN
ports:
- 8006:8006
- 3389:3389/tcp
- 3389:3389/udp
- volumes:
- - ./windows:/storage
- restart: always
stop_grace_period: 2m
+ restart: on-failure
```
-##### Via Docker CLI:
+Via `docker run`
```bash
-docker run -it --rm --name windows -e "VERSION=11" -p 8006:8006 --device=/dev/kvm --device=/dev/net/tun --cap-add NET_ADMIN -v "${PWD:-.}/windows:/storage" --stop-timeout 120 docker.io/dockurr/windows
+docker run -it --rm --name windows -p 8006:8006 --device=/dev/kvm --cap-add NET_ADMIN --stop-timeout 120 dockurr/windows
```
-##### Via Kubernetes:
+## FAQ
-```shell
-kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/master/kubernetes.yml
-```
-
-##### Via Github Codespaces:
-
-[](https://codespaces.new/dockur/windows)
-
-##### Via a graphical installer:
-
-[](https://winboat.app)
-
-## FAQ 💬
-
-### How do I use it?
+* ### How do I use it?
Very simple! These are the steps:
- - Start the container and connect to [port 8006](http://127.0.0.1:8006/) using your web browser.
+ - Start the container and connect to [port 8006](http://localhost:8006) using your web browser.
- Sit back and relax while the magic happens, the whole installation will be performed fully automatic.
@@ -84,56 +67,60 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
Enjoy your brand new machine, and don't forget to star this repo!
-### How do I select the Windows version?
+* ### How do I select the Windows version?
- By default, Windows 11 Pro will be installed. But you can add the `VERSION` environment variable to your compose file, in order to specify an alternative Windows version to be downloaded:
+ By default, Windows 11 will be installed. But you can add the `VERSION` environment variable to your compose file, in order to specify an alternative Windows version to be downloaded:
```yaml
environment:
- VERSION: "11"
+ VERSION: "win11"
```
Select from the values below:
- | **Value** | **Version** | **Size** |
- |---|---|---|
- | `11` | Windows 11 Pro | 7.2 GB |
- | `11l` | Windows 11 LTSC | 4.7 GB |
- | `11e` | Windows 11 Enterprise | 6.6 GB |
- ||||
- | `10` | Windows 10 Pro | 5.7 GB |
- | `10l` | Windows 10 LTSC | 4.6 GB |
- | `10e` | Windows 10 Enterprise | 5.2 GB |
- ||||
- | `8e` | Windows 8.1 Enterprise | 3.7 GB |
- | `7u` | Windows 7 Ultimate | 3.1 GB |
- | `vu` | Windows Vista Ultimate | 3.0 GB |
- | `xp` | Windows XP Professional | 0.6 GB |
- | `2k` | Windows 2000 Professional | 0.4 GB |
- ||||
- | `2025` | Windows Server 2025 | 6.7 GB |
- | `2022` | Windows Server 2022 | 6.0 GB |
- | `2019` | Windows Server 2019 | 5.3 GB |
- | `2016` | Windows Server 2016 | 6.5 GB |
- | `2012` | Windows Server 2012 | 4.3 GB |
- | `2008` | Windows Server 2008 | 3.0 GB |
- | `2003` | Windows Server 2003 | 0.6 GB |
+ | **Value** | **Description** | **Source** | **Transfer** | **Size** |
+ |---|---|---|---|---|
+ | `win11` | Windows 11 Pro | Microsoft | Fast | 6.4 GB |
+ | `win10` | Windows 10 Pro | Microsoft | Fast | 5.8 GB |
+ | `ltsc10` | Windows 10 LTSC | Microsoft | Fast | 4.6 GB |
+ | `win81` | Windows 8.1 Pro | Microsoft | Fast | 4.2 GB |
+ | `win7` | Windows 7 SP1 | Bob Pony | Medium | 3.0 GB |
+ | `vista` | Windows Vista SP2 | Bob Pony | Medium | 3.6 GB |
+ | `winxp` | Windows XP SP3 | Bob Pony | Medium | 0.6 GB |
+ ||||||
+ | `2022` | Windows Server 2022 | Microsoft | Fast | 4.7 GB |
+ | `2019` | Windows Server 2019 | Microsoft | Fast | 5.3 GB |
+ | `2016` | Windows Server 2016 | Microsoft | Fast | 6.5 GB |
+ | `2012` | Windows Server 2012 R2 | Microsoft | Fast | 4.3 GB |
+ | `2008` | Windows Server 2008 R2 | Microsoft | Fast | 3.0 GB |
+ ||||||
+ | `core11` | Tiny 11 Core | Archive.org | Slow | 2.1 GB |
+ | `tiny11` | Tiny 11 | Archive.org | Slow | 3.8 GB |
+ | `tiny10` | Tiny 10 | Archive.org | Slow | 3.6 GB |
-> [!TIP]
-> To install ARM64 versions of Windows use [dockur/windows-arm](https://github.com/dockur/windows-arm/).
+ To install ARM64 versions of Windows use [dockur/windows-arm](https://github.com/dockur/windows-arm/).
-### How do I change the storage location?
+* ### How do I connect using RDP?
- To change the storage location, include the following bind mount in your compose file:
+ The web-viewer is mainly meant to be used during installation, as its picture quality is low, and it has no audio or clipboard for example.
+
+ So for a better experience you can connect using any Microsoft Remote Desktop client to the IP of the container, using the username `docker` and by leaving the password empty.
+
+ There is a good RDP client for [Android](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx) available from the Play Store and one for [iOS](https://apps.apple.com/nl/app/microsoft-remote-desktop/id714464092?l=en-GB) in the Apple Store. For Linux you can use [FreeRDP](https://www.freerdp.com/) and on Windows just type `mstsc` in the search box.
+
+* ### How do I increase the amount of CPU or RAM?
+
+ By default, 2 CPU cores and 4 GB of RAM are allocated to the container, as those are the minimum requirements of Windows 11.
+
+ To increase this, add the following environment variables:
```yaml
- volumes:
- - ./windows:/storage
+ environment:
+ RAM_SIZE: "8G"
+ CPU_CORES: "4"
```
- Replace the example path `./windows` with the desired storage folder or named volume.
-
-### How do I change the size of the disk?
+* ### How do I change the size of the disk?
To expand the default size of 64 GB, add the `DISK_SIZE` setting to your compose file and set it to your preferred capacity:
@@ -142,120 +129,66 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
DISK_SIZE: "256G"
```
-> [!TIP]
-> This can also be used to resize the existing disk to a larger capacity without any data loss. However you will need to [manually extend the disk partition](https://learn.microsoft.com/en-us/windows-server/storage/disk-management/extend-a-basic-volume?tabs=disk-management) since the added disk space will appear as unallocated.
-
-### How do I share files with the host?
-
- After installation there will be a folder called `Shared` on your desktop, which can be used to exchange files with the host machine.
+ This can also be used to resize the existing disk to a larger capacity without any data loss.
- To select a folder on the host for this purpose, include the following bind mount in your compose file:
+* ### How do I change the storage location?
+
+ To change the storage location, include the following bind mount in your compose file:
```yaml
volumes:
- - ./example:/shared
+ - /var/win:/storage
```
- Replace the example path `./example` with your desired shared folder, which then will become visible as `Shared`.
+ Replace the example path `/var/win` with the desired storage folder.
-### How do I change the amount of CPU or RAM?
+* ### How do I share files with the host?
- By default, Windows will be allowed to use 2 CPU cores and 4 GB of RAM.
+ Open File Explorer and click on the Network section, you will see a computer called `host.lan`, double-click it and it will show a folder called `Data`.
- If you want to adjust this, you can specify the desired amount using the following environment variables:
+ Inside this folder you can access any files that are placed in `/storage/shared` (see above) on the host.
- ```yaml
- environment:
- RAM_SIZE: "8G"
- CPU_CORES: "4"
- ```
+* ### How do I install a custom image?
-### How do I configure the username and password?
-
- By default, a user called `Docker` is created and its password is `admin`.
-
- If you want to use different credentials during installation, you can configure them in your compose file:
-
- ```yaml
- environment:
- USERNAME: "bill"
- PASSWORD: "gates"
- ```
-
-### How do I select the Windows language?
-
- By default, the English version of Windows will be downloaded.
-
- But you can add the `LANGUAGE` environment variable to your compose file, in order to specify an alternative language to be downloaded:
-
- ```yaml
- environment:
- LANGUAGE: "French"
- ```
-
- You can choose between: 🇦🇪 Arabic, 🇧🇬 Bulgarian, 🇨🇳 Chinese, 🇭🇷 Croatian, 🇨🇿 Czech, 🇩🇰 Danish, 🇳🇱 Dutch, 🇬🇧 English, 🇪🇪 Estonian, 🇫🇮 Finnish, 🇫🇷 French, 🇩🇪 German, 🇬🇷 Greek, 🇮🇱 Hebrew, 🇭🇺 Hungarian, 🇮🇹 Italian, 🇯🇵 Japanese, 🇰🇷 Korean, 🇱🇻 Latvian, 🇱🇹 Lithuanian, 🇳🇴 Norwegian, 🇵🇱 Polish, 🇵🇹 Portuguese, 🇷🇴 Romanian, 🇷🇺 Russian, 🇷🇸 Serbian, 🇸🇰 Slovak, 🇸🇮 Slovenian, 🇪🇸 Spanish, 🇸🇪 Swedish, 🇹🇭 Thai, 🇹🇷 Turkish and 🇺🇦 Ukrainian.
-
-### How do I select the keyboard layout?
-
- If you want to use a keyboard layout or locale that is not the default for your selected language, you can add `KEYBOARD` and `REGION` variables like this:
-
- ```yaml
- environment:
- REGION: "en-US"
- KEYBOARD: "en-US"
- ```
-
-### How do I install a custom image?
-
- In order to download an unsupported ISO image, specify its URL in the `VERSION` environment variable:
+ In order to download a custom ISO image, start a clean container with the URL of the ISO specified in the `VERSION` environment variable:
```yaml
environment:
VERSION: "https://example.com/win.iso"
```
- Alternatively, you can also skip the download and use a local file instead, by binding it in your compose file in this way:
-
- ```yaml
- volumes:
- - ./example.iso:/boot.iso
- ```
+ Alternatively, you can also rename a local file to `custom.iso` and place it in an empty `/storage` folder to skip the download.
- Replace the example path `./example.iso` with the filename of your desired ISO file. The value of `VERSION` will be ignored in this case.
+* ### How do I perform a manual installation?
-### How do I run a script after installation?
+ It's best to use the automatic installation, as it optimizes various settings for use with this container.
- To run your own script after installation, you can create a file called `install.bat` and place it in a folder together with any additional files it needs (software to be installed for example).
-
- Then bind that folder in your compose file like this:
-
- ```yaml
- volumes:
- - ./example:/oem
- ```
-
- The example folder `./example` will be copied to `C:\OEM` and the containing `install.bat` will be executed during the last step of the automatic installation.
-
-### How do I perform a manual installation?
-
- It's recommended to stick to the automatic installation, as it adjusts various settings to prevent common issues when running Windows inside a virtual environment.
-
- However, if you insist on performing the installation manually at your own risk, add the following environment variable to your compose file:
+ However, if you insist on performing the installation manually, start a clean container with the following environment variable:
```yaml
environment:
MANUAL: "Y"
```
-### How do I connect using RDP?
+ Then follow these steps:
- The web-viewer is mainly meant to be used during installation, as its picture quality is low, and it has no audio or clipboard for example.
+ - Start the container and connect to [port 8006](http://localhost:8006) of the container in your web browser. After the download is finished, you will see the Windows installation screen.
- So for a better experience you can connect using any Microsoft Remote Desktop client to the IP of the container, using the username `Docker` and password `admin`.
+ - Start the installation by clicking `Install now`. On the next screen, press 'OK' when prompted to `Load driver` and select the `VirtIO SCSI` driver from the list that matches your Windows version. So for Windows 11, select `D:\amd64\w11\vioscsi.inf` and click 'Next'.
- There is a RDP client for [Android](https://play.google.com/store/apps/details?id=com.microsoft.rdc.androidx) available from the Play Store and one for [iOS](https://apps.apple.com/nl/app/microsoft-remote-desktop/id714464092?l=en-GB) in the Apple Store. For Linux you can use [FreeRDP](https://www.freerdp.com/) and on Windows just type `mstsc` in the search box.
+ - Accept the license agreement and select your preferred Windows edition, like Home or Pro.
-### How do I assign an individual IP address to the container?
+ - Choose `Custom: Install Windows only (advanced)`, and click `Load driver` on the next screen. Select 'Browse' and navigate to the `D:\NetKVM\w11\amd64` folder, and click 'OK'. Select the `VirtIO Ethernet Adapter` from the list and click 'Next'.
+
+ - Select `Drive 0` and click 'Next'.
+
+ - Wait until Windows finishes copying files and completes the installation.
+
+ - Once you see the desktop, open File Explorer and navigate to the CD-ROM drive (E:). Double-click on `virtio-win-gt-x64.msi` and proceed to install the VirtIO drivers.
+
+ Enjoy your brand new machine, and don't forget to star this repo!
+
+* ### 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.
@@ -289,14 +222,13 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
An added benefit of this approach is that you won't have to perform any port mapping anymore, since all ports will be exposed by default.
-> [!IMPORTANT]
-> This IP address won't be accessible from the Docker host due to the design of macvlan, which doesn't permit communication between the two. If this is a concern, you need to create a [second macvlan](https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks/#host-access) as a workaround.
+ Please note that this IP address won't be accessible from the Docker host due to the design of macvlan, which doesn't permit communication between the two. If this is a concern, you need to create a [second macvlan](https://blog.oddbit.com/post/2018-03-12-using-docker-macvlan-networks/#host-access) as a workaround.
-### How can Windows acquire an IP address from my router?
+* ### How can Windows acquire an IP address from my router?
- After configuring the container for [macvlan](#how-do-i-assign-an-individual-ip-address-to-the-container), it is possible for Windows to become part of your home network by requesting an IP from your router, just like a real PC.
+ After configuring the container for macvlan (see above), it is possible for Windows to become part of your home network by requesting an IP from your router, just like a real PC.
- To enable this mode, in which the container and Windows will have separate IP addresses, add the following lines to your compose file:
+ To enable this mode, add the following lines to your compose file:
```yaml
environment:
@@ -307,32 +239,24 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
- 'c *:* rwm'
```
-### How do I add multiple disks?
-
- To create additional disks, modify your compose file like this:
+ Please note that in this mode, the container and Windows will each have their own separate IPs. The container will keep the macvlan IP, and Windows will use the DHCP IP.
+* ### How do I pass-through a disk?
+
+ It is possible to pass-through disk devices directly by adding them to your compose file in this way:
+
```yaml
environment:
- DISK2_SIZE: "32G"
- DISK3_SIZE: "64G"
- volumes:
- - ./example2:/storage2
- - ./example3:/storage3
- ```
-
-### How do I pass-through a disk?
-
- It is possible to pass-through disk devices or partitions directly by adding them to your compose file in this way:
-
- ```yaml
+ DEVICE: "/dev/sda"
+ DEVICE2: "/dev/sdb"
devices:
- - /dev/sdb:/disk1
- - /dev/sdc1:/disk2
+ - /dev/sda
+ - /dev/sdb
```
- Use `/disk1` if you want it to become your main drive (which will be formatted during installation), and use `/disk2` and higher to add them as secondary drives (which will stay untouched).
+ Use `DEVICE` if you want it to become your main drive, and use `DEVICE2` and higher to add them as secondary drives.
-### How do I pass-through a USB device?
+* ### How do I pass-through a USB device?
To pass-through a USB device, first lookup its vendor and product id via the `lsusb` command, then add them to your compose file like this:
@@ -342,60 +266,34 @@ kubectl apply -f https://raw.githubusercontent.com/dockur/windows/refs/heads/mas
devices:
- /dev/bus/usb
```
+
+* ### How do I verify if my system supports KVM?
- If the device is a USB disk drive, please wait until after the installation is fully completed before connecting it. Otherwise the installation may fail, as the order of the disks can get rearranged.
-
-### How do I verify if my system supports KVM?
-
- First check if your software is compatible using this chart:
-
- | **Product** | **Linux** | **Win11** | **Win10** | **macOS** |
- |---|---|---|---|---|
- | Docker CLI | ✅ | ✅ | ❌ | ❌ |
- | Docker Desktop | ❌ | ✅ | ❌ | ❌ |
- | Podman CLI | ✅ | ✅ | ❌ | ❌ |
- | Podman Desktop | ✅ | ✅ | ❌ | ❌ |
-
- After that you can run the following commands in Linux to check your system:
+ To verify if your system supports KVM, run the following commands:
```bash
sudo apt install cpu-checker
sudo kvm-ok
```
- If you receive an error from `kvm-ok` indicating that KVM cannot be used, please check whether:
+ If you receive an error from `kvm-ok` indicating that KVM acceleration can't be used, check the virtualization settings in the BIOS.
- - the virtualization extensions (`Intel VT-x` or `AMD SVM`) are enabled in your BIOS.
+* ### Is this project legal?
- - you enabled "nested virtualization" if you are running the container inside a virtual machine.
+ Yes, this project contains only open-source code and does not distribute any copyrighted material. Any product keys found in the code are just generic placeholders provided by Microsoft for trial purposes. So under all applicable laws, this project would be considered legal.
- - you are not using a cloud provider, as most of them do not allow nested virtualization for their VPS's.
+## Stars
+[](https://starchart.cc/dockur/windows)
- If you did not receive any error from `kvm-ok` but the container still complains about a missing KVM device, it could help to add `privileged: true` to your compose file (or `sudo` to your `docker` command) to rule out any permission issue.
+## Disclaimer
-### How do I run macOS in a container?
-
- You can use [dockur/macos](https://github.com/dockur/macos) for that. It shares many of the same features, except for the automatic installation.
-
-### How do I run a Linux desktop in a container?
-
- You can use [qemus/qemu](https://github.com/qemus/qemu) in that case.
-
-### Is this project legal?
-
- Yes, this project contains only open-source code and does not distribute any copyrighted material. Any product keys found in the code are just generic placeholders provided by Microsoft for trial purposes. So under all applicable laws, this project will be considered legal.
-
-## Disclaimer ⚖️
-
-*The product names, logos, brands, and other trademarks referred to within this project are the property of their respective trademark holders. This project is not affiliated, sponsored, or endorsed by Microsoft Corporation.*
+The product names, logos, brands, and other trademarks referred to within this project are the property of their respective trademark holders. This project is not affiliated, sponsored, or endorsed by Microsoft Corporation.
[build_url]: https://github.com/dockur/windows/
[hub_url]: https://hub.docker.com/r/dockurr/windows/
[tag_url]: https://hub.docker.com/r/dockurr/windows/tags
-[pkg_url]: https://github.com/dockur/windows/pkgs/container/windows
[Build]: https://github.com/dockur/windows/actions/workflows/build.yml/badge.svg
[Size]: https://img.shields.io/docker/image-size/dockurr/windows/latest?color=066da5&label=size
[Pulls]: https://img.shields.io/docker/pulls/dockurr/windows.svg?style=flat&label=pulls&logo=docker
[Version]: https://img.shields.io/docker/v/dockurr/windows/latest?arch=amd64&sort=semver&color=066da5
-[Package]: https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fipitio.github.io%2Fbackage%2Fdockur%2Fwindows%2Fwindows.json&query=%24.downloads&logo=github&style=flat&color=066da5&label=pulls
diff --git a/src/define.sh b/src/define.sh
deleted file mode 100644
index 3db2069..0000000
--- a/src/define.sh
+++ /dev/null
@@ -1,1944 +0,0 @@
-#!/usr/bin/env bash
-set -Eeuo pipefail
-
-: "${KEY:=""}"
-: "${WIDTH:=""}"
-: "${HEIGHT:=""}"
-: "${VERIFY:=""}"
-: "${REGION:=""}"
-: "${EDITION:=""}"
-: "${MANUAL:=""}"
-: "${REMOVE:=""}"
-: "${VERSION:=""}"
-: "${DETECTED:=""}"
-: "${KEYBOARD:=""}"
-: "${LANGUAGE:=""}"
-: "${USERNAME:=""}"
-: "${PASSWORD:=""}"
-
-MIRRORS=4
-
-parseVersion() {
-
- if [[ "${VERSION}" == \"*\" || "${VERSION}" == \'*\' ]]; then
- VERSION="${VERSION:1:-1}"
- fi
-
- VERSION=$(expr "$VERSION" : "^\ *\(.*[^ ]\)\ *$")
- [ -z "$VERSION" ] && VERSION="win11"
-
- case "${VERSION,,}" in
- "11" | "11p" | "win11" | "pro11" | "win11p" | "windows11" | "windows 11" )
- VERSION="win11x64"
- ;;
- "11e" | "win11e" | "windows11e" | "windows 11e" )
- VERSION="win11x64-enterprise-eval"
- ;;
- "11i" | "11iot" | "iot11" | "win11i" | "win11-iot" | "win11x64-iot" )
- VERSION="win11x64-enterprise-iot-eval"
- [ -z "$DETECTED" ] && DETECTED="win11x64-iot"
- ;;
- "11l" | "11ltsc" | "ltsc11" | "win11l" | "win11-ltsc" | "win11x64-ltsc" )
- VERSION="win11x64-enterprise-ltsc-eval"
- [ -z "$DETECTED" ] && DETECTED="win11x64-ltsc"
- ;;
- "10" | "10p" | "win10" | "pro10" | "win10p" | "windows10" | "windows 10" )
- VERSION="win10x64"
- ;;
- "10e" | "win10e" | "windows10e" | "windows 10e" )
- VERSION="win10x64-enterprise-eval"
- ;;
- "10i" | "10iot" | "iot10" | "win10i" | "win10-iot" | "win10x64-iot" )
- VERSION="win10x64-enterprise-iot-eval"
- [ -z "$DETECTED" ] && DETECTED="win10x64-iot"
- ;;
- "10l" | "10ltsc" | "ltsc10" | "win10l" | "win10-ltsc" | "win10x64-ltsc" )
- VERSION="win10x64-enterprise-ltsc-eval"
- [ -z "$DETECTED" ] && DETECTED="win10x64-ltsc"
- ;;
- "8" | "8p" | "81" | "81p" | "pro8" | "8.1" | "win8" | "win8p" | "win81" | "win81p" | "windows 8" )
- VERSION="win81x64"
- ;;
- "8e" | "81e" | "8.1e" | "win8e" | "win81e" | "windows 8e" )
- VERSION="win81x64-enterprise-eval"
- ;;
- "7" | "win7" | "windows7" | "windows 7" )
- VERSION="win7x64"
- [ -z "$DETECTED" ] && DETECTED="win7x64-ultimate"
- ;;
- "7u" | "win7u" | "windows7u" | "windows 7u" )
- VERSION="win7x64-ultimate"
- ;;
- "7e" | "win7e" | "windows7e" | "windows 7e" )
- VERSION="win7x64-enterprise"
- ;;
- "7x86" | "win7x86" | "win732" | "windows7x86" )
- VERSION="win7x86"
- [ -z "$DETECTED" ] && DETECTED="win7x86-ultimate"
- ;;
- "7ux86" | "7u32" | "win7x86-ultimate" )
- VERSION="win7x86-ultimate"
- ;;
- "7ex86" | "7e32" | "win7x86-enterprise" )
- VERSION="win7x86-enterprise"
- ;;
- "vista" | "vs" | "6" | "winvista" | "windowsvista" | "windows vista" )
- VERSION="winvistax64"
- [ -z "$DETECTED" ] && DETECTED="winvistax64-ultimate"
- ;;
- "vistu" | "vu" | "6u" | "winvistu" )
- VERSION="winvistax64-ultimate"
- ;;
- "viste" | "ve" | "6e" | "winviste" )
- VERSION="winvistax64-enterprise"
- ;;
- "vistax86" | "vista32" | "6x86" | "winvistax86" | "windowsvistax86" )
- VERSION="winvistax86"
- [ -z "$DETECTED" ] && DETECTED="winvistax86-ultimate"
- ;;
- "vux86" | "vu32" | "winvistax86-ultimate" )
- VERSION="winvistax86-ultimate"
- ;;
- "vex86" | "ve32" | "winvistax86-enterprise" )
- VERSION="winvistax86-enterprise"
- ;;
- "xp" | "xp32" | "xpx86" | "5" | "5x86" | "winxp" | "winxp86" | "windowsxp" | "windows xp" )
- VERSION="winxpx86"
- ;;
- "xp64" | "xpx64" | "5x64" | "winxp64" | "winxpx64" | "windowsxp64" | "windowsxpx64" )
- VERSION="winxpx64"
- ;;
- "2k" | "2000" | "win2k" | "win2000" | "windows2k" | "windows2000" )
- VERSION="win2kx86"
- ;;
- "25" | "2025" | "win25" | "win2025" | "windows2025" | "windows 2025" )
- VERSION="win2025-eval"
- ;;
- "22" | "2022" | "win22" | "win2022" | "windows2022" | "windows 2022" )
- VERSION="win2022-eval"
- ;;
- "19" | "2019" | "win19" | "win2019" | "windows2019" | "windows 2019" )
- VERSION="win2019-eval"
- ;;
- "16" | "2016" | "win16" | "win2016" | "windows2016" | "windows 2016" )
- VERSION="win2016-eval"
- ;;
- "hv" | "hyperv" | "hyper v" | "hyper-v" | "19hv" | "2019hv" | "win2019hv" )
- VERSION="win2019-hv"
- ;;
- "2012" | "2012r2" | "win2012" | "win2012r2" | "windows2012" | "windows 2012" )
- VERSION="win2012r2-eval"
- ;;
- "2008" | "2008r2" | "win2008" | "win2008r2" | "windows2008" | "windows 2008" )
- VERSION="win2008r2"
- ;;
- "2003" | "2003r2" | "win2003" | "win2003r2" | "windows2003" | "windows 2003" )
- VERSION="win2003r2"
- ;;
- "nano11" | "nano 11" )
- VERSION="nano11"
- [ -z "$DETECTED" ] && DETECTED="win11x64"
- ;;
- "core11" | "core 11" )
- VERSION="core11"
- [ -z "$DETECTED" ] && DETECTED="win11x64"
- ;;
- "tiny11" | "tiny 11" )
- VERSION="tiny11"
- [ -z "$DETECTED" ] && DETECTED="win11x64"
- ;;
- "tiny10" | "tiny 10" )
- VERSION="tiny10"
- [ -z "$DETECTED" ] && DETECTED="win10x64-ltsc"
- ;;
- esac
-
- return 0
-}
-
-getLanguage() {
-
- local id="$1"
- local ret="$2"
- local lang=""
- local desc=""
- local short=""
- local culture=""
-
- case "${id,,}" in
- "ar" | "ar-"* )
- short="ar"
- lang="Arabic"
- desc="$lang"
- culture="ar-SA" ;;
- "bg" | "bg-"* )
- short="bg"
- lang="Bulgarian"
- desc="$lang"
- culture="bg-BG" ;;
- "cs" | "cs-"* | "cz" | "cz-"* )
- short="cs"
- lang="Czech"
- desc="$lang"
- culture="cs-CZ" ;;
- "da" | "da-"* | "dk" | "dk-"* )
- short="da"
- lang="Danish"
- desc="$lang"
- culture="da-DK" ;;
- "de" | "de-"* )
- short="de"
- lang="German"
- desc="$lang"
- culture="de-DE" ;;
- "el" | "el-"* | "gr" | "gr-"* )
- short="el"
- lang="Greek"
- desc="$lang"
- culture="el-GR" ;;
- "gb" | "en-gb" )
- short="en-gb"
- lang="English International"
- desc="English"
- culture="en-GB" ;;
- "en" | "en-"* )
- short="en"
- lang="English"
- desc="English"
- culture="en-US" ;;
- "mx" | "es-mx" )
- short="mx"
- lang="Spanish (Mexico)"
- desc="Spanish"
- culture="es-MX" ;;
- "es" | "es-"* )
- short="es"
- lang="Spanish"
- desc="$lang"
- culture="es-ES" ;;
- "et" | "et-"* )
- short="et"
- lang="Estonian"
- desc="$lang"
- culture="et-EE" ;;
- "fi" | "fi-"* )
- short="fi"
- lang="Finnish"
- desc="$lang"
- culture="fi-FI" ;;
- "ca" | "fr-ca" )
- short="ca"
- lang="French Canadian"
- desc="French"
- culture="fr-CA" ;;
- "fr" | "fr-"* )
- short="fr"
- lang="French"
- desc="$lang"
- culture="fr-FR" ;;
- "he" | "he-"* | "il" | "il-"* )
- short="he"
- lang="Hebrew"
- desc="$lang"
- culture="he-IL" ;;
- "hr" | "hr-"* | "cr" | "cr-"* )
- short="hr"
- lang="Croatian"
- desc="$lang"
- culture="hr-HR" ;;
- "hu" | "hu-"* )
- short="hu"
- lang="Hungarian"
- desc="$lang"
- culture="hu-HU" ;;
- "it" | "it-"* )
- short="it"
- lang="Italian"
- desc="$lang"
- culture="it-IT" ;;
- "ja" | "ja-"* | "jp" | "jp-"* )
- short="ja"
- lang="Japanese"
- desc="$lang"
- culture="ja-JP" ;;
- "ko" | "ko-"* | "kr" | "kr-"* )
- short="ko"
- lang="Korean"
- desc="$lang"
- culture="ko-KR" ;;
- "lt" | "lt-"* )
- short="lt"
- lang="Lithuanian"
- desc="$lang"
- culture="lt-LT" ;;
- "lv" | "lv-"* )
- short="lv"
- lang="Latvian"
- desc="$lang"
- culture="lv-LV" ;;
- "nb" | "nb-"* |"nn" | "nn-"* | "no" | "no-"* )
- short="no"
- lang="Norwegian"
- desc="$lang"
- culture="nb-NO" ;;
- "nl" | "nl-"* )
- short="nl"
- lang="Dutch"
- desc="$lang"
- culture="nl-NL" ;;
- "pl" | "pl-"* )
- short="pl"
- lang="Polish"
- desc="$lang"
- culture="pl-PL" ;;
- "br" | "pt-br" )
- short="pt"
- lang="Brazilian Portuguese"
- desc="Portuguese"
- culture="pt-BR" ;;
- "pt" | "pt-"* )
- short="pp"
- lang="Portuguese"
- desc="$lang"
- culture="pt-BR" ;;
- "ro" | "ro-"* )
- short="ro"
- lang="Romanian"
- desc="$lang"
- culture="ro-RO" ;;
- "ru" | "ru-"* )
- short="ru"
- lang="Russian"
- desc="$lang"
- culture="ru-RU" ;;
- "sk" | "sk-"* )
- short="sk"
- lang="Slovak"
- desc="$lang"
- culture="sk-SK" ;;
- "sl" | "sl-"* | "si" | "si-"* )
- short="sl"
- lang="Slovenian"
- desc="$lang"
- culture="sl-SI" ;;
- "sr" | "sr-"* )
- short="sr"
- lang="Serbian Latin"
- desc="Serbian"
- culture="sr-Latn-RS" ;;
- "sv" | "sv-"* | "se" | "se-"* )
- short="sv"
- lang="Swedish"
- desc="$lang"
- culture="sv-SE" ;;
- "th" | "th-"* )
- short="th"
- lang="Thai"
- desc="$lang"
- culture="th-TH" ;;
- "tr" | "tr-"* )
- short="tr"
- lang="Turkish"
- desc="$lang"
- culture="tr-TR" ;;
- "ua" | "ua-"* | "uk" | "uk-"* )
- short="uk"
- lang="Ukrainian"
- desc="$lang"
- culture="uk-UA" ;;
- "hk" | "zh-hk" | "cn-hk" )
- short="hk"
- lang="Chinese (Traditional)"
- desc="Chinese HK"
- culture="zh-TW" ;;
- "tw" | "zh-tw" | "cn-tw" )
- short="tw"
- lang="Chinese (Traditional)"
- desc="Chinese TW"
- culture="zh-TW" ;;
- "zh" | "zh-"* | "cn" | "cn-"* )
- short="cn"
- lang="Chinese (Simplified)"
- desc="Chinese"
- culture="zh-CN" ;;
- esac
-
- case "${ret,,}" in
- "desc" ) echo "$desc" ;;
- "name" ) echo "$lang" ;;
- "code" ) echo "$short" ;;
- "culture" ) echo "$culture" ;;
- *) echo "$desc";;
- esac
-
- return 0
-}
-
-parseLanguage() {
-
- REGION="${REGION//_/-/}"
- KEYBOARD="${KEYBOARD//_/-/}"
- LANGUAGE="${LANGUAGE//_/-/}"
-
- [ -z "$LANGUAGE" ] && LANGUAGE="en"
-
- case "${LANGUAGE,,}" in
- "arabic" | "arab" ) LANGUAGE="ar" ;;
- "bulgarian" | "bu" ) LANGUAGE="bg" ;;
- "chinese" | "cn" ) LANGUAGE="zh" ;;
- "croatian" | "cr" | "hrvatski" ) LANGUAGE="hr" ;;
- "czech" | "cz" | "cesky" ) LANGUAGE="cs" ;;
- "danish" | "dk" | "danske" ) LANGUAGE="da" ;;
- "dutch" | "nederlands" ) LANGUAGE="nl" ;;
- "english" | "gb" | "british" ) LANGUAGE="en" ;;
- "estonian" | "eesti" ) LANGUAGE="et" ;;
- "finnish" | "suomi" ) LANGUAGE="fi" ;;
- "french" | "français" | "francais" ) LANGUAGE="fr" ;;
- "german" | "deutsch" ) LANGUAGE="de" ;;
- "greek" | "gr" ) LANGUAGE="el" ;;
- "hebrew" | "il" ) LANGUAGE="he" ;;
- "hungarian" | "magyar" ) LANGUAGE="hu" ;;
- "italian" | "italiano" ) LANGUAGE="it" ;;
- "japanese" | "jp" ) LANGUAGE="ja" ;;
- "korean" | "kr" ) LANGUAGE="ko" ;;
- "latvian" | "latvijas" ) LANGUAGE="lv" ;;
- "lithuanian" | "lietuvos" ) LANGUAGE="lt" ;;
- "norwegian" | "no" | "nb" | "norsk" ) LANGUAGE="nn" ;;
- "polish" | "polski" ) LANGUAGE="pl" ;;
- "portuguese" | "pt" | "br" ) LANGUAGE="pt-br" ;;
- "português" | "portugues" ) LANGUAGE="pt-br" ;;
- "romanian" | "română" | "romana" ) LANGUAGE="ro" ;;
- "russian" | "ruski" ) LANGUAGE="ru" ;;
- "serbian" | "serbian latin" ) LANGUAGE="sr" ;;
- "slovak" | "slovenský" | "slovensky" ) LANGUAGE="sk" ;;
- "slovenian" | "si" | "slovenski" ) LANGUAGE="sl" ;;
- "spanish" | "espanol" | "español" ) LANGUAGE="es" ;;
- "swedish" | "se" | "svenska" ) LANGUAGE="sv" ;;
- "turkish" | "türk" | "turk" ) LANGUAGE="tr" ;;
- "thai" ) LANGUAGE="th" ;;
- "ukrainian" | "ua" ) LANGUAGE="uk" ;;
- esac
-
- local culture
- culture=$(getLanguage "$LANGUAGE" "culture")
- [ -n "$culture" ] && return 0
-
- error "Invalid LANGUAGE specified, value \"$LANGUAGE\" is not recognized!"
- return 1
-}
-
-printVersion() {
-
- local id="$1"
- local desc="$2"
-
- case "${id,,}" in
- "tiny11"* ) desc="Tiny 11" ;;
- "tiny10"* ) desc="Tiny 10" ;;
- "core11"* ) desc="Core 11" ;;
- "nano11"* ) desc="Nano 11" ;;
- "win7"* ) desc="Windows 7" ;;
- "win8"* ) desc="Windows 8" ;;
- "win10"* ) desc="Windows 10" ;;
- "win11"* ) desc="Windows 11" ;;
- "winxp"* ) desc="Windows XP" ;;
- "win9x"* ) desc="Windows ME" ;;
- "win98"* ) desc="Windows 98" ;;
- "win95"* ) desc="Windows 95" ;;
- "win2k"* ) desc="Windows 2000" ;;
- "winvista"* ) desc="Windows Vista" ;;
- "win2019-hv"* ) desc="Hyper-V Server" ;;
- "win2003"* ) desc="Windows Server 2003" ;;
- "win2008"* ) desc="Windows Server 2008" ;;
- "win2012"* ) desc="Windows Server 2012" ;;
- "win2016"* ) desc="Windows Server 2016" ;;
- "win2019"* ) desc="Windows Server 2019" ;;
- "win2022"* ) desc="Windows Server 2022" ;;
- "win2025"* ) desc="Windows Server 2025" ;;
- esac
-
- if [ -z "$desc" ]; then
- desc="Windows"
- [[ "${PLATFORM,,}" != "x64" ]] && desc+=" for ${PLATFORM}"
- fi
-
- echo "$desc"
- return 0
-}
-
-printEdition() {
-
- local id="$1"
- local desc="$2"
- local result=""
- local edition=""
-
- result=$(printVersion "$id" "x")
- [[ "$result" == "x" ]] && echo "$desc" && return 0
-
- case "${id,,}" in
- *"-home" )
- edition="Home"
- ;;
- *"-starter" )
- edition="Starter"
- ;;
- *"-ultimate" )
- edition="Ultimate"
- ;;
- *"-enterprise" )
- edition="Enterprise"
- ;;
- *"-education" )
- edition="Education"
- ;;
- *"-hv" )
- edition="2019"
- ;;
- *"-iot" | *"-iot-eval" )
- edition="LTSC"
- ;;
- *"-ltsc" | *"-ltsc-eval" )
- edition="LTSC"
- ;;
- *"-enterprise-eval" )
- edition="Enterprise (Evaluation)"
- ;;
- "win7"* )
- edition="Professional"
- ;;
- "win8"* | "win10"* | "win11"* )
- edition="Pro"
- ;;
- "winxp"* )
- edition="Professional"
- ;;
- "winvista"* )
- edition="Business"
- ;;
- "win2025"* | "win2022"* | "win2019"* | "win2016"* | "win2012"* | "win2008"* | "win2003"* )
- case "${EDITION^^}" in
- *"DATACENTER"* ) edition="Datacenter" ;;
- "CORE" | "STANDARDCORE" ) edition="Core" ;;
- * ) edition="Standard" ;;
- esac
- ;;
- esac
-
- [ -n "$edition" ] && result+=" $edition"
-
- echo "$result"
- return 0
-}
-
-fromFile() {
-
- local id=""
- local desc="$1"
- local file="${1,,}"
- local arch="${PLATFORM,,}"
-
- file="${file//-/_}"
- file="${file// /_}"
-
- case "$file" in
- *"_x64_"* | *"_x64."*)
- arch="x64"
- ;;
- *"_x86_"* | *"_x86."*)
- arch="x86"
- ;;
- *"_arm64_"* | *"_arm64."*)
- arch="arm64"
- ;;
- esac
-
- local add=""
- [[ "$arch" != "x64" ]] && add="$arch"
-
- case "$file" in
- "win7"* | "win_7"* | *"windows7"* | *"windows_7"* )
- id="win7${arch}"
- ;;
- "win8"* | "win_8"* | *"windows8"* | *"windows_8"* )
- id="win81${arch}"
- ;;
- "win10"*| "win_10"* | *"windows10"* | *"windows_10"* )
- id="win10${arch}"
- ;;
- "win11"* | "win_11"* | *"windows11"* | *"windows_11"* )
- id="win11${arch}"
- ;;
- *"winxp"* | *"win_xp"* | *"windowsxp"* | *"windows_xp"* )
- id="winxpx86"
- ;;
- *"winvista"* | *"win_vista"* | *"windowsvista"* | *"windows_vista"* )
- id="winvista${arch}"
- ;;
- "nano11"* | "nano_11"* )
- id="nano11"
- ;;
- "tiny11core"* | "tiny11_core"* | "tiny_11_core"* )
- id="core11"
- ;;
- "tiny11"* | "tiny_11"* )
- id="tiny11"
- ;;
- "tiny10"* | "tiny_10"* )
- id="tiny10"
- ;;
- *"_serverhypercore_"* )
- id="win2019${add}-hv"
- ;;
- *"server2025"* | *"server_2025"* )
- id="win2025${add}"
- ;;
- *"server2022"* | *"server_2022"* )
- id="win2022${add}"
- ;;
- *"server2019"* | *"server_2019"* )
- id="win2019${add}"
- ;;
- *"server2016"* | *"server_2016"* )
- id="win2016${add}"
- ;;
- *"server2012"* | *"server_2012"* )
- id="win2012r2${add}"
- ;;
- *"server2008"* | *"server_2008"* )
- id="win2008r2${add}"
- ;;
- *"server2003"* | *"server_2003"* )
- id="win2003r2${add}"
- ;;
- esac
-
- if [ -n "$id" ]; then
- desc=$(printVersion "$id" "$desc")
- fi
-
- echo "$desc"
- return 0
-}
-
-fromName() {
-
- local id=""
- local name="$1"
- local arch="$2"
-
- local add=""
- [[ "$arch" != "x64" ]] && add="$arch"
-
- case "${name,,}" in
- *"windows 7"* ) id="win7${arch}" ;;
- *"windows 8"* ) id="win81${arch}" ;;
- *"windows 10"* ) id="win10${arch}" ;;
- *"optimum 10"* ) id="win10${arch}" ;;
- *"windows 11"* ) id="win11${arch}" ;;
- *"optimum 11"* ) id="win11${arch}" ;;
- *"windows vista"* ) id="winvista${arch}" ;;
- *"server 2025"* ) id="win2025${add}" ;;
- *"server 2022"* ) id="win2022${add}" ;;
- *"server 2019"* ) id="win2019${add}" ;;
- *"server 2016"* ) id="win2016${add}" ;;
- *"server 2012"* ) id="win2012r2${add}" ;;
- *"server 2008"* ) id="win2008r2${add}" ;;
- *"server 2003"* ) id="win2003r2${add}" ;;
- *"hyper-v server"* ) id="win2019${add}" ;;
- esac
-
- echo "$id"
- return 0
-}
-
-getVersion() {
-
- local id
- local name="$1"
- local arch="$2"
-
- id=$(fromName "$name" "$arch")
-
- case "${id,,}" in
- "win7"* | "winvista"* )
- case "${name,,}" in
- *" home"* ) id="$id-home" ;;
- *" starter"* ) id="$id-starter" ;;
- *" ultimate"* ) id="$id-ultimate" ;;
- *" enterprise evaluation"* ) id="$id-enterprise-eval" ;;
- *" enterprise"* ) id="$id-enterprise" ;;
- esac
- ;;
- "win8"* )
- case "${name,,}" in
- *" enterprise evaluation"* ) id="$id-enterprise-eval" ;;
- *" enterprise"* ) id="$id-enterprise" ;;
- esac
- ;;
- "win10"* | "win11"* )
- case "${name,,}" in
- *" iot"* ) id="$id-iot" ;;
- *" ltsc"* ) id="$id-ltsc" ;;
- *" home"* ) id="$id-home" ;;
- *" education"* ) id="$id-education" ;;
- *" enterprise evaluation"* ) id="$id-enterprise-eval" ;;
- *" enterprise"* ) id="$id-enterprise" ;;
- esac
- ;;
- "win2025"* | "win2022"* | "win2019"* | "win2016"* | "win2012"* | "win2008"* | "win2003"* )
- case "${name,,}" in
- *" evaluation"* ) id="$id-eval" ;;
- *"hyper-v server"* ) id="$id-hv" ;;
- esac
- ;;
- esac
-
- echo "$id"
- return 0
-}
-
-switchEdition() {
-
- local id="$1"
-
- if [[ "${id,,}" == *"-eval" ]]; then
- [ -z "$DETECTED" ] && DETECTED="${id::-5}"
- fi
-
- return 0
-}
-
-getMido() {
-
- local id="$1"
- local lang="$2"
- local ret="$3"
- local url=""
- local sum=""
- local size=""
-
- [[ "${lang,,}" != "en" && "${lang,,}" != "en-us" ]] && return 0
-
- case "${id,,}" in
- "win11x64" )
- size=7736125440
- sum="d141f6030fed50f75e2b03e1eb2e53646c4b21e5386047cb860af5223f102a32"
- url="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26200.6584.250915-1905.25h2_ge_release_svc_refresh_CLIENT_CONSUMER_x64FRE_en-us.iso"
- ;;
- "win11x64-enterprise-eval" )
- size=7092807680
- sum="a61adeab895ef5a4db436e0a7011c92a2ff17bb0357f58b13bbc4062e535e7b9"
- url="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26200.6584.250915-1905.25h2_ge_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso"
- ;;
- "win11x64-enterprise-iot-eval" | "win11x64-enterprise-ltsc-eval" )
- size=5060020224
- sum="2cee70bd183df42b92a2e0da08cc2bb7a2a9ce3a3841955a012c0f77aeb3cb29"
- url="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26100.1.240331-1435.ge_release_CLIENT_IOT_LTSC_EVAL_x64FRE_en-us.iso"
- ;;
- "win10x64" )
- size=6140975104
- sum="a6f470ca6d331eb353b815c043e327a347f594f37ff525f17764738fe812852e"
- ;;
- "win10x64-enterprise-eval" )
- size=5550497792
- sum="ef7312733a9f5d7d51cfa04ac497671995674ca5e1058d5164d6028f0938d668"
- url="https://software-static.download.prss.microsoft.com/dbazure/988969d5-f34g-4e03-ac9d-1f9786c66750/19045.2006.220908-0225.22h2_release_svc_refresh_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso"
- ;;
- "win10x64-enterprise-ltsc-eval" )
- size=4898582528
- sum="e4ab2e3535be5748252a8d5d57539a6e59be8d6726345ee10e7afd2cb89fefb5"
- url="https://software-download.microsoft.com/download/pr/19044.1288.211006-0501.21h2_release_svc_refresh_CLIENT_LTSC_EVAL_x64FRE_en-us.iso"
- ;;
- "win81x64-enterprise-eval" )
- size=3961473024
- sum="2dedd44c45646c74efc5a028f65336027e14a56f76686a4631cf94ffe37c72f2"
- url="https://download.microsoft.com/download/B/9/9/B999286E-0A47-406D-8B3D-5B5AD7373A4A/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_ENTERPRISE_EVAL_EN-US-IR3_CENA_X64FREE_EN-US_DV9.ISO"
- ;;
- "win2025-eval" )
- size=6014152704
- sum="d0ef4502e350e3c6c53c15b1b3020d38a5ded011bf04998e950720ac8579b23d"
- url="https://software-static.download.prss.microsoft.com/dbazure/888969d5-f34g-4e03-ac9d-1f9786c66749/26100.1742.240906-0331.ge_release_svc_refresh_SERVER_EVAL_x64FRE_en-us.iso"
- ;;
- "win2022-eval" )
- size=5044094976
- sum="3e4fa6d8507b554856fc9ca6079cc402df11a8b79344871669f0251535255325"
- url="https://software-static.download.prss.microsoft.com/sg/download/888969d5-f34g-4e03-ac9d-1f9786c66749/SERVER_EVAL_x64FRE_en-us.iso"
- ;;
- "win2019-eval" )
- size=5652088832
- sum="6dae072e7f78f4ccab74a45341de0d6e2d45c39be25f1f5920a2ab4f51d7bcbb"
- url="https://software-download.microsoft.com/download/pr/17763.737.190906-2324.rs5_release_svc_refresh_SERVER_EVAL_x64FRE_en-us_1.iso"
- ;;
- "win2019-hv" )
- size=3072712704
- sum="48e9b944518e5bbc80876a9a7ff99716f386f404f4be48dca47e16a66ae7872c"
- url="https://software-download.microsoft.com/download/pr/17763.557.190612-0019.rs5_release_svc_refresh_SERVERHYPERCORE_OEM_x64FRE_en-us.ISO"
- ;;
- "win2016-eval" )
- size=6972221440
- sum="1ce702a578a3cb1ac3d14873980838590f06d5b7101c5daaccbac9d73f1fb50f"
- url="https://software-download.microsoft.com/download/pr/Windows_Server_2016_Datacenter_EVAL_en-us_14393_refresh.ISO"
- ;;
- "win2012r2-eval" )
- size=4542291968
- sum="6612b5b1f53e845aacdf96e974bb119a3d9b4dcb5b82e65804ab7e534dc7b4d5"
- url="https://download.microsoft.com/download/6/2/A/62A76ABB-9990-4EFC-A4FE-C7D698DAEB96/9600.17050.WINBLUE_REFRESH.140317-1640_X64FRE_SERVER_EVAL_EN-US-IR3_SSS_X64FREE_EN-US_DV9.ISO"
- ;;
- "win2008r2" )
- size=3166840832
- sum="30832ad76ccfa4ce48ccb936edefe02079d42fb1da32201bf9e3a880c8ed6312"
- url="https://download.microsoft.com/download/4/1/D/41DEA7E0-B30D-4012-A1E3-F24DC03BA1BB/7601.17514.101119-1850_x64fre_server_eval_en-us-GRMSXEVAL_EN_DVD.iso"
- ;;
- esac
-
- case "${ret,,}" in
- "sum" ) echo "$sum" ;;
- "size" ) echo "$size" ;;
- *) echo "$url";;
- esac
-
- return 0
-}
-
-getLink1() {
-
- # Fallbacks for users who cannot connect to the Microsoft servers
-
- local id="$1"
- local lang="$2"
- local ret="$3"
- local url=""
- local sum=""
- local size=""
- local host="https://dl.bobpony.com/windows"
-
- [[ "${lang,,}" != "en" && "${lang,,}" != "en-us" ]] && return 0
-
- case "${id,,}" in
- "win11x64" | "win11x64-enterprise" | "win11x64-enterprise-eval" )
- size=5332989952
- sum="aa1ad990f930d907b7a34ea897abbb0dfbe47552ca8acc146f92e40381839e05"
- url="11/en-us_windows_11_24h2_x64.iso"
- ;;
- "win11x64-iot" | "win11x64-enterprise-iot" | "win11x64-enterprise-iot-eval" )
- size=5144817664
- sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a"
- url="11/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso"
- ;;
- "win11x64-ltsc" | "win11x64-enterprise-ltsc" | "win11x64-enterprise-ltsc-eval" )
- size=5144817664
- sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a"
- url="11/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso"
- ;;
- "win10x64" | "win10x64-enterprise" | "win10x64-enterprise-eval" )
- size=5535252480
- sum="557871965263d0fd0a1ea50b5d0d0d7cb04a279148ca905c1c675c9bc0d5486c"
- url="10/en-us_windows_10_22h2_x64.iso"
- ;;
- "win10x64-iot" | "win10x64-enterprise-iot" | "win10x64-enterprise-iot-eval" )
- size=4851668992
- sum="a0334f31ea7a3e6932b9ad7206608248f0bd40698bfb8fc65f14fc5e4976c160"
- url="10/en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso"
- ;;
- "win10x64-ltsc" | "win10x64-enterprise-ltsc" | "win10x64-enterprise-ltsc-eval" )
- size=4899461120
- sum="c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d"
- url="10/en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96.iso"
- ;;
- "win81x64" )
- size=4320526336
- sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51"
- url="8.x/8.1/en_windows_8.1_with_update_x64_dvd_6051480.iso"
- ;;
- "win81x64-enterprise" | "win81x64-enterprise-eval" )
- size=4139163648
- sum="c3c604c03677504e8905090a8ce5bb1dde76b6fd58e10f32e3a25bef21b2abe1"
- url="8.x/8.1/en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso"
- ;;
- "win2025" | "win2025-eval" )
- size=6786627584
- sum="bf3ef0849c7cb5e818e1035b7466d206af5aa227ace1a3f4b0de2bf00d2e2144"
- url="server/2025/en-us_windows_server_2025_updated_april_2025_x64_dvd_ea86301d.iso"
- ;;
- "win2022" | "win2022-eval" )
- size=6005706752
- sum="cea2cb2c09de9910c236e64eae3a801c55e9c77ec25e8d81585e3a4581d24bfb"
- url="server/2022/en-us_windows_server_2022_updated_april_2025_x64_dvd_3f755ec1.iso"
- ;;
- "win2019" | "win2019-eval" )
- size=5575774208
- sum="0067afe7fdc4e61f677bd8c35a209082aa917df9c117527fc4b2b52a447e89bb"
- url="server/2019/en-us_windows_server_2019_updated_aug_2021_x64_dvd_a6431a28.iso"
- ;;
- "win2016" | "win2016-eval" )
- size=6006587392
- sum="af06e5483c786c023123e325cea4775050324d9e1366f46850b515ae43f764be"
- url="server/2016/en_windows_server_2016_updated_feb_2018_x64_dvd_11636692.iso"
- ;;
- "win2012r2" | "win2012r2-eval" )
- size=5397889024
- sum="f351e89eb88a96af4626ceb3450248b8573e3ed5924a4e19ea891e6003b62e4e"
- url="server/2012r2/en_windows_server_2012_r2_with_update_x64_dvd_6052708-004.iso"
- ;;
- "win2008r2" | "win2008r2-eval" )
- size=3166584832
- sum="dfd9890881b7e832a927c38310fb415b7ea62ac5a896671f2ce2a111998f0df8"
- url="server/2008r2/en_windows_server_2008_r2_with_sp1_x64_dvd_617601-018.iso"
- ;;
- "win7x64" | "win7x64-ultimate" )
- size=3320836096
- sum="0b738b55a5ea388ad016535a5c8234daf2e5715a0638488ddd8a228a836055a1"
- url="7/en_windows_7_with_sp1_x64.iso"
- ;;
- "win7x64-enterprise" | "win7x64-enterprise-eval" )
- size=3182604288
- sum="ee69f3e9b86ff973f632db8e01700c5724ef78420b175d25bae6ead90f6805a7"
- url="7/en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.iso"
- ;;
- "win7x86" | "win7x86-ultimate" )
- size=2564411392
- sum="99f3369c90160816be07093dbb0ac053e0a84e52d6ed1395c92ae208ccdf67e5"
- url="7/en_windows_7_with_sp1_x86.iso"
- ;;
- "win7x86-enterprise" | "win7x86-enterprise-eval" )
- size=2434502656
- sum="8bdd46ff8cb8b8de9c4aba02706629c8983c45e87da110e64e13be17c8434dad"
- url="7/en_windows_7_enterprise_with_sp1_x86_dvd_u_677710.iso"
- ;;
- "winvistax64" | "winvistax64-ultimate" )
- size=3861460992
- sum="edf9f947c5791469fd7d2d40a5dcce663efa754f91847aa1d28ed7f585675b78"
- url="vista/en_windows_vista_sp2_x64_dvd_342267.iso"
- ;;
- "winvistax86" | "winvistax86-ultimate" )
- size=3243413504
- sum="9c36fed4255bd05a8506b2da88f9aad73643395e155e609398aacd2b5276289c"
- url="vista/en_windows_vista_with_sp2_x86_dvd_342266.iso"
- ;;
- "win2003r2" )
- size=731650535
- sum="6b64bbae7eb00fd000cc887ffdc9f224d00c557daad7f756cfa373950b880dc8"
- url="server/2003r2/en_win_srv_2003_r2_standard_x64_with_sp2_cd1_cd2.zip"
- ;;
- "winxpx86" )
- size=617756672
- sum="62b6c91563bad6cd12a352aa018627c314cfc5162d8e9f8af0756a642e602a46"
- url="xp/professional/en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso"
- ;;
- "winxpx64" )
- size=614166528
- sum="8fac68e1e56c64ad9a2aa0ad464560282e67fa4f4dd51d09a66f4e548eb0f2d6"
- url="xp/professional/en_win_xp_pro_x64_vl.iso"
- ;;
- "win2kx86" )
- size=331701982
- sum="a93251b31f92316411bb48458a695d9051b13cdeba714c46f105012fdda45bf3"
- url="2000/5.00.2195.6717_x86fre_client-professional_retail_en-us.7z"
- ;;
- esac
-
- case "${ret,,}" in
- "sum" ) echo "$sum" ;;
- "size" ) echo "$size" ;;
- *) [ -n "$url" ] && echo "$host/$url";;
- esac
-
- return 0
-}
-
-getLink2() {
-
- local id="$1"
- local lang="$2"
- local ret="$3"
- local url=""
- local sum=""
- local size=""
- local host="https://files.dog/MSDN"
-
- [[ "${lang,,}" != "en" && "${lang,,}" != "en-us" ]] && return 0
-
- case "${id,,}" in
- "win81x64" )
- size=4320526336
- sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51"
- url="Windows%208.1%20with%20Update/en_windows_8.1_with_update_x64_dvd_6051480.iso"
- ;;
- "win81x64-enterprise" | "win81x64-enterprise-eval" )
- size=4139163648
- sum="c3c604c03677504e8905090a8ce5bb1dde76b6fd58e10f32e3a25bef21b2abe1"
- url="Windows%208.1%20with%20Update/en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso"
- ;;
- "win2012r2" | "win2012r2-eval" )
- size=5397889024
- sum="f351e89eb88a96af4626ceb3450248b8573e3ed5924a4e19ea891e6003b62e4e"
- url="Windows%20Server%202012%20R2%20with%20Update/en_windows_server_2012_r2_with_update_x64_dvd_6052708.iso"
- ;;
- "win2008r2" | "win2008r2-eval" )
- size=3166584832
- sum="dfd9890881b7e832a927c38310fb415b7ea62ac5a896671f2ce2a111998f0df8"
- url="Windows%20Server%202008%20R2/en_windows_server_2008_r2_with_sp1_x64_dvd_617601.iso"
- ;;
- "win7x64" | "win7x64-ultimate" )
- size=3320903680
- sum="36f4fa2416d0982697ab106e3a72d2e120dbcdb6cc54fd3906d06120d0653808"
- url="Windows%207/en_windows_7_ultimate_with_sp1_x64_dvd_u_677332.iso"
- ;;
- "win7x64-enterprise" | "win7x64-enterprise-eval" )
- size=3182604288
- sum="ee69f3e9b86ff973f632db8e01700c5724ef78420b175d25bae6ead90f6805a7"
- url="Windows%207/en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.iso"
- ;;
- "win7x86" | "win7x86-ultimate" )
- size=2564476928
- sum="e2c009a66d63a742941f5087acae1aa438dcbe87010bddd53884b1af6b22c940"
- url="Windows%207/en_windows_7_ultimate_with_sp1_x86_dvd_u_677460.iso"
- ;;
- "win7x86-enterprise" | "win7x86-enterprise-eval" )
- size=2434502656
- sum="8bdd46ff8cb8b8de9c4aba02706629c8983c45e87da110e64e13be17c8434dad"
- url="Windows%207/en_windows_7_enterprise_with_sp1_x86_dvd_u_677710.iso"
- ;;
- "winvistax64" | "winvistax64-ultimate" )
- size=3861460992
- sum="edf9f947c5791469fd7d2d40a5dcce663efa754f91847aa1d28ed7f585675b78"
- url="Windows%20Vista/en_windows_vista_sp2_x64_dvd_342267.iso"
- ;;
- "winvistax64-enterprise" )
- size=3205953536
- sum="0a0cd511b3eac95c6f081419c9c65b12317b9d6a8d9707f89d646c910e788016"
- url="Windows%20Vista/en_windows_vista_enterprise_sp2_x64_dvd_342332.iso"
- ;;
- "winvistax86" | "winvistax86-ultimate" )
- size=3243413504
- sum="9c36fed4255bd05a8506b2da88f9aad73643395e155e609398aacd2b5276289c"
- url="Windows%20Vista/en_windows_vista_with_sp2_x86_dvd_342266.iso"
- ;;
- "winvistax86-enterprise" )
- size=2420981760
- sum="54e2720004041e7db988a391543ea5228b0affc28efcf9303d2d0ff9402067f5"
- url="Windows%20Vista/en_windows_vista_enterprise_sp2_x86_dvd_342329.iso"
- ;;
- "win2003r2" )
- size=652367872
- sum="74245cba888f935b138b106c2744bec7f392925b472358960a0b5643cd6abb32"
- url="Windows%20Server%202003%20R2/en_win_srv_2003_r2_standard_x64_with_sp2_cd1_x13-05757.iso"
- ;;
- "winxpx86" )
- size=617756672
- sum="62b6c91563bad6cd12a352aa018627c314cfc5162d8e9f8af0756a642e602a46"
- url="Windows%20XP/en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso"
- ;;
- "winxpx64" )
- size=614166528
- sum="8fac68e1e56c64ad9a2aa0ad464560282e67fa4f4dd51d09a66f4e548eb0f2d6"
- url="Windows%20XP/en_win_xp_pro_x64_vl.iso"
- ;;
- esac
-
- case "${ret,,}" in
- "sum" ) echo "$sum" ;;
- "size" ) echo "$size" ;;
- *) [ -n "$url" ] && echo "$host/$url";;
- esac
-
- return 0
-}
-
-getLink3() {
-
- local id="$1"
- local lang="$2"
- local ret="$3"
- local url=""
- local sum=""
- local size=""
- local host="https://nixsys.com/drivers"
-
- [[ "${lang,,}" != "en" && "${lang,,}" != "en-us" ]] && return 0
-
- case "${id,,}" in
- "win7x64" | "win7x64-ultimate" )
- size=3319478272
- sum="3286963e1476082ba882a5058c205c264772bead9e99e15cd1cb255f04b72900"
- url="WINDOWS764_EN_DVD.iso"
- ;;
- "win7x86" | "win7x86-ultimate" )
- size=2564784128
- sum="bd4c03c917d00a40222d92a6fab04981a7bd46140bda1888eb961a322e3c5d89"
- url="WINDOWS732_EN_DVD.iso"
- ;;
- "winxpx86" )
- size=618065920
- sum="8177d0137dfe4e8296a85793f140806c9250a5992c8e0e50158c742767ad1182"
- url="WinXPsp3.iso"
- ;;
- "win2kx86" )
- size=387424256
- sum="08b11c3897eb38d1e6566a17cec5cdf2b3c620444e160e3db200a7e223aabbd8"
- url="Windows_2000_SP4.iso"
- esac
-
- case "${ret,,}" in
- "sum" ) echo "$sum" ;;
- "size" ) echo "$size" ;;
- *) [ -n "$url" ] && echo "$host/$url";;
- esac
-
- return 0
-}
-
-getLink4() {
-
- local id="$1"
- local lang="$2"
- local ret="$3"
- local url=""
- local sum=""
- local size=""
- local host="https://archive.org/download"
-
- [[ "${lang,,}" != "en" && "${lang,,}" != "en-us" ]] && return 0
-
- case "${id,,}" in
- "nano11" )
- size=2463565824
- sum="a1e0614372768cbe2d24de74b78a4a97bc1017ea5080dfed1d2125e4a527eb1a"
- url="nano11_25h2/nano11%2025h2.iso"
- ;;
- "core11" )
- size=3176654848
- sum="29c055fcfb7b089abd9e007e7abe4bb82c70a03aac9d65e56a38b87ab32d04d2"
- url="tiny11_25H2/tiny11core_25H2_Oct25.iso"
- ;;
- "tiny11" )
- size=5514559488
- sum="92484f2b7f707e42383294402a9eabbadeaa5ede80ac633390ae7f3537e36275"
- url="tiny11_25H2/tiny11_25H2_Oct25.iso"
- ;;
- "tiny10" )
- size=3839819776
- sum="a11116c0645d892d6a5a7c585ecc1fa13aa66f8c7cc6b03bf1f27bd16860cc35"
- url="tiny-10-23-h2/tiny10%20x64%2023h2.iso"
- ;;
- "win11x64" )
- size=7736125440
- sum="d141f6030fed50f75e2b03e1eb2e53646c4b21e5386047cb860af5223f102a32"
- url="W11x64_26200.6584/26200.6584.250915-1905.25h2_ge_release_svc_refresh_CLIENT_CONSUMER_x64FRE_en-us.iso"
- ;;
- "win11x64-enterprise" | "win11x64-enterprise-eval" )
- size=6209064960
- sum="c8dbc96b61d04c8b01faf6ce0794fdf33965c7b350eaa3eb1e6697019902945c"
- url="Windows11Enterprise23H2x64/22631.2428.231001-0608.23H2_NI_RELEASE_SVC_REFRESH_CLIENTENTERPRISEEVAL_OEMRET_x64FRE_en-us.iso"
- ;;
- "win11x64-iot" | "win11x64-enterprise-iot" | "win11x64-enterprise-iot-eval" )
- size=5144817664
- sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a"
- url="Windows11LTSC/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso"
- ;;
- "win11x64-ltsc" | "win11x64-enterprise-ltsc" | "win11x64-enterprise-ltsc-eval" )
- size=5144817664
- sum="4f59662a96fc1da48c1b415d6c369d08af55ddd64e8f1c84e0166d9e50405d7a"
- url="Windows11LTSC/X23-81951_26100.1742.240906-0331.ge_release_svc_refresh_CLIENT_ENTERPRISES_OEM_x64FRE_en-us.iso"
- ;;
- "win10x64" | "win10x64-enterprise" | "win10x64-enterprise-eval" )
- size=6978310144
- sum="7847abd6f39abd02dc8089c4177d354f9eb66fa0ee2fe8ae20e596e675d1ab67"
- url="Windows-10-22H2-July-2024-64-bit-DVD-English/en-us_windows_10_business_editions_version_22h2_updated_july_2024_x64_dvd_c004521a.iso"
- ;;
- "win10x64-iot" | "win10x64-enterprise-iot" | "win10x64-enterprise-iot-eval" )
- size=4851668992
- sum="a0334f31ea7a3e6932b9ad7206608248f0bd40698bfb8fc65f14fc5e4976c160"
- url="en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f_202411/en-us_windows_10_iot_enterprise_ltsc_2021_x64_dvd_257ad90f.iso"
- ;;
- "win10x64-ltsc" | "win10x64-enterprise-ltsc" | "win10x64-enterprise-ltsc-eval" )
- size=4899461120
- sum="c90a6df8997bf49e56b9673982f3e80745058723a707aef8f22998ae6479597d"
- url="en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96_202302/en-us_windows_10_enterprise_ltsc_2021_x64_dvd_d289cf96.iso"
- ;;
- "win81x64" )
- size=4320526336
- sum="d8333cf427eb3318ff6ab755eb1dd9d433f0e2ae43745312c1cd23e83ca1ce51"
- url="en_windows_8.1_with_update_x64_dvd_6051480/en_windows_8.1_with_update_x64_dvd_6051480.iso"
- ;;
- "win81x64-enterprise" | "win81x64-enterprise-eval" )
- size=4139163648
- sum="c3c604c03677504e8905090a8ce5bb1dde76b6fd58e10f32e3a25bef21b2abe1"
- url="en_windows_8.1_enterprise_with_update_x64_dvd/en_windows_8.1_enterprise_with_update_x64_dvd_6054382.iso"
- ;;
- "win2022" | "win2022-eval" )
- size=5365624832
- sum="c3c57bb2cf723973a7dcfb1a21e97dfa035753a7f111e348ad918bb64b3114db"
- url="win-server-2022/2227-January_2024/en-us_windows_server_2022_updated_jan_2024_x64_dvd_2b7a0c9f.iso"
- ;;
- "win2019" | "win2019-eval" )
- size=5575774208
- sum="0067afe7fdc4e61f677bd8c35a209082aa917df9c117527fc4b2b52a447e89bb"
- url="sw-dvd-9-win-server-std-core-2019-1809.18-64-bit-english-dc-std-mlf-x-22-74330/SW_DVD9_Win_Server_STD_CORE_2019_1809.18_64Bit_English_DC_STD_MLF_X22-74330.ISO"
- ;;
- "win2016" | "win2016-eval" )
- size=6006587392
- sum="af06e5483c786c023123e325cea4775050324d9e1366f46850b515ae43f764be"
- url="en_windows_server_2016_updated_feb_2018_x64_dvd_11636692/en_windows_server_2016_updated_feb_2018_x64_dvd_11636692.iso"
- ;;
- "win2012r2" | "win2012r2-eval" )
- size=5397889024
- sum="f351e89eb88a96af4626ceb3450248b8573e3ed5924a4e19ea891e6003b62e4e"
- url="en_windows_server_2012_r2_with_update_x64_dvd_6052708_202006/en_windows_server_2012_r2_with_update_x64_dvd_6052708.iso"
- ;;
- "win2008r2" | "win2008r2-eval" )
- size=3166584832
- sum="dfd9890881b7e832a927c38310fb415b7ea62ac5a896671f2ce2a111998f0df8"
- url="en_windows_server_2008_r2_with_sp1_x64_dvd_617601_202006/en_windows_server_2008_r2_with_sp1_x64_dvd_617601.iso"
- ;;
- "win7x64" | "win7x64-ultimate" )
- size=3320903680
- sum="36f4fa2416d0982697ab106e3a72d2e120dbcdb6cc54fd3906d06120d0653808"
- url="win7-ult-sp1-english/Win7_Ult_SP1_English_x64.iso"
- ;;
- "win7x64-enterprise" | "win7x64-enterprise-eval" )
- size=3182604288
- sum="ee69f3e9b86ff973f632db8e01700c5724ef78420b175d25bae6ead90f6805a7"
- url="en_windows_7_enterprise_with_sp1_x64_dvd_u_677651_202006/en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.iso"
- ;;
- "win7x86" | "win7x86-ultimate" )
- size=2564476928
- sum="e2c009a66d63a742941f5087acae1aa438dcbe87010bddd53884b1af6b22c940"
- url="win7-ult-sp1-english/Win7_Ult_SP1_English_x32.iso"
- ;;
- "win7x86-enterprise" | "win7x86-enterprise-eval" )
- size=2434502656
- sum="8bdd46ff8cb8b8de9c4aba02706629c8983c45e87da110e64e13be17c8434dad"
- url="en_windows_7_enterprise_with_sp1_x86_dvd_u_677710_202006/en_windows_7_enterprise_with_sp1_x86_dvd_u_677710.iso"
- ;;
- "winvistax64" | "winvistax64-ultimate" )
- size=3861460992
- sum="edf9f947c5791469fd7d2d40a5dcce663efa754f91847aa1d28ed7f585675b78"
- url="en_windows_vista_sp2_x64_dvd_342267_202010/en_windows_vista_sp2_x64_dvd_342267.iso"
- ;;
- "winvistax64-enterprise" )
- size=3205953536
- sum="0a0cd511b3eac95c6f081419c9c65b12317b9d6a8d9707f89d646c910e788016"
- url="en_windows_vista_enterprise_sp2_x64_dvd_342332_202007/en_windows_vista_enterprise_sp2_x64_dvd_342332.iso"
- ;;
- "winvistax86" | "winvistax86-ultimate" )
- size=3243413504
- sum="9c36fed4255bd05a8506b2da88f9aad73643395e155e609398aacd2b5276289c"
- url="en_windows_vista_sp2_x86_dvd_342266/en_windows_vista_sp2_x86_dvd_342266.iso"
- ;;
- "winvistax86-enterprise" )
- size=2420981760
- sum="54e2720004041e7db988a391543ea5228b0affc28efcf9303d2d0ff9402067f5"
- url="en_windows_vista_enterprise_sp2_x86_dvd_342329_202007/en_windows_vista_enterprise_sp2_x86_dvd_342329.iso"
- ;;
- "win2003r2" )
- size=652367872
- sum="74245cba888f935b138b106c2744bec7f392925b472358960a0b5643cd6abb32"
- url="en_win_srv_2003_r2_standard_x64_with_sp2_cd1_x13-05757/en_win_srv_2003_r2_standard_x64_with_sp2_cd1_x13-05757.iso"
- ;;
- "winxpx86" )
- size=617756672
- sum="62b6c91563bad6cd12a352aa018627c314cfc5162d8e9f8af0756a642e602a46"
- url="XPPRO_SP3_ENU/en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso"
- ;;
- "winxpx64" )
- size=614166528
- sum="8fac68e1e56c64ad9a2aa0ad464560282e67fa4f4dd51d09a66f4e548eb0f2d6"
- url="windows-xp-all-sp-msdn-iso-files-en-de-ru-tr-x86-x64/en_win_xp_sp1_pro_x64_vl.iso"
- ;;
- "win2kx86" )
- size=386859008
- sum="e3816f6e80b66ff686ead03eeafffe9daf020a5e4717b8bd4736b7c51733ba22"
- url="MicrosoftWindows2000BuildCollection/5.00.2195.6717_x86fre_client-professional_retail_en-us-ZRMPFPP_EN.iso"
- esac
-
- case "${ret,,}" in
- "sum" ) echo "$sum" ;;
- "size" ) echo "$size" ;;
- *) [ -n "$url" ] && echo "$host/$url";;
- esac
-
- return 0
-}
-
-getValue() {
-
- local val=""
- local id="$2"
- local lang="$3"
- local type="$4"
- local func="getLink$1"
-
- if [ "$1" -gt 0 ] && [ "$1" -le "$MIRRORS" ]; then
- val=$($func "$id" "$lang" "$type")
- fi
-
- echo "$val"
- return 0
-}
-
-getLink() {
-
- local url
- url=$(getValue "$1" "$2" "$3" "")
-
- echo "$url"
- return 0
-}
-
-getHash() {
-
- local sum
- sum=$(getValue "$1" "$2" "$3" "sum")
-
- echo "$sum"
- return 0
-}
-
-getSize() {
-
- local size
- size=$(getValue "$1" "$2" "$3" "size")
-
- echo "$size"
- return 0
-}
-
-isMido() {
-
- local id="$1"
- local lang="$2"
- local sum
-
- [[ "${MIDO:-}" == [Nn]* ]] && return 1
-
- sum=$(getMido "$id" "en" "sum")
- [ -n "$sum" ] && return 0
-
- return 1
-}
-
-isESD() {
-
- local id="$1"
- local lang="$2"
-
- [[ "${ESD:-}" == [Nn]* ]] && return 1
-
- case "${id,,}" in
- "win11${PLATFORM,,}" | "win10${PLATFORM,,}" )
- return 0
- ;;
- "win11${PLATFORM,,}-enterprise" | "win11${PLATFORM,,}-enterprise-eval")
- return 0
- ;;
- "win10${PLATFORM,,}-enterprise" | "win10${PLATFORM,,}-enterprise-eval" )
- return 0
- ;;
- esac
-
- return 1
-}
-
-validVersion() {
-
- local id="$1"
- local lang="$2"
- local url
-
- isESD "$id" "$lang" && return 0
- isMido "$id" "$lang" && return 0
-
- for ((i=1;i<=MIRRORS;i++)); do
-
- url=$(getLink "$i" "$id" "$lang")
- [ -n "$url" ] && return 0
-
- done
-
- return 1
-}
-
-addFolder() {
-
- local src="$1"
- local folder="/oem"
-
- [ ! -d "$folder" ] && folder="/OEM"
- [ ! -d "$folder" ] && folder="$STORAGE/oem"
- [ ! -d "$folder" ] && folder="$STORAGE/OEM"
- [ ! -d "$folder" ] && return 0
-
- local msg="Adding OEM folder to image..."
- info "$msg" && html "$msg"
-
- local dest="$src/\$OEM\$/\$1/OEM"
- mkdir -p "$dest" || return 1
- cp -Lr "$folder/." "$dest" || return 1
-
- local file
- file=$(find "$dest" -maxdepth 1 -type f -iname install.bat -print -quit)
- [ -f "$file" ] && unix2dos -q "$file"
-
- return 0
-}
-
-prepareInstall() {
-
- local pid=""
- local file=""
- local dir="$2"
- local desc="$3"
- local driver="$4"
- local drivers="/tmp/drivers"
-
- ETFS="[BOOT]/Boot-NoEmul.img"
-
- if [ ! -f "$dir/$ETFS" ] || [ ! -s "$dir/$ETFS" ]; then
- error "Failed to locate file \"$ETFS\" in $desc ISO image!" && return 1
- fi
-
- local arch target
- [ -d "$dir/AMD64" ] && arch="amd64" || arch="x86"
- [[ "${arch,,}" == "x86" ]] && target="$dir/I386" || target="$dir/AMD64"
-
- if [ ! -d "$target" ]; then
- error "Failed to locate directory \"$target\" in $desc ISO image!" && return 1
- fi
-
- if [[ "${driver,,}" == "xp" || "${driver,,}" == "2k3" ]]; then
-
- local msg="Adding drivers to image..."
- info "$msg" && html "$msg"
-
- rm -rf "$drivers"
- mkdir -p "$drivers"
-
- if ! bsdtar -xf /var/drivers.txz -C "$drivers"; then
- error "Failed to extract drivers!" && return 1
- fi
-
- if [ ! -f "$drivers/viostor/$driver/$arch/viostor.sys" ]; then
- error "Failed to locate required storage drivers!" && return 1
- fi
-
- cp -L "$drivers/viostor/$driver/$arch/viostor.sys" "$target" || return 1
-
- mkdir -p "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1
- cp -L "$drivers/viostor/$driver/$arch/viostor.cat" "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1
- cp -L "$drivers/viostor/$driver/$arch/viostor.inf" "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1
- cp -L "$drivers/viostor/$driver/$arch/viostor.sys" "$dir/\$OEM\$/\$1/Drivers/viostor" || return 1
-
- if [ ! -f "$drivers/NetKVM/$driver/$arch/netkvm.sys" ]; then
- error "Failed to locate required network drivers!" && return 1
- fi
-
- mkdir -p "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1
- cp -L "$drivers/NetKVM/$driver/$arch/netkvm.cat" "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1
- cp -L "$drivers/NetKVM/$driver/$arch/netkvm.inf" "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1
- cp -L "$drivers/NetKVM/$driver/$arch/netkvm.sys" "$dir/\$OEM\$/\$1/Drivers/NetKVM" || return 1
-
- file=$(find "$target" -maxdepth 1 -type f -iname TXTSETUP.SIF -print -quit)
-
- if [ -z "$file" ]; then
- error "The file TXTSETUP.SIF could not be found!" && return 1
- fi
-
- sed -i '/^\[SCSI.Load\]/s/$/\nviostor=viostor.sys,4/' "$file"
- sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\nviostor.sys=1,,,,,,4_,4,1,,,1,4/' "$file"
- sed -i '/^\[SCSI\]/s/$/\nviostor=\"Red Hat VirtIO SCSI Disk Device\"/' "$file"
- sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00000000=\"viostor\"/' "$file"
- sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00020000=\"viostor\"/' "$file"
- sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00021AF4=\"viostor\"/' "$file"
- sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00000000=\"viostor\"/' "$file"
-
- if [ ! -d "$drivers/sata/xp/$arch" ]; then
- error "Failed to locate required SATA drivers!" && return 1
- fi
-
- mkdir -p "$dir/\$OEM\$/\$1/Drivers/sata" || return 1
- cp -Lr "$drivers/sata/xp/$arch/." "$dir/\$OEM\$/\$1/Drivers/sata" || return 1
- cp -Lr "$drivers/sata/xp/$arch/." "$target" || return 1
-
- sed -i '/^\[SCSI.Load\]/s/$/\niaStor=iaStor.sys,4/' "$file"
- sed -i '/^\[FileFlags\]/s/$/\niaStor.sys = 16/' "$file"
- sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.cat = 1,,,,,,,1,0,0/' "$file"
- sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.inf = 1,,,,,,,1,0,0/' "$file"
- sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.sys = 1,,,,,,4_,4,1,,,1,4/' "$file"
- sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.sys = 1,,,,,,,1,0,0/' "$file"
- sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaahci.cat = 1,,,,,,,1,0,0/' "$file"
- sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaAHCI.inf = 1,,,,,,,1,0,0/' "$file"
- sed -i '/^\[SCSI\]/s/$/\niaStor=\"Intel\(R\) SATA RAID\/AHCI Controller\"/' "$file"
- sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_8086\&DEV_2922\&CC_0106=\"iaStor\"/' "$file"
-
- rm -rf "$drivers"
-
- fi
-
- local key setup
- setup=$(find "$target" -maxdepth 1 -type f -iname setupp.ini -print -quit)
-
- if [ -n "$setup" ] && [ -z "$KEY" ]; then
-
- pid=$(<"$setup")
- pid="${pid%$'\r'}"
-
- if [[ "$driver" == "2k" ]]; then
-
- echo "${pid:0:$((${#pid})) - 3}270" > "$setup"
-
- else
-
- if [[ "$pid" == *"270" ]]; then
-
- warn "this version of $desc requires a volume license key (VLK), it will ask for one during installation."
-
- else
-
- file=$(find "$target" -maxdepth 1 -type f -iname PID.INF -print -quit)
-
- if [ -n "$file" ]; then
-
- if [[ "$driver" == "2k3" ]]; then
-
- key=$(grep -i -A 2 "StagingKey" "$file" | tail -n 2 | head -n 1)
-
- else
-
- key="${pid:$((${#pid})) - 8:5}"
- if [[ "${pid^^}" == *"OEM" ]]; then
- key=$(grep -i -A 2 "$key" "$file" | tail -n 2 | head -n 1)
- else
- key=$(grep -i -m 1 -A 2 "$key" "$file" | tail -n 2 | head -n 1)
- fi
- key="${key#*= }"
-
- fi
-
- key="${key%$'\r'}"
- [[ "${#key}" == "29" ]] && KEY="$key"
-
- fi
-
- if [ -z "$KEY" ]; then
-
- # These are NOT pirated keys, they come from official MS documentation.
-
- case "${driver,,}" in
- "xp" )
-
- if [[ "${arch,,}" == "x86" ]]; then
- # Windows XP Professional x86 generic trial key (no activation)
- KEY="DR8GV-C8V6J-BYXHG-7PYJR-DB66Y"
- else
- # Windows XP Professional x64 generic trial key (no activation)
- KEY="B2RBK-7KPT9-4JP6X-QQFWM-PJD6G"
- fi ;;
-
- "2k3" )
-
- if [[ "${arch,,}" == "x86" ]]; then
- # Windows Server 2003 Standard x86 generic trial key (no activation)
- KEY="QKDCQ-TP2JM-G4MDG-VR6F2-P9C48"
- else
- # Windows Server 2003 Standard x64 generic trial key (no activation)
- KEY="P4WJG-WK3W7-3HM8W-RWHCK-8JTRY"
- fi ;;
-
- esac
-
- echo "${pid:0:$((${#pid})) - 3}000" > "$setup"
-
- fi
-
- fi
- fi
-
- fi
-
- [ -n "$KEY" ] && KEY="ProductID=$KEY"
-
- mkdir -p "$dir/\$OEM\$"
-
- if ! addFolder "$dir"; then
- error "Failed to add OEM folder to image!" && return 1
- fi
-
- local oem=""
- local install="$dir/\$OEM\$/\$1/OEM/install.bat"
- [ -f "$install" ] && oem="\"Script\"=\"cmd /C start \\\"Install\\\" \\\"cmd /C C:\\\\OEM\\\\install.bat\\\"\""
-
- [ -z "$WIDTH" ] && WIDTH="1280"
- [ -z "$HEIGHT" ] && HEIGHT="720"
-
- XHEX=$(printf '%x\n' "$WIDTH")
- YHEX=$(printf '%x\n' "$HEIGHT")
-
- local username=""
- local password=""
-
- [ -n "$USERNAME" ] && username=$(echo "$USERNAME" | sed 's/[^[:alnum:]@!._-]//g')
- [ -z "$username" ] && username="Docker"
-
- [ -n "$PASSWORD" ] && password=$(echo "$PASSWORD" | sed 's/"//g')
- [ -z "$password" ] && password="admin"
-
- find "$target" -maxdepth 1 -type f -iname winnt.sif -exec rm {} \;
-
- { echo "[Data]"
- echo " AutoPartition=1"
- echo " MsDosInitiated=\"0\""
- echo " UnattendedInstall=\"Yes\""
- echo " AutomaticUpdates=\"Yes\""
- echo ""
- echo "[Unattended]"
- echo " UnattendSwitch=Yes"
- echo " UnattendMode=FullUnattended"
- echo " FileSystem=NTFS"
- echo " OemSkipEula=Yes"
- echo " OemPreinstall=Yes"
- echo " Repartition=Yes"
- echo " WaitForReboot=\"No\""
- echo " DriverSigningPolicy=\"Ignore\""
- echo " NonDriverSigningPolicy=\"Ignore\""
- echo " OemPnPDriversPath=\"Drivers\viostor;Drivers\NetKVM;Drivers\sata\""
- echo " NoWaitAfterTextMode=1"
- echo " NoWaitAfterGUIMode=1"
- echo " FileSystem-ConvertNTFS"
- echo " ExtendOemPartition=0"
- echo " Hibernation=\"No\""
- echo ""
- echo "[GuiUnattended]"
- echo " OEMSkipRegional=1"
- echo " OemSkipWelcome=1"
- echo " AdminPassword=$password"
- echo " TimeZone=0"
- echo " AutoLogon=Yes"
- echo " AutoLogonCount=65432"
- echo ""
- echo "[UserData]"
- echo " FullName=\"$username\""
- echo " ComputerName=\"*\""
- echo " OrgName=\"$APP for $ENGINE\""
- echo " $KEY"
- echo ""
- echo "[Identification]"
- echo " JoinWorkgroup = WORKGROUP"
- echo ""
- echo "[Display]"
- echo " BitsPerPel=32"
- echo " XResolution=$WIDTH"
- echo " YResolution=$HEIGHT"
- echo ""
- echo "[Networking]"
- echo " InstallDefaultComponents=Yes"
- echo ""
- echo "[Branding]"
- echo " BrandIEUsingUnattended=Yes"
- echo ""
- echo "[URL]"
- echo " Home_Page = http://www.google.com"
- echo " Search_Page = http://www.google.com"
- echo ""
- echo "[TerminalServices]"
- echo " AllowConnections=1"
- echo ""
- } | unix2dos > "$target/WINNT.SIF"
-
- if [[ "$driver" == "2k3" ]]; then
- { echo "[Components]"
- echo " TerminalServer=On"
- echo ""
- echo "[LicenseFilePrintData]"
- echo " AutoMode=PerServer"
- echo " AutoUsers=5"
- echo ""
- } | unix2dos >> "$target/WINNT.SIF"
- fi
-
- { echo "Windows Registry Editor Version 5.00"
- echo ""
- echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security]"
- echo "\"FirstRunDisabled\"=dword:00000001"
- echo "\"UpdatesDisableNotify\"=dword:00000001"
- echo "\"FirewallDisableNotify\"=dword:00000001"
- echo "\"AntiVirusDisableNotify\"=dword:00000001"
- echo ""
- echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvc]"
- echo "\"Start\"=dword:00000004"
- echo ""
- echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List]"
- echo "\"3389:TCP\"=\"3389:TCP:*:Enabled:@xpsp2res.dll,-22009\""
- echo ""
- echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Tour]"
- echo "\"RunCount\"=dword:00000000"
- echo ""
- echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]"
- echo "\"HideFileExt\"=dword:00000000"
- echo ""
- echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Explorer]"
- echo "\"NoWelcomeScreen\"=\"1\""
- echo ""
- echo "[HKEY_CURRENT_USER\Software\Microsoft\Internet Connection Wizard]"
- echo "\"Completed\"=\"1\""
- echo "\"Desktopchanged\"=\"1\""
- echo ""
- echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]"
- echo "\"AutoAdminLogon\"=\"1\""
- echo "\"DefaultUserName\"=\"$username\""
- echo "\"DefaultPassword\"=\"$password\""
- echo "\"DefaultDomainName\"=\"Dockur\""
- echo ""
- echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Video\{23A77BF7-ED96-40EC-AF06-9B1F4867732A}\0000]"
- echo "\"DefaultSettings.BitsPerPel\"=dword:00000020"
- echo "\"DefaultSettings.XResolution\"=dword:00000$XHEX"
- echo "\"DefaultSettings.YResolution\"=dword:00000$YHEX"
- echo ""
- echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Control\VIDEO\{23A77BF7-ED96-40EC-AF06-9B1F4867732A}\0000]"
- echo "\"DefaultSettings.BitsPerPel\"=dword:00000020"
- echo "\"DefaultSettings.XResolution\"=dword:00000$XHEX"
- echo "\"DefaultSettings.YResolution\"=dword:00000$YHEX"
- echo ""
- echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce]"
- echo "\"ScreenSaver\"=\"reg add \\\"HKCU\\\\Control Panel\\\\Desktop\\\" /f /v \\\"SCRNSAVE.EXE\\\" /t REG_SZ /d \\\"off\\\"\""
- echo "\"ScreenSaverOff\"=\"reg add \\\"HKCU\\\\Control Panel\\\\Desktop\\\" /f /v \\\"ScreenSaveActive\\\" /t REG_SZ /d \\\"0\\\"\""
- echo "$oem"
- echo ""
- } | unix2dos > "$dir/\$OEM\$/install.reg"
-
- if [[ "$driver" == "2k" ]]; then
- { echo "[HKEY_USERS\.DEFAULT\Software\Microsoft\Windows\CurrentVersion\Runonce]"
- echo "\"^SetupICWDesktop\"=-"
- echo ""
- } | unix2dos >> "$dir/\$OEM\$/install.reg"
- fi
-
- if [[ "$driver" == "2k3" ]]; then
- { echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\srvWiz]"
- echo "@=dword:00000000"
- echo ""
- echo "[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\ServerOOBE\SecurityOOBE]"
- echo "\"DontLaunchSecurityOOBE\"=dword:00000000"
- echo ""
- } | unix2dos >> "$dir/\$OEM\$/install.reg"
- fi
-
- { echo "Set WshShell = WScript.CreateObject(\"WScript.Shell\")"
- echo "Set WshNetwork = WScript.CreateObject(\"WScript.Network\")"
- echo "Set Domain = GetObject(\"WinNT://\" & WshNetwork.ComputerName)"
- echo ""
- echo "Function DecodeSID(binSID)"
- echo " ReDim o(LenB(binSID))"
- echo ""
- echo " For i = 1 To LenB(binSID)"
- echo " o(i-1) = AscB(MidB(binSID, i, 1))"
- echo " Next"
- echo ""
- echo " sid = \"S-\" & CStr(o(0)) & \"-\" & OctetArrayToString _"
- echo " (Array(o(2), o(3), o(4), o(5), o(6), o(7)))"
- echo " For i = 8 To (4 * o(1) + 4) Step 4"
- echo " sid = sid & \"-\" & OctetArrayToString _"
- echo " (Array(o(i+3), o(i+2), o(i+1), o(i)))"
- echo " Next"
- echo ""
- echo " DecodeSID = sid"
- echo "End Function"
- echo ""
- echo "Function OctetArrayToString(arr)"
- echo " v = 0"
- echo " For i = 0 To UBound(arr)"
- echo " v = v * 256 + arr(i)"
- echo " Next"
- echo ""
- echo " OctetArrayToString = CStr(v)"
- echo "End Function"
- echo ""
- echo "For Each DomainItem in Domain"
- echo " If DomainItem.Class = \"User\" Then"
- echo " sid = DecodeSID(DomainItem.Get(\"objectSID\"))"
- echo " If Left(sid, 9) = \"S-1-5-21-\" And Right(sid, 4) = \"-500\" Then"
- echo " LocalAdminADsPath = DomainItem.ADsPath"
- echo " Exit For"
- echo " End If"
- echo " End If"
- echo "Next"
- echo ""
- echo "Call Domain.MoveHere(LocalAdminADsPath, \"$username\")"
- echo ""
- echo "Set oLink = WshShell.CreateShortcut(WshShell.ExpandEnvironmentStrings(\"%userprofile%\\Desktop\\Shared.lnk\"))"
- echo "With oLink"
- echo " .TargetPath = \"\\\\host.lan\\Data\""
- echo " .Save"
- echo "End With"
- echo "Set oLink = Nothing"
- echo ""
- } | unix2dos > "$dir/\$OEM\$/install.vbs"
-
- { echo "[COMMANDS]"
- echo "\"REGEDIT /s install.reg\""
- echo "\"Wscript install.vbs\""
- echo ""
- } | unix2dos > "$dir/\$OEM\$/cmdlines.txt"
-
- return 0
-}
-
-prepareLegacy() {
-
- local iso="$1"
- local dir="$2"
- local desc="$3"
-
- ETFS="boot.img"
-
- [ -f "$dir/$ETFS" ] && [ -s "$dir/$ETFS" ] && return 0
- rm -f "$dir/$ETFS"
-
- local len offset
- len=$(isoinfo -d -i "$iso" | grep "Nsect " | grep -o "[^ ]*$")
- offset=$(isoinfo -d -i "$iso" | grep "Bootoff " | grep -o "[^ ]*$")
-
- if ! dd "if=$iso" "of=$dir/$ETFS" bs=2048 "count=$len" "skip=$offset" status=none; then
- error "Failed to extract boot image from $desc ISO!" && return 1
- fi
-
- [ -f "$dir/$ETFS" ] && [ -s "$dir/$ETFS" ] && return 0
-
- error "Failed to locate file \"$ETFS\" in $desc ISO image!"
- return 1
-}
-
-detectLegacy() {
-
- local dir="$1"
- local find
-
- find=$(find "$dir" -maxdepth 1 -type d -iname WIN95 -print -quit)
- [ -n "$find" ] && DETECTED="win95" && return 0
-
- find=$(find "$dir" -maxdepth 1 -type d -iname WIN98 -print -quit)
- [ -n "$find" ] && DETECTED="win98" && return 0
-
- find=$(find "$dir" -maxdepth 1 -type d -iname WIN9X -print -quit)
- [ -n "$find" ] && DETECTED="win9x" && return 0
-
- find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_W.40 -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_S.40 -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_TS.40 -print -quit)
- [ -n "$find" ] && DETECTED="winnt4" && return 0
-
- find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_NT.5 -print -quit)
-
- if [ -n "$find" ]; then
-
- find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_IA.5 -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_ID.5 -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_IP.5 -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname CDROM_IS.5 -print -quit)
- [ -n "$find" ] && DETECTED="win2k" && return 0
-
- fi
-
- find=$(find "$dir" -maxdepth 1 -iname WIN51 -print -quit)
-
- if [ -n "$find" ]; then
-
- find=$(find "$dir" -maxdepth 1 -type f -iname WIN51AP -print -quit)
- [ -n "$find" ] && DETECTED="winxpx64" && return 0
-
- find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IC -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IP -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname setupxp.htm -print -quit)
- [ -n "$find" ] && DETECTED="winxpx86" && return 0
-
- find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IS -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IA -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IB -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51ID -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IL -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51IS -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51AA -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51AD -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51AS -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51MA -print -quit)
- [ -z "$find" ] && find=$(find "$dir" -maxdepth 1 -type f -iname WIN51MD -print -quit)
- [ -n "$find" ] && DETECTED="win2003r2" && return 0
-
- fi
-
- return 1
-}
-
-skipVersion() {
-
- local id="$1"
-
- case "${id,,}" in
- "win9"* | "winxp"* | "win2k"* | "win2003"* )
- return 0 ;;
- esac
-
- return 1
-}
-
-isCompatible() {
- return 0
-}
-
-setMachine() {
-
- local id="$1"
- local iso="$2"
- local dir="$3"
- local desc="$4"
-
- case "${id,,}" in
- "win9"* )
- ETFS="[BOOT]/Boot-1.44M.img" ;;
- "win2k"* )
- if ! prepareInstall "$iso" "$dir" "$desc" "2k"; then
- error "Failed to prepare $desc ISO!" && return 1
- fi ;;
- "winxp"* )
- if ! prepareInstall "$iso" "$dir" "$desc" "xp"; then
- error "Failed to prepare $desc ISO!" && return 1
- fi ;;
- "win2003"* )
- if ! prepareInstall "$iso" "$dir" "$desc" "2k3"; then
- error "Failed to prepare $desc ISO!" && return 1
- fi ;;
- esac
-
- case "${id,,}" in
- "win9"* )
- USB="no"
- VGA="cirrus"
- DISK_TYPE="auto"
- ADAPTER="rtl8139"
- MACHINE="pc-i440fx-2.4"
- BOOT_MODE="windows_legacy" ;;
- "win2k"* )
- VGA="cirrus"
- MACHINE="pc"
- USB="pci-ohci"
- DISK_TYPE="auto"
- ADAPTER="rtl8139"
- BOOT_MODE="windows_legacy" ;;
- "winxp"* | "win2003"* )
- DISK_TYPE="blk"
- BOOT_MODE="windows_legacy" ;;
- "winvista"* | "win7"* | "win2008"* )
- BOOT_MODE="windows_legacy" ;;
- esac
-
- case "${id,,}" in
- "winxp"* | "win2003"* | "winvistax86"* | "win7x86"* | "win2008r2x86"* )
- # Prevent bluescreen if 64 bit PCI hole size is >2G.
- ARGS="-global q35-pcihost.x-pci-hole64-fix=false" ;;
- esac
-
- return 0
-}
-
-return 0
diff --git a/src/entry.sh b/src/entry.sh
index 71e939e..07866ca 100644
--- a/src/entry.sh
+++ b/src/entry.sh
@@ -1,19 +1,14 @@
#!/usr/bin/env bash
set -Eeuo pipefail
-: "${APP:="Windows"}"
-: "${PLATFORM:="x64"}"
: "${BOOT_MODE:="windows"}"
-: "${SUPPORT:="https://github.com/dockur/windows"}"
+
+APP="Windows"
+SUPPORT="https://github.com/dockur/windows"
cd /run
-. start.sh # Startup hook
-. utils.sh # Load functions
. reset.sh # Initialize system
-. server.sh # Start webserver
-. define.sh # Define versions
-. mido.sh # Download Windows
. install.sh # Run installation
. disk.sh # Initialize disks
. display.sh # Initialize graphics
@@ -22,27 +17,24 @@ cd /run
. boot.sh # Configure boot
. proc.sh # Initialize processor
. power.sh # Configure shutdown
-. memory.sh # Check available memory
. config.sh # Configure arguments
-. finish.sh # Finish initialization
trap - ERR
-version=$(qemu-system-x86_64 --version | head -n 1 | cut -d '(' -f 1 | awk '{ print $NF }')
-info "Booting ${APP}${BOOT_DESC} using QEMU v$version..."
+info "Booting $APP using $VERS..."
+[[ "$DEBUG" == [Yy1]* ]] && echo "Arguments: $ARGS" && echo
+
+if [[ "$CONSOLE" == [Yy]* ]]; then
+ exec qemu-system-x86_64 ${ARGS:+ $ARGS}
+fi
{ qemu-system-x86_64 ${ARGS:+ $ARGS} >"$QEMU_OUT" 2>"$QEMU_LOG"; rc=$?; } || :
(( rc != 0 )) && error "$(<"$QEMU_LOG")" && exit 15
terminal
-( sleep 30; boot ) &
-tail -fn +0 "$QEMU_LOG" --pid=$$ 2>/dev/null &
-cat "$QEMU_TERM" 2> /dev/null | tee "$QEMU_PTY" | \
-sed -u -e 's/\x1B\[[=0-9;]*[a-z]//gi' \
--e 's/\x1B\x63//g' -e 's/\x1B\[[=?]7l//g' \
--e '/^$/d' -e 's/\x44\x53\x73//g' \
--e 's/failed to load Boot/skipped Boot/g' \
--e 's/0): Not Found/0)/g' & wait $! || :
+tail -fn +0 "$QEMU_LOG" 2>/dev/null &
+cat "$QEMU_TERM" 2> /dev/null | tee "$QEMU_PTY" &
+wait $! || :
sleep 1 & wait $!
-[ ! -f "$QEMU_END" ] && finish 0
+finish 0
diff --git a/src/install.sh b/src/install.sh
index 7be2996..35df436 100644
--- a/src/install.sh
+++ b/src/install.sh
@@ -1,290 +1,238 @@
#!/usr/bin/env bash
set -Eeuo pipefail
-ETFS="boot/etfsboot.com"
+: "${MANUAL:=""}"
+: "${DETECTED:=""}"
+: "${VERSION:="win11x64"}"
+
+if [[ "${VERSION}" == \"*\" || "${VERSION}" == \'*\' ]]; then
+ VERSION="${VERSION:1:-1}"
+fi
+
+[[ "${VERSION,,}" == "11" ]] && VERSION="win11x64"
+[[ "${VERSION,,}" == "win11" ]] && VERSION="win11x64"
+
+[[ "${VERSION,,}" == "10" ]] && VERSION="win10x64"
+[[ "${VERSION,,}" == "win10" ]] && VERSION="win10x64"
+
+[[ "${VERSION,,}" == "8" ]] && VERSION="win81x64"
+[[ "${VERSION,,}" == "81" ]] && VERSION="win81x64"
+[[ "${VERSION,,}" == "8.1" ]] && VERSION="win81x64"
+[[ "${VERSION,,}" == "win8" ]] && VERSION="win81x64"
+[[ "${VERSION,,}" == "win81" ]] && VERSION="win81x64"
+
+[[ "${VERSION,,}" == "7" ]] && VERSION="win7x64"
+[[ "${VERSION,,}" == "win7" ]] && VERSION="win7x64"
+
+[[ "${VERSION,,}" == "vista" ]] && VERSION="winvistax64"
+[[ "${VERSION,,}" == "winvista" ]] && VERSION="winvistax64"
+
+[[ "${VERSION,,}" == "xp" ]] && VERSION="winxpx86"
+[[ "${VERSION,,}" == "winxp" ]] && VERSION="winxpx86"
+
+[[ "${VERSION,,}" == "22" ]] && VERSION="win2022-eval"
+[[ "${VERSION,,}" == "2022" ]] && VERSION="win2022-eval"
+[[ "${VERSION,,}" == "win22" ]] && VERSION="win2022-eval"
+[[ "${VERSION,,}" == "win2022" ]] && VERSION="win2022-eval"
+
+[[ "${VERSION,,}" == "19" ]] && VERSION="win2019-eval"
+[[ "${VERSION,,}" == "2019" ]] && VERSION="win2019-eval"
+[[ "${VERSION,,}" == "win19" ]] && VERSION="win2019-eval"
+[[ "${VERSION,,}" == "win2019" ]] && VERSION="win2019-eval"
+
+[[ "${VERSION,,}" == "16" ]] && VERSION="win2016-eval"
+[[ "${VERSION,,}" == "2016" ]] && VERSION="win2016-eval"
+[[ "${VERSION,,}" == "win16" ]] && VERSION="win2016-eval"
+[[ "${VERSION,,}" == "win2016" ]] && VERSION="win2016-eval"
+
+[[ "${VERSION,,}" == "2012" ]] && VERSION="win2012r2-eval"
+[[ "${VERSION,,}" == "win2012" ]] && VERSION="win2012r2-eval"
+
+[[ "${VERSION,,}" == "2008" ]] && VERSION="win2008r2"
+[[ "${VERSION,,}" == "win2008" ]] && VERSION="win2008r2"
+
+[[ "${VERSION,,}" == "ltsc10" ]] && VERSION="win10x64-enterprise-ltsc-eval"
+[[ "${VERSION,,}" == "10ltsc" ]] && VERSION="win10x64-enterprise-ltsc-eval"
+[[ "${VERSION,,}" == "win10-ltsc" ]] && VERSION="win10x64-enterprise-ltsc-eval"
+[[ "${VERSION,,}" == "win10x64-ltsc" ]] && VERSION="win10x64-enterprise-ltsc-eval"
+
+if [[ "${VERSION,,}" == "win10x64-enterprise-ltsc-eval" ]]; then
+ DETECTED="win10x64-ltsc"
+fi
+
+if [[ "${VERSION,,}" == "win7x64" ]]; then
+ DETECTED="win7x64"
+ VERSION="https://dl.bobpony.com/windows/7/en_windows_7_enterprise_with_sp1_x64_dvd_u_677651.iso"
+fi
+
+if [[ "${VERSION,,}" == "winvistax64" ]]; then
+ DETECTED="winvistax64"
+ VERSION="https://dl.bobpony.com/windows/vista/en_windows_vista_sp2_x64_dvd_342267.iso"
+fi
+
+if [[ "${VERSION,,}" == "winxpx86" ]]; then
+ DETECTED="winxpx86"
+ VERSION="https://dl.bobpony.com/windows/xp/professional/en_windows_xp_professional_with_service_pack_3_x86_cd_x14-80428.iso"
+fi
+
+if [[ "${VERSION,,}" == "core11" ]]; then
+ DETECTED="win11x64"
+ VERSION="https://archive.org/download/tiny-11-core-x-64-beta-1/tiny11%20core%20x64%20beta%201.iso"
+fi
+
+if [[ "${VERSION,,}" == "tiny11" ]]; then
+ DETECTED="win11x64"
+ VERSION="https://archive.org/download/tiny11-2311/tiny11%202311%20x64.iso"
+fi
+
+if [[ "${VERSION,,}" == "tiny10" ]]; then
+ DETECTED="win10x64-ltsc"
+ VERSION="https://archive.org/download/tiny-10-23-h2/tiny10%20x64%2023h2.iso"
+fi
+
+CUSTOM=$(find "$STORAGE" -maxdepth 1 -type f -iname custom.iso -printf "%f\n" | head -n 1)
+[ -z "$CUSTOM" ] && CUSTOM=$(find "$STORAGE" -maxdepth 1 -type f -iname boot.iso -printf "%f\n" | head -n 1)
+[ -z "$CUSTOM" ] && CUSTOM=$(find "$STORAGE" -maxdepth 1 -type f -iname custom.img -printf "%f\n" | head -n 1)
+
+ESD_URL=""
+MACHINE="q35"
+TMP="$STORAGE/tmp"
+DIR="$TMP/unpack"
FB="falling back to manual installation!"
+ETFS="boot/etfsboot.com"
EFISYS="efi/microsoft/boot/efisys_noprompt.bin"
-backup () {
+printVersion() {
- local count=1
- local iso="$1"
- local name="unknown"
- local root="$STORAGE/backups"
- local previous="$STORAGE/windows.base"
+ local id="$1"
+ local desc=""
- if [ -f "$previous" ]; then
-
- previous=$(<"$previous")
- previous="${previous//[![:print:]]/}"
-
- [ -n "$previous" ] && name="${previous%.*}"
-
- fi
-
- if ! makeDir "$root"; then
- error "Failed to create directory \"$root\" !"
- return 1
- fi
-
- local folder="$name"
- local dir="$root/$folder"
-
- while [ -d "$dir" ]
- do
- count=$((count+1))
- folder="${name}.${count}"
- dir="$root/$folder"
- done
-
- rm -rf "$dir"
-
- if ! makeDir "$dir"; then
- error "Failed to create directory \"$dir\" !"
- return 1
- fi
-
- [ -f "$iso" ] && mv -f "$iso" "$dir/"
- find "$STORAGE" -maxdepth 1 -type f -iname 'data.*' -not -iname '*.iso' -exec mv -n {} "$dir/" \;
- find "$STORAGE" -maxdepth 1 -type f -iname 'windows.*' -not -iname '*.iso' -exec mv -n {} "$dir/" \;
- find "$STORAGE" -maxdepth 1 -type f \( -iname '*.rom' -or -iname '*.vars' \) -exec mv -n {} "$dir/" \;
-
- [ -z "$(ls -A "$dir")" ] && rm -rf "$dir"
- [ -z "$(ls -A "$root")" ] && rm -rf "$root"
+ [[ "$id" == "win7"* ]] && desc="Windows 7"
+ [[ "$id" == "win8"* ]] && desc="Windows 8"
+ [[ "$id" == "win10"* ]] && desc="Windows 10"
+ [[ "$id" == "win11"* ]] && desc="Windows 11"
+ [[ "$id" == "winxp"* ]] && desc="Windows XP"
+ [[ "$id" == "winvista"* ]] && desc="Windows Vista"
+ [[ "$id" == "win2025"* ]] && desc="Windows Server 2025"
+ [[ "$id" == "win2022"* ]] && desc="Windows Server 2022"
+ [[ "$id" == "win2019"* ]] && desc="Windows Server 2019"
+ [[ "$id" == "win2016"* ]] && desc="Windows Server 2016"
+ [[ "$id" == "win2012"* ]] && desc="Windows Server 2012"
+ [[ "$id" == "win2008"* ]] && desc="Windows Server 2008"
+ [[ "$id" == "win10x64-ltsc" ]] && desc="Windows 10 LTSC"
+ echo "$desc"
return 0
}
+getName() {
+
+ local file="$1"
+ local desc=""
+
+ [[ "${file,,}" == "win11"* ]] && desc="Windows 11"
+ [[ "${file,,}" == "win10"* ]] && desc="Windows 10"
+ [[ "${file,,}" == "win8.1"* ]] && desc="Windows 8"
+ [[ "${file,,}" == "win8"* ]] && desc="Windows 8"
+ [[ "${file,,}" == "win7"* ]] && desc="Windows 7"
+ [[ "${file,,}" == "winxp"* ]] && desc="Windows XP"
+ [[ "${file,,}" == "winvista"* ]] && desc="Windows Vista"
+ [[ "${file,,}" == "tiny10"* ]] && desc="Tiny 10"
+ [[ "${file,,}" == "tiny11"* ]] && desc="Tiny 11"
+ [[ "${file,,}" == "tiny11_core"* ]] && desc="Tiny 11 Core"
+ [[ "${file,,}" == *"windows11"* ]] && desc="Windows 11"
+ [[ "${file,,}" == *"windows10"* ]] && desc="Windows 10"
+ [[ "${file,,}" == *"windows8.1"* ]] && desc="Windows 8"
+ [[ "${file,,}" == *"windows8"* ]] && desc="Windows 8"
+ [[ "${file,,}" == *"windows7"* ]] && desc="Windows 7"
+ [[ "${file,,}" == *"windowsxp"* ]] && desc="Windows XP"
+ [[ "${file,,}" == *"windowsvista"* ]] && desc="Windows Vista"
+ [[ "${file,,}" == *"windows_11"* ]] && desc="Windows 11"
+ [[ "${file,,}" == *"windows_10"* ]] && desc="Windows 10"
+ [[ "${file,,}" == *"windows_8.1"* ]] && desc="Windows 8"
+ [[ "${file,,}" == *"windows_8"* ]] && desc="Windows 8"
+ [[ "${file,,}" == *"windows_7"* ]] && desc="Windows 7"
+ [[ "${file,,}" == *"windows_xp"* ]] && desc="Windows XP"
+ [[ "${file,,}" == *"windows_vista"* ]] && desc="Windows Vista"
+ [[ "${file,,}" == *"server2008"* ]] && desc="Windows Server 2008"
+ [[ "${file,,}" == *"server2012"* ]] && desc="Windows Server 2012"
+ [[ "${file,,}" == *"server2016"* ]] && desc="Windows Server 2016"
+ [[ "${file,,}" == *"server2019"* ]] && desc="Windows Server 2019"
+ [[ "${file,,}" == *"server2022"* ]] && desc="Windows Server 2022"
+ [[ "${file,,}" == *"server2025"* ]] && desc="Windows Server 2025"
+ [[ "${file,,}" == *"server_2008"* ]] && desc="Windows Server 2008"
+ [[ "${file,,}" == *"server_2012"* ]] && desc="Windows Server 2012"
+ [[ "${file,,}" == *"server_2016"* ]] && desc="Windows Server 2016"
+ [[ "${file,,}" == *"server_2019"* ]] && desc="Windows Server 2019"
+ [[ "${file,,}" == *"server_2022"* ]] && desc="Windows Server 2022"
+ [[ "${file,,}" == *"server_2025"* ]] && desc="Windows Server 2025"
+
+ echo "$desc"
+ return 0
+}
+
+getVersion() {
+
+ local name="$1"
+ local detected=""
+
+ [[ "${name,,}" == *"windows 7"* ]] && detected="win7x64"
+ [[ "${name,,}" == *"windows 8"* ]] && detected="win81x64"
+ [[ "${name,,}" == *"windows 11"* ]] && detected="win11x64"
+ [[ "${name,,}" == *"windows vista"* ]] && detected="winvistax64"
+ [[ "${name,,}" == *"server 2025"* ]] && detected="win2025-eval"
+ [[ "${name,,}" == *"server 2022"* ]] && detected="win2022-eval"
+ [[ "${name,,}" == *"server 2019"* ]] && detected="win2019-eval"
+ [[ "${name,,}" == *"server 2016"* ]] && detected="win2016-eval"
+ [[ "${name,,}" == *"server 2012"* ]] && detected="win2012r2-eval"
+ [[ "${name,,}" == *"server 2008"* ]] && detected="win2008r2"
+
+ if [[ "${name,,}" == *"windows 10"* ]]; then
+ if [[ "${name,,}" == *"ltsc"* ]]; then
+ detected="win10x64-ltsc"
+ else
+ detected="win10x64"
+ fi
+ fi
+
+ echo "$detected"
+ return 0
+}
+
+hasDisk() {
+
+ [ -b "${DEVICE:-}" ] && return 0
+
+ if [ -f "$STORAGE/data.img" ] || [ -f "$STORAGE/data.qcow2" ]; then
+ return 0
+ fi
+
+ return 1
+}
+
skipInstall() {
- local iso="$1"
- local method=""
- local magic byte
- local boot="$STORAGE/windows.boot"
- local previous="$STORAGE/windows.base"
-
- if [ -f "$previous" ]; then
-
- previous=$(<"$previous")
- previous="${previous//[![:print:]]/}"
-
- if [ -n "$previous" ]; then
- if [[ "${STORAGE,,}/${previous,,}" != "${iso,,}" ]]; then
-
- if ! hasDisk; then
-
- rm -f "$STORAGE/$previous"
- return 1
-
- fi
-
- if [[ "${iso,,}" == "${STORAGE,,}/windows."* ]]; then
- method="your custom .iso file was changed"
- else
- if [[ "${previous,,}" != "windows."* ]]; then
- method="the VERSION variable was changed"
- else
- method="your custom .iso file was removed"
-
- if [ -f "$boot" ]; then
- info "Detected that $method, will be ignored."
- return 0
- fi
-
- fi
- fi
-
- info "Detected that $method, a backup of your previous installation will be saved..."
- ! backup "$STORAGE/$previous" && error "Backup failed!"
-
- return 1
-
- fi
- fi
-
+ if hasDisk && [ -f "$STORAGE/windows.boot" ]; then
+ return 0
fi
- [ -f "$boot" ] && hasDisk && return 0
-
- [ ! -f "$iso" ] && return 1
- [ ! -s "$iso" ] && return 1
-
- # Check if the ISO was already processed by our script
- magic=$(dd if="$iso" seek=0 bs=1 count=1 status=none | tr -d '\000')
- magic="$(printf '%s' "$magic" | od -A n -t x1 -v | tr -d ' \n')"
- byte="16" && [[ "$MANUAL" == [Yy1]* ]] && byte="17"
-
- if [[ "$magic" != "$byte" ]]; then
-
- info "The ISO will be processed again because the configuration was changed..."
- return 1
-
- fi
-
- return 0
-}
-
-startInstall() {
-
- html "Starting $APP..."
-
- if [ -z "$CUSTOM" ]; then
-
- local file="${VERSION//\//}.iso"
-
- if [[ "${VERSION,,}" == "http"* ]]; then
-
- file=$(basename "${VERSION%%\?*}")
- printf -v file '%b' "${file//%/\\x}"
- file="${file//[!A-Za-z0-9._-]/_}"
-
- else
-
- local language
- language=$(getLanguage "$LANGUAGE" "culture")
- language="${language%%-*}"
-
- if [ -n "$language" ] && [[ "${language,,}" != "en" ]]; then
- file="${VERSION//\//}_${language,,}.iso"
- fi
-
- fi
-
- BOOT="$STORAGE/$file"
-
- fi
-
- TMP="$STORAGE/tmp"
- rm -rf "$TMP"
-
- skipInstall "$BOOT" && return 1
-
- if hasDisk; then
- ! backup "" && error "Backup failed!"
- fi
-
- if ! makeDir "$TMP"; then
- error "Failed to create directory \"$TMP\" !"
- fi
-
- if [ -z "$CUSTOM" ]; then
-
- ISO=$(basename "$BOOT")
- ISO="$TMP/$ISO"
-
- if [ -f "$BOOT" ] && [ -s "$BOOT" ]; then
- mv -f "$BOOT" "$ISO"
- fi
-
- fi
-
- rm -f "$BOOT"
-
- find "$STORAGE" -maxdepth 1 -type f -iname 'data.*' -not -iname '*.iso' -delete
- find "$STORAGE" -maxdepth 1 -type f -iname 'windows.*' -not -iname '*.iso' -delete
- find "$STORAGE" -maxdepth 1 -type f \( -iname '*.rom' -or -iname '*.vars' \) -delete
-
- return 0
-}
-
-writeFile() {
-
- local txt="$1"
- local path="$2"
-
- echo "$txt" >"$path"
-
- if ! setOwner "$path"; then
- error "Failed to set the owner for \"$path\" !"
- fi
-
- return 0
+ return 1
}
finishInstall() {
local iso="$1"
- local aborted="$2"
- local base byte
- if [ ! -s "$iso" ] || [ ! -f "$iso" ]; then
- error "Failed to find ISO file: $iso" && return 1
- fi
+ # Mark ISO as prepared via magic byte
+ printf '\x16' | dd of="$iso" bs=1 seek=0 count=1 conv=notrunc status=none
- if [[ "$iso" == "$STORAGE/"* ]]; then
- ! setOwner "$iso" && error "Failed to set the owner for \"$iso\" !"
- fi
+ rm -f "$STORAGE/windows.boot"
+ cp /run/version "$STORAGE/windows.ver"
- if [[ "$aborted" != [Yy1]* ]]; then
- # Mark ISO as prepared via magic byte
- byte="16" && [[ "$MANUAL" == [Yy1]* ]] && byte="17"
- if ! printf '%b' "\x$byte" | dd of="$iso" bs=1 seek=0 count=1 conv=notrunc status=none; then
- warn "failed to set magic byte in ISO file: $iso"
- fi
- fi
-
- local file="$STORAGE/windows.ver"
- cp -f /run/version "$file"
- ! setOwner "$file" && error "Failed to set the owner for \"$file\" !"
-
- if [[ "$iso" == "$STORAGE/"* ]]; then
- if [[ "$aborted" != [Yy1]* ]] || [ -z "$CUSTOM" ]; then
- base=$(basename "$iso")
- file="$STORAGE/windows.base"
- writeFile "$base" "$file"
- fi
- fi
-
- if [[ "${PLATFORM,,}" == "x64" ]]; then
- if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then
- file="$STORAGE/windows.mode"
- writeFile "$BOOT_MODE" "$file"
- if [[ "${MACHINE,,}" != "q35" ]]; then
- file="$STORAGE/windows.old"
- writeFile "$MACHINE" "$file"
- fi
- else
- # Enable secure boot + TPM on manual installs as Win11 requires
- if [[ "$MANUAL" == [Yy1]* || "$aborted" == [Yy1]* ]]; then
- if [[ "${DETECTED,,}" == "win11"* ]]; then
- BOOT_MODE="windows_secure"
- file="$STORAGE/windows.mode"
- writeFile "$BOOT_MODE" "$file"
- fi
- fi
- # Enable secure boot on multi-socket systems to workaround freeze
- if [ -n "$SOCKETS" ] && [[ "$SOCKETS" != "1" ]]; then
- BOOT_MODE="windows_secure"
- file="$STORAGE/windows.mode"
- writeFile "$BOOT_MODE" "$file"
- fi
- fi
- fi
-
- if [ -n "${ARGS:-}" ]; then
- ARGUMENTS="$ARGS ${ARGUMENTS:-}"
- file="$STORAGE/windows.args"
- writeFile "$ARGS" "$file"
- fi
-
- if [ -n "${VGA:-}" ] && [[ "${VGA:-}" != "virtio"* ]]; then
- file="$STORAGE/windows.vga"
- writeFile "$VGA" "$file"
- fi
-
- if [ -n "${USB:-}" ] && [[ "${USB:-}" != "qemu-xhci"* ]]; then
- file="$STORAGE/windows.usb"
- writeFile "$USB" "$file"
- fi
-
- if [ -n "${DISK_TYPE:-}" ] && [[ "${DISK_TYPE:-}" != "scsi" ]]; then
- file="$STORAGE/windows.type"
- writeFile "$DISK_TYPE" "$file"
- fi
-
- if [ -n "${ADAPTER:-}" ] && [[ "${ADAPTER:-}" != "virtio-net-pci" ]]; then
- file="$STORAGE/windows.net"
- writeFile "$ADAPTER" "$file"
+ if [[ "${BOOT_MODE,,}" == "windows_legacy" ]]; then
+ echo "$MACHINE" > "$STORAGE/windows.old"
+ else
+ rm -f "$STORAGE/windows.old"
fi
rm -rf "$TMP"
@@ -293,82 +241,241 @@ finishInstall() {
abortInstall() {
- local dir="$1"
- local iso="$2"
- local efi
+ local iso="$1"
- [[ "${iso,,}" == *".esd" ]] && exit 60
- [[ "${UNPACK:-}" == [Yy1]* ]] && exit 60
-
- efi=$(find "$dir" -maxdepth 1 -type d -iname efi -print -quit)
-
- if [ -z "$efi" ]; then
- [[ "${PLATFORM,,}" == "x64" ]] && BOOT_MODE="windows_legacy"
+ if [[ "$iso" != "$STORAGE/$BASE" ]]; then
+ mv -f "$iso" "$STORAGE/$BASE"
fi
- if [ -n "$CUSTOM" ]; then
- BOOT="$iso"
- REMOVE="N"
- else
- if [[ "$iso" != "$BOOT" ]]; then
- if ! mv -f "$iso" "$BOOT"; then
- error "Failed to move ISO file: $iso" && return 1
- fi
- fi
- fi
-
- finishInstall "$BOOT" "Y" && return 0
- return 1
-}
-
-findFile() {
-
- local dir file base
- local fname="$1"
- local boot="$STORAGE/windows.boot"
-
- dir=$(find / -maxdepth 1 -type d -iname "$fname" -print -quit)
- [ ! -d "$dir" ] && dir=$(find "$STORAGE" -maxdepth 1 -type d -iname "$fname" -print -quit)
-
- if [ -d "$dir" ]; then
- if ! hasDisk || [ ! -f "$boot" ]; then
- error "The bind $dir maps to a file that does not exist!" && return 1
- fi
- fi
-
- file=$(find / -maxdepth 1 -type f -iname "$fname" -print -quit)
- [ ! -s "$file" ] && file=$(find "$STORAGE" -maxdepth 1 -type f -iname "$fname" -print -quit)
-
- if [ ! -s "$file" ] && [[ "${VERSION,,}" != "http"* ]]; then
- base=$(basename "$VERSION")
- file="$STORAGE/$base"
- fi
-
- if [ ! -f "$file" ] || [ ! -s "$file" ]; then
- return 0
- fi
-
- local size
- size="$(stat -c%s "$file")"
- [ -z "$size" ] || [[ "$size" == "0" ]] && return 0
-
- ISO="$file"
- CUSTOM="$file"
- BOOT="$STORAGE/windows.$size.iso"
-
+ finishInstall "$STORAGE/$BASE"
return 0
}
-detectCustom() {
+startInstall() {
- CUSTOM=""
+ html "Starting Windows..."
- ! findFile "custom.iso" && return 1
- [ -n "$CUSTOM" ] && return 0
+ if [ -f "$STORAGE/$CUSTOM" ]; then
- ! findFile "boot.iso" && return 1
- [ -n "$CUSTOM" ] && return 0
+ EXTERNAL="Y"
+ BASE="$CUSTOM"
+ else
+
+ CUSTOM=""
+
+ if [[ "${VERSION,,}" == "http"* ]]; then
+ EXTERNAL="Y"
+ else
+ EXTERNAL="N"
+ fi
+
+ if [[ "$EXTERNAL" != [Yy1]* ]]; then
+
+ BASE="$VERSION.iso"
+
+ else
+
+ BASE=$(basename "${VERSION%%\?*}")
+ : "${BASE//+/ }"; printf -v BASE '%b' "${_//%/\\x}"
+ BASE=$(echo "$BASE" | sed -e 's/[^A-Za-z0-9._-]/_/g')
+
+ fi
+
+ [[ "${BASE,,}" == "boot."* ]] && BASE="windows.iso"
+ [[ "${BASE,,}" == "custom."* ]] && BASE="windows.iso"
+
+ fi
+
+ [ -z "$MANUAL" ] && MANUAL="N"
+
+ if [ -f "$STORAGE/$BASE" ]; then
+
+ # Check if the ISO was already processed by our script
+ local magic=""
+ magic=$(dd if="$STORAGE/$BASE" seek=0 bs=1 count=1 status=none | tr -d '\000')
+ magic="$(printf '%s' "$magic" | od -A n -t x1 -v | tr -d ' \n')"
+
+ if [[ "$magic" == "16" ]]; then
+
+ if hasDisk || [[ "$MANUAL" = [Yy1]* ]]; then
+ return 1
+ fi
+
+ fi
+
+ EXTERNAL="Y"
+ CUSTOM="$BASE"
+
+ else
+
+ if skipInstall; then
+ BASE=""
+ return 1
+ fi
+
+ fi
+
+ mkdir -p "$TMP"
+
+ if [ ! -f "$STORAGE/$CUSTOM" ]; then
+ CUSTOM=""
+ ISO="$TMP/$BASE"
+ else
+ ISO="$STORAGE/$CUSTOM"
+ fi
+
+ rm -f "$TMP/$BASE"
+ return 0
+}
+
+getESD() {
+
+ local dir="$1"
+ local file="$2"
+ local architecture="x64"
+ local winCatalog size
+
+ case "${VERSION,,}" in
+ win11x64)
+ winCatalog="https://go.microsoft.com/fwlink?linkid=2156292"
+ ;;
+ win10x64)
+ winCatalog="https://go.microsoft.com/fwlink/?LinkId=841361"
+ ;;
+ *)
+ error "Invalid ESD version specified: $VERSION"
+ return 1
+ ;;
+ esac
+
+ local msg="Downloading product information from Microsoft..."
+ info "$msg" && html "$msg"
+
+ rm -rf "$dir"
+ mkdir -p "$dir"
+
+ local wFile="catalog.cab"
+
+ { wget "$winCatalog" -O "$dir/$wFile" -q --no-check-certificate; rc=$?; } || :
+ (( rc != 0 )) && error "Failed to download $winCatalog , reason: $rc" && return 1
+
+ cd "$dir"
+
+ if ! cabextract "$wFile" > /dev/null; then
+ cd /run
+ error "Failed to extract CAB file!" && return 1
+ fi
+
+ cd /run
+
+ if [ ! -f "$dir/products.xml" ]; then
+ error "Failed to find products.xml!" && return 1
+ fi
+
+ local esdLang="en-us"
+ local editionName="Professional"
+ local edQuery='//File[Architecture="'${architecture}'"][Edition="'${editionName}'"]'
+
+ echo -e '' > "${dir}/products_filter.xml"
+ xmllint --nonet --xpath "${edQuery}" "${dir}/products.xml" >> "${dir}/products_filter.xml" 2>/dev/null
+ echo -e ''>> "${dir}/products_filter.xml"
+ xmllint --nonet --xpath '//File[LanguageCode="'${esdLang}'"]' "${dir}/products_filter.xml" >"${dir}/esd_edition.xml"
+
+ size=$(stat -c%s "${dir}/esd_edition.xml")
+ if ((size<20)); then
+ error "Failed to find Windows product!" && return 1
+ fi
+
+ ESD_URL=$(xmllint --nonet --xpath '//FilePath' "${dir}/esd_edition.xml" | sed -E -e 's/<[\/]?FilePath>//g')
+
+ if [ -z "$ESD_URL" ]; then
+ error "Failed to find ESD url!" && return 1
+ fi
+
+ rm -rf "$dir"
+ return 0
+}
+
+downloadImage() {
+
+ local iso="$1"
+ local url="$2"
+ local file="$iso"
+ local desc rc progress
+
+ rm -f "$iso"
+
+ if [[ "$EXTERNAL" != [Yy1]* ]]; then
+
+ file="$iso.PART"
+ desc=$(printVersion "$VERSION")
+ [ -z "$desc" ] && desc="Windows"
+
+ else
+
+ desc=$(getName "$BASE")
+ [ -z "$desc" ] && desc="$BASE"
+
+ fi
+
+ local msg="Downloading $desc..."
+ info "$msg" && html "$msg"
+ /run/progress.sh "$file" "Downloading $desc ([P])..." &
+
+ if [[ "$EXTERNAL" != [Yy1]* ]]; then
+
+ cd "$TMP"
+ { /run/mido.sh "$url"; rc=$?; } || :
+ cd /run
+
+ fKill "progress.sh"
+
+ if (( rc == 0 )); then
+
+ [ ! -f "$iso" ] && return 1
+
+ html "Download finished successfully..."
+ return 0
+ fi
+
+ if [[ "$VERSION" != "win10x64"* ]] && [[ "$VERSION" != "win11x64" ]]; then
+ return 1
+ fi
+
+ info "Failed to download $desc using Mido, will try a different method now..."
+
+ ISO="$TMP/$VERSION.esd"
+ iso="$ISO"
+ file="$ISO"
+ rm -f "$iso"
+
+ if ! getESD "$TMP/esd" "$iso"; then
+ return 1
+ fi
+
+ url="$ESD_URL"
+ msg="Downloading $desc..."
+ info "$msg" && html "$msg"
+ /run/progress.sh "$iso" "Downloading $desc ([P])..." &
+
+ fi
+
+ # Check if running with interactive TTY or redirected to docker log
+ if [ -t 1 ]; then
+ progress="--progress=bar:noscroll"
+ else
+ progress="--progress=dot:giga"
+ fi
+
+ { wget "$url" -O "$iso" -q --no-check-certificate --show-progress "$progress"; rc=$?; } || :
+
+ fKill "progress.sh"
+ (( rc != 0 )) && error "Failed to download $url , reason: $rc" && exit 60
+
+ [ ! -f "$iso" ] && return 1
+
+ html "Download finished successfully..."
return 0
}
@@ -376,440 +483,420 @@ extractESD() {
local iso="$1"
local dir="$2"
- local version="$3"
- local desc="$4"
- local size size_gb sizes space space_gb
- local desc total total1 total2 total3 total4
- local imageIndex links links1 links2 links3 links4
+ local size size_gb space space_gb desc
- local msg="Extracting $desc bootdisk"
- info "$msg..." && html "$msg..."
+ desc=$(printVersion "$VERSION")
+ local msg="Extracting $desc bootdisk..."
+ info "$msg" && html "$msg"
- if [ "$(stat -c%s "$iso")" -lt 100000000 ]; then
- error "Invalid ESD file: Size is smaller than 100 MB" && return 1
+ size=16106127360
+ size_gb=$(( (size + 1073741823)/1073741824 ))
+ space=$(df --output=avail -B 1 "$TMP" | tail -n 1)
+ space_gb=$(( (space + 1073741823)/1073741824 ))
+
+ if ((size<10000000)); then
+ error "Invalid ESD file: Size is smaller than 10 MB" && exit 62
+ fi
+
+ if (( size > space )); then
+ error "Not enough free space in $STORAGE, have $space_gb GB available but need at least $size_gb GB." && exit 63
fi
rm -rf "$dir"
-
- if ! makeDir "$dir"; then
- error "Failed to create directory \"$dir\" !" && return 1
- fi
-
- size=9606127360
- size_gb=$(formatBytes "$size")
- space=$(df --output=avail -B 1 "$dir" | tail -n 1)
- space_gb=$(formatBytes "$space")
-
- if (( size > space )); then
- error "Not enough free space in $STORAGE, have $space_gb available but need at least $size_gb." && return 1
- fi
+ mkdir -p "$dir"
local esdImageCount
- esdImageCount=$(wimlib-imagex info "$iso" | awk '/Image Count:/ {print $3}')
+ esdImageCount=$(wimlib-imagex info "${iso}" | awk '/Image Count:/ {print $3}')
- if [ -z "$esdImageCount" ]; then
- error "Cannot read the image count in ESD file!" && return 1
- fi
-
- sizes=$(wimlib-imagex info "$iso" | grep "Total Bytes:")
- links=$(wimlib-imagex info "$iso" | grep "Hard Link Bytes:")
-
- total1=$(awk "NR==1{ print; }" <<< "$sizes" | cut -d':' -f2 | sed 's/^ *//')
- links1=$(awk "NR==1{ print; }" <<< "$links" | cut -d':' -f2 | sed 's/^ *//')
- total=$(( total1 - links1 ))
-
- total3=$(awk "NR==3{ print; }" <<< "$sizes" | cut -d':' -f2 | sed 's/^ *//')
- links3=$(awk "NR==3{ print; }" <<< "$links" | cut -d':' -f2 | sed 's/^ *//')
- total3=$(( total3 - links3 ))
- total3=$(( total3 + 60000000 ))
-
- /run/progress.sh "$dir" "$total" "$msg ([P])..." &
-
- imageIndex="1"
- wimlib-imagex apply "$iso" "$imageIndex" "$dir" --quiet 2>/dev/null || {
+ wimlib-imagex apply "$iso" 1 "${dir}" --quiet 2>/dev/null || {
retVal=$?
- fKill "progress.sh"
- error "Extracting $desc bootdisk failed ($retVal)" && return 1
+ error "Extracting bootdisk failed" && return $retVal
}
- fKill "progress.sh"
+ local bootWimFile="${dir}/sources/boot.wim"
+ local installWimFile="${dir}/sources/install.wim"
- local bootWimFile="$dir/sources/boot.wim"
- local installWimFile="$dir/sources/install.wim"
+ local msg="Extracting $desc environment..."
+ info "$msg" && html "$msg"
- local msg="Extracting $desc environment"
- info "$msg..." && html "$msg..."
-
- imageIndex="2"
- /run/progress.sh "$bootWimFile" "$total3" "$msg ([P])..." &
-
- wimlib-imagex export "$iso" "$imageIndex" "$bootWimFile" --compress=none --quiet || {
+ wimlib-imagex export "${iso}" 2 "${bootWimFile}" --compress=LZX --chunk-size 32K --quiet || {
retVal=$?
- fKill "progress.sh"
- error "Adding WinPE failed ($retVal)" && return 1
+ error "Adding WinPE failed" && return ${retVal}
}
- fKill "progress.sh"
+ local msg="Extracting $desc setup..."
+ info "$msg" && html "$msg"
- local msg="Extracting $desc setup"
- info "$msg..."
-
- imageIndex="3"
- /run/progress.sh "$bootWimFile" "$total3" "$msg ([P])..." &
-
- wimlib-imagex export "$iso" "$imageIndex" "$bootWimFile" --compress=none --boot --quiet || {
+ wimlib-imagex export "${iso}" 3 "$bootWimFile" --compress=LZX --chunk-size 32K --boot --quiet || {
retVal=$?
- fKill "progress.sh"
- error "Adding Windows Setup failed ($retVal)" && return 1
+ error "Adding Windows Setup failed" && return ${retVal}
}
- fKill "progress.sh"
+ local msg="Extracting $desc image..."
+ info "$msg" && html "$msg"
- if [[ "${PLATFORM,,}" == "x64" ]]; then
- LABEL="CCCOMA_X64FRE_EN-US_DV9"
- else
- LABEL="CPBA_A64FRE_EN-US_DV9"
- fi
+ local edition imageIndex imageEdition
- local msg="Extracting $desc image"
- info "$msg..." && html "$msg..."
-
- local edition imageEdition
- edition=$(getCatalog "$version" "name")
-
- if [ -z "$edition" ]; then
- error "Invalid VERSION specified, value \"$version\" is not recognized!" && return 1
- fi
+ case "${VERSION,,}" in
+ win11x64)
+ edition="11 pro"
+ ;;
+ win10x64)
+ edition="10 pro"
+ ;;
+ *)
+ error "Invalid version specified: $VERSION"
+ return 1
+ ;;
+ esac
for (( imageIndex=4; imageIndex<=esdImageCount; imageIndex++ )); do
-
- imageEdition=$(wimlib-imagex info "$iso" "$imageIndex" | grep '^Description:' | sed 's/Description:[ \t]*//')
- [[ "${imageEdition,,}" != "${edition,,}" ]] && continue
-
- total4=$(du -sb "$iso" | cut -f1)
- total4=$(( total4 + 3000000 ))
-
- /run/progress.sh "$installWimFile" "$total4" "$msg ([P])..." &
-
- wimlib-imagex export "$iso" "$imageIndex" "$installWimFile" --compress=LZMS --chunk-size 128K --quiet || {
+ imageEdition=$(wimlib-imagex info "${iso}" ${imageIndex} | grep '^Description:' | sed 's/Description:[ \t]*//')
+ [[ "${imageEdition,,}" != *"$edition"* ]] && continue
+ wimlib-imagex export "${iso}" ${imageIndex} "${installWimFile}" --compress=LZMS --chunk-size 128K --quiet || {
retVal=$?
- fKill "progress.sh"
- error "Addition of $imageIndex to the $desc image failed ($retVal)" && return 1
+ error "Addition of ${imageIndex} to the image failed" && return $retVal
}
-
- fKill "progress.sh"
return 0
-
done
- fKill "progress.sh"
- error "Failed to find product '$edition' in install.wim!" && return 1
+ error "Failed to find product in install.wim!"
+ return 1
}
extractImage() {
local iso="$1"
local dir="$2"
- local version="$3"
- local desc="local ISO"
- local file size size_gb space space_gb
-
- if [ -z "$CUSTOM" ]; then
- desc="downloaded ISO"
- if [[ "$version" != "http"* ]]; then
- desc=$(printVersion "$version" "$desc")
- fi
- fi
+ local desc="downloaded ISO"
+ local size size_gb space space_gb
if [[ "${iso,,}" == *".esd" ]]; then
- extractESD "$iso" "$dir" "$version" "$desc" && return 0
- return 1
+ if ! extractESD "$iso" "$dir"; then
+ error "Failed to extract ESD file!"
+ exit 67
+ fi
+ return 0
fi
- local msg="Extracting $desc image"
- info "$msg..." && html "$msg..."
-
- rm -rf "$dir"
-
- if ! makeDir "$dir"; then
- error "Failed to create directory \"$dir\" !" && return 1
+ if [[ "$EXTERNAL" != [Yy1]* ]] && [ -z "$CUSTOM" ]; then
+ desc=$(printVersion "$VERSION")
+ [ -z "$desc" ] && desc="downloaded ISO"
fi
+ local msg="Extracting $desc image..."
+ [ -n "$CUSTOM" ] && msg="Extracting local ISO image..."
+ info "$msg" && html "$msg"
+
size=$(stat -c%s "$iso")
- size_gb=$(formatBytes "$size")
- space=$(df --output=avail -B 1 "$dir" | tail -n 1)
- space_gb=$(formatBytes "$space")
+ size_gb=$(( (size + 1073741823)/1073741824 ))
+ space=$(df --output=avail -B 1 "$TMP" | tail -n 1)
+ space_gb=$(( (space + 1073741823)/1073741824 ))
- if (( size < 100000000 )); then
- error "Invalid ISO file: Size is smaller than 100 MB" && return 1
+ if ((size<10000000)); then
+ error "Invalid ISO file: Size is smaller than 10 MB" && exit 62
fi
if (( size > space )); then
- error "Not enough free space in $STORAGE, have $space_gb available but need at least $size_gb." && return 1
+ error "Not enough free space in $STORAGE, have $space_gb GB available but need at least $size_gb GB." && exit 63
fi
rm -rf "$dir"
- /run/progress.sh "$dir" "$size" "$msg ([P])..." &
if ! 7z x "$iso" -o"$dir" > /dev/null; then
- fKill "progress.sh"
- error "Failed to extract ISO file: $iso" && return 1
+ error "Failed to extract ISO file!"
+ exit 66
fi
- fKill "progress.sh"
-
- if [[ "${UNPACK:-}" != [Yy1]* ]]; then
-
- LABEL=$(isoinfo -d -i "$iso" | sed -n 's/Volume id: //p')
-
- else
-
- file=$(find "$dir" -maxdepth 1 -type f -iname "*.iso" -print -quit)
-
- if [ -z "$file" ]; then
- error "Failed to find any .iso file in archive!" && return 1
- fi
-
- if ! 7z x "$file" -o"$dir" > /dev/null; then
- error "Failed to extract archive!" && return 1
- fi
-
- LABEL=$(isoinfo -d -i "$file" | sed -n 's/Volume id: //p')
- rm -f "$file"
-
- fi
-
- return 0
-}
-
-getPlatform() {
-
- local xml="$1"
- local tag="ARCH"
- local platform="x64"
- local arch
-
- arch=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$xml")
-
- case "${arch,,}" in
- "0" ) platform="x86" ;;
- "9" ) platform="x64" ;;
- "12" )platform="arm64" ;;
- esac
-
- echo "$platform"
- return 0
-}
-
-checkPlatform() {
-
- local xml="$1"
- local platform compat
-
- platform=$(getPlatform "$xml")
-
- case "${platform,,}" in
- "x86" ) compat="x64" ;;
- "x64" ) compat="$platform" ;;
- "arm64" ) compat="$platform" ;;
- * ) compat="${PLATFORM,,}" ;;
- esac
-
- [[ "${compat,,}" == "${PLATFORM,,}" ]] && return 0
-
- error "You cannot boot ${platform^^} images on a $PLATFORM CPU!"
- return 1
-}
-
-hasVersion() {
-
- local id="$1"
- local tag="$2"
- local xml="$3"
- local edition
-
- [ ! -f "/run/assets/$id.xml" ] && return 1
-
- edition=$(printEdition "$id" "")
- [ -z "$edition" ] && return 1
- [[ "${xml,,}" != *"<${tag,,}>${edition,,}${tag,,}>"* ]] && return 1
-
- return 0
-}
-
-selectVersion() {
-
- local tag="$1"
- local xml="$2"
- local platform="$3"
- local id name prefer
-
- name=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$xml")
- [[ "$name" == *"Operating System"* ]] && name=""
- [ -z "$name" ] && return 0
-
- id=$(fromName "$name" "$platform")
- [ -z "$id" ] && warn "Unknown ${tag,,}: '$name'" && return 0
-
- prefer="$id-enterprise"
- hasVersion "$prefer" "$tag" "$xml" && echo "$prefer" && return 0
-
- prefer="$id-ultimate"
- hasVersion "$prefer" "$tag" "$xml" && echo "$prefer" && return 0
-
- prefer="$id"
- hasVersion "$prefer" "$tag" "$xml" && echo "$prefer" && return 0
-
- prefer=$(getVersion "$name" "$platform")
-
- echo "$prefer"
- return 0
-}
-
-detectVersion() {
-
- local xml="$1"
- local id platform
-
- platform=$(getPlatform "$xml")
- id=$(selectVersion "DISPLAYNAME" "$xml" "$platform")
- [ -z "$id" ] && id=$(selectVersion "PRODUCTNAME" "$xml" "$platform")
- [ -z "$id" ] && id=$(selectVersion "NAME" "$xml" "$platform")
-
- echo "$id"
- return 0
-}
-
-detectLanguage() {
-
- local xml="$1"
- local lang=""
-
- if [[ "$xml" == *"LANGUAGE>"* ]]; then
- lang="${xml#*LANGUAGE>}"
- lang="${lang%%<*}"
- else
- if [[ "$xml" == *"FALLBACK>"* ]]; then
- lang="${xml#*FALLBACK>}"
- lang="${lang%%<*}"
- fi
- fi
-
- if [ -z "$lang" ]; then
- warn "Language could not be detected from ISO!" && return 0
- fi
-
- local culture
- culture=$(getLanguage "$lang" "culture")
- [ -n "$culture" ] && LANGUAGE="$lang" && return 0
-
- warn "Invalid language detected: \"$lang\""
- return 0
-}
-
-setXML() {
-
- local file="/custom.xml"
-
- if [ -d "$file" ]; then
- error "The bind $file maps to a file that does not exist!" && exit 67
- fi
-
- [ ! -f "$file" ] || [ ! -s "$file" ] && file="$STORAGE/custom.xml"
- [ ! -f "$file" ] || [ ! -s "$file" ] && file="/run/assets/custom.xml"
- [ ! -f "$file" ] || [ ! -s "$file" ] && file="$1"
- [ ! -f "$file" ] || [ ! -s "$file" ] && file="/run/assets/$DETECTED.xml"
- [ ! -f "$file" ] || [ ! -s "$file" ] && return 1
-
- XML="$file"
return 0
}
detectImage() {
- local dir="$1"
- local version="$2"
- local desc msg find language
-
XML=""
+ local dir="$1"
- if [ -z "$DETECTED" ] && [ -z "$CUSTOM" ]; then
- [[ "${version,,}" != "http"* ]] && DETECTED="$version"
+ if [ -n "$CUSTOM" ]; then
+ DETECTED=""
+ else
+ if [ -z "$DETECTED" ] && [[ "$EXTERNAL" != [Yy1]* ]]; then
+ DETECTED="$VERSION"
+ fi
fi
if [ -n "$DETECTED" ]; then
- skipVersion "${DETECTED,,}" && return 0
+ if [ -f "/run/assets/$DETECTED.xml" ]; then
+ [[ "$MANUAL" != [Yy1]* ]] && XML="$DETECTED.xml"
+ return 0
+ fi
- if ! setXML "" && [[ "$MANUAL" != [Yy1]* ]]; then
- MANUAL="Y"
- desc=$(printEdition "$DETECTED" "this version")
- warn "the answer file for $desc was not found ($DETECTED.xml), $FB."
+ if [[ "${DETECTED,,}" != "winxp"* ]]; then
+
+ local dsc
+ dsc=$(printVersion "$DETECTED")
+ [ -z "$dsc" ] && dsc="$DETECTED"
+
+ warn "got $dsc, but no matching XML file exists, $FB."
fi
return 0
fi
- info "Detecting version from ISO image..."
+ info "Detecting Windows version from ISO image..."
- if detectLegacy "$dir"; then
- desc=$(printEdition "$DETECTED" "$DETECTED")
- info "Detected: $desc"
+ if [ -f "$dir/WIN51" ] || [ -f "$dir/SETUPXP.HTM" ]; then
+ DETECTED="winxpx86"
+ info "Detected: Windows XP"
return 0
fi
- local src wim info
- src=$(find "$dir" -maxdepth 1 -type d -iname sources -print -quit)
+ local src loc tag result name name2 desc
+ src=$(find "$dir" -maxdepth 1 -type d -iname sources | head -n 1)
if [ ! -d "$src" ]; then
- warn "failed to locate 'sources' folder in ISO image, $FB" && return 1
+ warn "failed to locate 'sources' folder in ISO image, $FB"
+ BOOT_MODE="windows_legacy"
+ return 1
fi
- wim=$(find "$src" -maxdepth 1 -type f \( -iname install.wim -or -iname install.esd \) -print -quit)
+ loc=$(find "$src" -maxdepth 1 -type f -iname install.wim | head -n 1)
+ [ ! -f "$loc" ] && loc=$(find "$src" -maxdepth 1 -type f -iname install.esd | head -n 1)
- if [ ! -f "$wim" ]; then
- warn "failed to locate 'install.wim' or 'install.esd' in ISO image, $FB" && return 1
+ if [ ! -f "$loc" ]; then
+ warn "failed to locate 'install.wim' or 'install.esd' in ISO image, $FB"
+ BOOT_MODE="windows_legacy"
+ return 1
fi
- info=$(wimlib-imagex info -xml "$wim" | iconv -f UTF-16LE -t UTF-8)
- checkPlatform "$info" || exit 67
-
- DETECTED=$(detectVersion "$info")
+ tag="DISPLAYNAME"
+ result=$(wimlib-imagex info -xml "$loc" | tr -d '\000')
+ name=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$result")
+ DETECTED=$(getVersion "$name")
if [ -z "$DETECTED" ]; then
- msg="Failed to determine Windows version from image"
- if setXML "" || [[ "$MANUAL" == [Yy1]* ]]; then
- info "${msg}!"
- else
- MANUAL="Y"
- warn "${msg}, $FB."
- fi
+
+ tag="PRODUCTNAME"
+ name2=$(sed -n "/$tag/{s/.*<$tag>\(.*\)<\/$tag>.*/\1/;p}" <<< "$result")
+ [ -z "$name" ] && name="$name2"
+ DETECTED=$(getVersion "$name2")
+
+ fi
+
+ if [ -z "$DETECTED" ]; then
+ warn "failed to determine Windows version from string '$name', $FB"
return 0
fi
- desc=$(printEdition "$DETECTED" "$DETECTED")
- detectLanguage "$info"
+ desc=$(printVersion "$DETECTED")
+ [ -z "$desc" ] && desc="$DETECTED"
- if [[ "${LANGUAGE,,}" != "en" && "${LANGUAGE,,}" != "en-"* ]]; then
- language=$(getLanguage "$LANGUAGE" "desc")
- desc+=" ($language)"
- fi
-
- info "Detected: $desc"
- setXML "" && return 0
-
- if [[ "$DETECTED" == "win81x86"* || "$DETECTED" == "win10x86"* ]]; then
- error "The 32-bit version of $desc is not supported!" && return 1
- fi
-
- msg="the answer file for $desc was not found ($DETECTED.xml)"
- local fallback="/run/assets/${DETECTED%%-*}.xml"
-
- if setXML "$fallback" || [[ "$MANUAL" == [Yy1]* ]]; then
- [[ "$MANUAL" != [Yy1]* ]] && warn "${msg}."
+ if [ -f "/run/assets/$DETECTED.xml" ]; then
+ [[ "$MANUAL" != [Yy1]* ]] && XML="$DETECTED.xml"
+ info "Detected: $desc"
else
- MANUAL="Y"
- warn "${msg}, $FB."
+ warn "detected $desc, but no matching XML file exists, $FB."
+ fi
+
+ return 0
+}
+
+prepareXP() {
+
+ local iso="$1"
+ local dir="$2"
+ local arch="x86"
+ local target="$dir/I386"
+
+ if [ -d "$dir/AMD64" ]; then
+ arch="amd64"
+ target="$dir/AMD64"
+ fi
+
+ MACHINE="pc-q35-2.10"
+ BOOT_MODE="windows_legacy"
+ ETFS="[BOOT]/Boot-NoEmul.img"
+
+ [[ "$MANUAL" == [Yy1]* ]] && return 0
+
+ local drivers="$TMP/drivers"
+ rm -rf "$drivers"
+
+ if ! 7z x /run/drivers.iso -o"$drivers" > /dev/null; then
+ error "Failed to extract driver ISO file!"
+ exit 66
+ fi
+
+ cp "$drivers/viostor/xp/$arch/viostor.sys" "$target"
+
+ mkdir -p "$dir/\$OEM\$/\$1/Drivers/viostor"
+ cp "$drivers/viostor/xp/$arch/viostor.cat" "$dir/\$OEM\$/\$1/Drivers/viostor"
+ cp "$drivers/viostor/xp/$arch/viostor.inf" "$dir/\$OEM\$/\$1/Drivers/viostor"
+ cp "$drivers/viostor/xp/$arch/viostor.sys" "$dir/\$OEM\$/\$1/Drivers/viostor"
+
+ mkdir -p "$dir/\$OEM\$/\$1/Drivers/NetKVM"
+ cp "$drivers/NetKVM/xp/$arch/netkvm.cat" "$dir/\$OEM\$/\$1/Drivers/NetKVM"
+ cp "$drivers/NetKVM/xp/$arch/netkvm.inf" "$dir/\$OEM\$/\$1/Drivers/NetKVM"
+ cp "$drivers/NetKVM/xp/$arch/netkvm.sys" "$dir/\$OEM\$/\$1/Drivers/NetKVM"
+
+ sed -i '/^\[SCSI.Load\]/s/$/\nviostor=viostor.sys,4/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\nviostor.sys=1,,,,,,4_,4,1,,,1,4/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[SCSI\]/s/$/\nviostor=\"Red Hat VirtIO SCSI Disk Device\"/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00000000=\"viostor\"/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00020000=\"viostor\"/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00021AF4=\"viostor\"/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_1AF4\&DEV_1001\&SUBSYS_00000000=\"viostor\"/' "$target/TXTSETUP.SIF"
+
+ mkdir -p "$dir/\$OEM\$/\$1/Drivers/sata"
+
+ cp -a "$drivers/sata/xp/$arch/." "$dir/\$OEM\$/\$1/Drivers/sata"
+ cp -a "$drivers/sata/xp/$arch/." "$target"
+
+ sed -i '/^\[SCSI.Load\]/s/$/\niaStor=iaStor.sys,4/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[FileFlags\]/s/$/\niaStor.sys = 16/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.cat = 1,,,,,,,1,0,0/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.inf = 1,,,,,,,1,0,0/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.sys = 1,,,,,,4_,4,1,,,1,4/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaStor.sys = 1,,,,,,,1,0,0/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaahci.cat = 1,,,,,,,1,0,0/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[SourceDisksFiles.'"$arch"'\]/s/$/\niaAHCI.inf = 1,,,,,,,1,0,0/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[SCSI\]/s/$/\niaStor=\"Intel\(R\) SATA RAID\/AHCI Controller\"/' "$target/TXTSETUP.SIF"
+ sed -i '/^\[HardwareIdsDatabase\]/s/$/\nPCI\\VEN_8086\&DEV_2922\&CC_0106=\"iaStor\"/' "$target/TXTSETUP.SIF"
+
+ # Windows XP Pro generic key (no activation)
+ local key="DR8GV-C8V6J-BYXHG-7PYJR-DB66Y"
+
+ find "$target" -maxdepth 1 -type f -iname winnt.sif -exec rm {} \;
+
+ { echo "[Data]"
+ echo "AutoPartition=1"
+ echo "MsDosInitiated=\"0\""
+ echo "UnattendedInstall=\"Yes\""
+ echo "AutomaticUpdates=\"Yes\""
+ echo ""
+ echo "[Unattended]"
+ echo "UnattendSwitch=Yes"
+ echo "UnattendMode=FullUnattended"
+ echo "FileSystem=NTFS"
+ echo "OemSkipEula=Yes"
+ echo "OemPreinstall=Yes"
+ echo "Repartition=Yes"
+ echo "WaitForReboot=\"No\""
+ echo "DriverSigningPolicy=\"Ignore\""
+ echo "NonDriverSigningPolicy=\"Ignore\""
+ echo "OemPnPDriversPath=\"Drivers\viostor;Drivers\NetKVM;Drivers\sata\""
+ echo "NoWaitAfterTextMode=1"
+ echo "NoWaitAfterGUIMode=1"
+ echo "FileSystem-ConvertNTFS"
+ echo "ExtendOemPartition=0"
+ echo "Hibernation=\"No\""
+ echo ""
+ echo "[GuiUnattended]"
+ echo "OEMSkipRegional=1"
+ echo "OemSkipWelcome=1"
+ echo "AdminPassword=*"
+ echo "TimeZone=0"
+ echo "AutoLogon=Yes"
+ echo "AutoLogonCount=65432"
+ echo ""
+ echo "[UserData]"
+ echo "FullName=\"Docker\""
+ echo "ComputerName=\"*\""
+ echo "OrgName=\"Windows for Docker\""
+ echo "ProductKey=$key"
+ echo ""
+ echo "[Identification]"
+ echo "JoinWorkgroup = WORKGROUP"
+ echo ""
+ echo "[Networking]"
+ echo "InstallDefaultComponents=Yes"
+ echo ""
+ echo "[Branding]"
+ echo "BrandIEUsingUnattended=Yes"
+ echo ""
+ echo "[URL]"
+ echo "Home_Page = http://www.google.com"
+ echo "Search_Page = http://www.google.com"
+ echo ""
+ echo "[RegionalSettings]"
+ echo "Language=00000409"
+ echo ""
+ echo "[TerminalServices]"
+ echo "AllowConnections=1"
+ } | unix2dos > "$target/WINNT.SIF"
+
+ { echo "Windows Registry Editor Version 5.00"
+ echo ""
+ echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Security]"
+ echo "\"FirstRunDisabled\"=dword:00000001"
+ echo "\"AntiVirusOverride\"=dword:00000001"
+ echo "\"FirewallOverride\"=dword:00000001"
+ echo "\"FirewallDisableNotify\"=dword:00000001"
+ echo "\"UpdatesDisableNotify\"=dword:00000001"
+ echo "\"AntiVirusDisableNotify\"=dword:00000001"
+ echo ""
+ echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\wscsvc]"
+ echo "\"Start\"=dword:00000004"
+ echo ""
+ echo "[HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\WindowsFirewall\StandardProfile]"
+ echo "\"EnableFirewall\"=dword:00000000"
+ echo ""
+ echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess]"
+ echo "\"Start\"=dword:00000004"
+ echo
+ echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\GloballyOpenPorts\List]"
+ echo "\"3389:TCP\"=\"3389:TCP:*:Enabled:@xpsp2res.dll,-22009\""
+ echo ""
+ echo "[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]"
+ echo "\"LimitBlankPasswordUse\"=dword:00000000"
+ echo ""
+ echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Applets\Tour]"
+ echo "\"RunCount\"=dword:00000000"
+ echo ""
+ echo "[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]"
+ echo "\"HideFileExt\"=dword:00000000"
+ echo ""
+ echo "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]"
+ echo "\"DefaultUserName\"=\"Docker\""
+ echo "\"DefaultDomainName\"=\"Dockur\""
+ echo "\"AltDefaultUserName\"=\"Docker\""
+ echo "\"AltDefaultDomainName\"=\"Dockur\""
+ echo "\"AutoAdminLogon\"=\"1\""
+ } | unix2dos > "$dir/\$OEM\$/install.reg"
+
+ { echo "Set WshShell = WScript.CreateObject(\"WScript.Shell\")"
+ echo "Set WshNetwork = WScript.CreateObject(\"WScript.Network\")"
+ echo "Set oMachine = GetObject(\"WinNT://\" & WshNetwork.ComputerName)"
+ echo "Set oInfoUser = GetObject(\"WinNT://\" & WshNetwork.ComputerName & \"/Administrator,user\")"
+ echo "Set oUser = oMachine.MoveHere(oInfoUser.ADsPath,\"Docker\")"
+ } | unix2dos > "$dir/\$OEM\$/admin.vbs"
+
+ { echo "[COMMANDS]"
+ echo "\"REGEDIT /s install.reg\""
+ echo "\"Wscript admin.vbs\""
+ } | unix2dos > "$dir/\$OEM\$/cmdlines.txt"
+
+ rm -rf "$drivers"
+ return 0
+}
+
+prepareLegacy() {
+
+ local iso="$1"
+ local dir="$2"
+
+ ETFS="boot.img"
+ BOOT_MODE="windows_legacy"
+
+ rm -f "$dir/$ETFS"
+
+ local len offset
+ len=$(isoinfo -d -i "$iso" | grep "Nsect " | grep -o "[^ ]*$")
+ offset=$(isoinfo -d -i "$iso" | grep "Bootoff " | grep -o "[^ ]*$")
+
+ if ! dd "if=$iso" "of=$dir/$ETFS" bs=2048 "count=$len" "skip=$offset" status=none; then
+ error "Failed to extract boot image from ISO!"
+ exit 67
fi
return 0
@@ -819,518 +906,207 @@ prepareImage() {
local iso="$1"
local dir="$2"
- local desc missing
-
- desc=$(printVersion "$DETECTED" "$DETECTED")
-
- setMachine "$DETECTED" "$iso" "$dir" "$desc" || return 1
- skipVersion "$DETECTED" && return 0
if [[ "${BOOT_MODE,,}" != "windows_legacy" ]]; then
+ if [[ "${DETECTED,,}" != "winxp"* ]] && [[ "${DETECTED,,}" != "win2008"* ]]; then
+ if [[ "${DETECTED,,}" != "winvista"* ]] && [[ "${DETECTED,,}" != "win7"* ]]; then
- [ -f "$dir/$ETFS" ] && [ -f "$dir/$EFISYS" ] && return 0
+ if [ -f "$dir/$ETFS" ] && [ -f "$dir/$EFISYS" ]; then
+ return 0
+ fi
- missing=$(basename "$dir/$EFISYS")
- [ ! -f "$dir/$ETFS" ] && missing=$(basename "$dir/$ETFS")
+ if [ ! -f "$dir/$ETFS" ]; then
+ warn "failed to locate file 'etfsboot.com' in ISO image, falling back to legacy boot!"
+ else
+ warn "failed to locate file 'efisys_noprompt.bin' in ISO image, falling back to legacy boot!"
+ fi
- error "Failed to locate file \"${missing,,}\" in ISO image!"
- return 1
- fi
-
- prepareLegacy "$iso" "$dir" "$desc" && return 0
-
- error "Failed to extract boot image from ISO image!"
- return 1
-}
-
-updateXML() {
-
- local asset="$1"
- local language="$2"
- local culture region user admin pass keyboard
-
- [ -z "$HEIGHT" ] && HEIGHT="720"
- [ -z "$WIDTH" ] && WIDTH="1280"
-
- sed -i "s/>Windows for Docker>$APP for $ENGINE1080<\/VerticalResolution>/$HEIGHT<\/VerticalResolution>/g" "$asset"
- sed -i "s/1920<\/HorizontalResolution>/$WIDTH<\/HorizontalResolution>/g" "$asset"
-
- culture=$(getLanguage "$language" "culture")
-
- if [ -n "$culture" ] && [[ "${culture,,}" != "en-us" ]]; then
- sed -i "s/en-US<\/UILanguage>/$culture<\/UILanguage>/g" "$asset"
- fi
-
- region="$REGION"
- [ -z "$region" ] && region="$culture"
-
- if [ -n "$region" ] && [[ "${region,,}" != "en-us" ]]; then
- sed -i "s/en-US<\/UserLocale>/$region<\/UserLocale>/g" "$asset"
- sed -i "s/en-US<\/SystemLocale>/$region<\/SystemLocale>/g" "$asset"
- fi
-
- keyboard="$KEYBOARD"
- [ -z "$keyboard" ] && keyboard="$culture"
-
- if [ -n "$keyboard" ] && [[ "${keyboard,,}" != "en-us" ]]; then
- sed -i "s/en-US<\/InputLocale>/$keyboard<\/InputLocale>/g" "$asset"
- sed -i "s/0409:00000409<\/InputLocale>/$keyboard<\/InputLocale>/g" "$asset"
- fi
-
- user=$(echo "$USERNAME" | sed 's/[^[:alnum:]@!._-]//g')
-
- if [ -n "$user" ]; then
- sed -i "s/-name \"Docker\"/-name \"$user\"/g" "$asset"
- sed -i "s/Docker<\/Name>/$user<\/Name>/g" "$asset"
- sed -i "s/where name=\"Docker\"/where name=\"$user\"/g" "$asset"
- sed -i "s/Docker<\/FullName>/$user<\/FullName>/g" "$asset"
- sed -i "s/Docker<\/Username>/$user<\/Username>/g" "$asset"
- fi
-
- [ -n "$PASSWORD" ] && pass="$PASSWORD" || pass="admin"
-
- pw=$(printf '%s' "${pass}Password" | iconv -f utf-8 -t utf-16le | base64 -w 0)
- admin=$(printf '%s' "${pass}AdministratorPassword" | iconv -f utf-8 -t utf-16le | base64 -w 0)
-
- sed -i "s/password<\/Value>/$admin<\/Value>/g" "$asset"
- sed -i "s/true<\/PlainText>/false<\/PlainText>/g" "$asset"
- sed -z "s/.........../\n $pw<\/Value>/g" -i "$asset"
- sed -z "s/.............../\n $pw<\/Value>/g" -i "$asset"
- sed -z "s/.........../\n $admin<\/Value>/g" -i "$asset"
- sed -z "s/.............../\n $admin<\/Value>/g" -i "$asset"
-
- if [ -n "$EDITION" ]; then
- [[ "${EDITION^^}" == "CORE" ]] && EDITION="STANDARDCORE"
- sed -i "s/SERVERSTANDARD<\/Value>/SERVER${EDITION^^}<\/Value>/g" "$asset"
- fi
-
- if [ -n "$KEY" ]; then
- sed -i '//,/<\/ProductKey>/d' "$asset"
- sed -i "s/<\/UserData>/ \n ${KEY}<\/Key>\n OnError<\/WillShowUI>\n <\/ProductKey>\n <\/UserData>/g" "$asset"
- fi
-
- return 0
-}
-
-addDriver() {
-
- local id="$1"
- local path="$2"
- local target="$3"
- local driver="$4"
- local desc=""
- local folder=""
-
- if [ -z "$id" ]; then
- warn "no Windows version specified for \"$driver\" driver!" && return 0
- fi
-
- case "${id,,}" in
- "win7x86"* ) folder="w7/x86" ;;
- "win7x64"* ) folder="w7/amd64" ;;
- "win81x64"* ) folder="w8.1/amd64" ;;
- "win10x64"* ) folder="w10/amd64" ;;
- "win11x64"* ) folder="w11/amd64" ;;
- "win2025"* ) folder="2k25/amd64" ;;
- "win2022"* ) folder="2k22/amd64" ;;
- "win2019"* ) folder="2k19/amd64" ;;
- "win2016"* ) folder="2k16/amd64" ;;
- "win2012"* ) folder="2k12R2/amd64" ;;
- "win2008"* ) folder="2k8R2/amd64" ;;
- "win10arm64"* ) folder="w10/ARM64" ;;
- "win11arm64"* ) folder="w11/ARM64" ;;
- "winvistax86"* ) folder="2k8/x86" ;;
- "winvistax64"* ) folder="2k8/amd64" ;;
- esac
-
- if [ -z "$folder" ]; then
- desc=$(printVersion "$id" "$id")
- if [[ "${id,,}" != *"x86"* ]]; then
- warn "no \"$driver\" driver available for \"$desc\" !" && return 0
- else
- warn "no \"$driver\" driver available for the 32-bit version of \"$desc\" !" && return 0
+ fi
fi
fi
- [ ! -d "$path/$driver/$folder" ] && return 0
-
- case "${id,,}" in
- "winvista"* )
- [[ "${driver,,}" == "viorng" ]] && return 0
- ;;
- esac
-
- local dest="$path/$target/$driver"
- mkdir -p "$dest" || return 1
- cp -Lr "$path/$driver/$folder/." "$dest" || return 1
-
- return 0
-}
-
-addDrivers() {
-
- local src="$1"
- local tmp="$2"
- local file="$3"
- local index="$4"
- local version="$5"
- local drivers="$tmp/drivers"
-
- rm -rf "$drivers"
- mkdir -p "$drivers"
-
- local msg="Adding drivers to image..."
- info "$msg" && html "$msg"
-
- if [ -z "$version" ]; then
- version="win11x64"
- warn "Windows version unknown, falling back to Windows 11 drivers..."
+ if [[ "${DETECTED,,}" == "winxp"* ]]; then
+ if ! prepareXP "$iso" "$dir"; then
+ error "Failed to prepare Windows XP ISO!"
+ return 1
+ fi
+ else
+ if ! prepareLegacy "$iso" "$dir"; then
+ error "Failed to prepare Windows ISO!"
+ return 1
+ fi
fi
- if ! bsdtar -xf /var/drivers.txz -C "$drivers"; then
- error "Failed to extract drivers from archive!" && return 1
- fi
-
- local target="\$WinPEDriver\$"
- local dest="$drivers/$target"
- mkdir -p "$dest" || return 1
-
- wimlib-imagex update "$file" "$index" --command "delete --force --recursive /$target" >/dev/null || true
-
- addDriver "$version" "$drivers" "$target" "qxl" || return 1
- addDriver "$version" "$drivers" "$target" "viofs" || return 1
- addDriver "$version" "$drivers" "$target" "sriov" || return 1
- addDriver "$version" "$drivers" "$target" "smbus" || return 1
- addDriver "$version" "$drivers" "$target" "qxldod" || return 1
- addDriver "$version" "$drivers" "$target" "viorng" || return 1
- addDriver "$version" "$drivers" "$target" "viostor" || return 1
- addDriver "$version" "$drivers" "$target" "viomem" || return 1
- addDriver "$version" "$drivers" "$target" "NetKVM" || return 1
- addDriver "$version" "$drivers" "$target" "Balloon" || return 1
- addDriver "$version" "$drivers" "$target" "vioscsi" || return 1
- addDriver "$version" "$drivers" "$target" "pvpanic" || return 1
- addDriver "$version" "$drivers" "$target" "vioinput" || return 1
- addDriver "$version" "$drivers" "$target" "viogpudo" || return 1
- addDriver "$version" "$drivers" "$target" "vioserial" || return 1
- addDriver "$version" "$drivers" "$target" "qemupciserial" || return 1
-
- case "${version,,}" in
- "win11x64"* | "win2025"* )
- # Workaround Virtio GPU driver bug
- local dst="$src/\$OEM\$/\$\$/Drivers"
- mkdir -p "$dst" || return 1
- cp -Lr "$dest/." "$dst" || return 1
- rm -rf "$dest/viogpudo"
- ;;
- esac
-
- if ! wimlib-imagex update "$file" "$index" --command "add $dest /$target" >/dev/null; then
- return 1
- fi
-
- rm -rf "$drivers"
return 0
}
updateImage() {
- local dir="$1"
- local asset="$2"
- local language="$3"
- local tmp="/tmp/install"
- local file="autounattend.xml"
- local org="${file//.xml/.org}"
- local dat="${file//.xml/.dat}"
- local desc path src wim xml index result
+ local iso="$1"
+ local dir="$2"
+ local asset="/run/assets/$3"
+ local path src loc index result
- skipVersion "${DETECTED,,}" && return 0
+ [ ! -f "$asset" ] && return 0
- if [ ! -s "$asset" ] || [ ! -f "$asset" ]; then
- asset=""
- if [[ "$MANUAL" != [Yy1]* ]]; then
- MANUAL="Y"
- warn "no answer file provided, $FB."
- fi
- fi
+ path=$(find "$dir" -maxdepth 1 -type f -iname autounattend.xml | head -n 1)
+ [ -n "$path" ] && cp "$asset" "$path"
- rm -rf "$tmp"
- mkdir -p "$tmp"
-
- src=$(find "$dir" -maxdepth 1 -type d -iname sources -print -quit)
+ 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, $FB" && return 1
+ warn "failed to locate 'sources' folder in ISO image, $FB"
+ BOOT_MODE="windows_legacy"
+ return 1
fi
- wim=$(find "$src" -maxdepth 1 -type f \( -iname boot.wim -or -iname boot.esd \) -print -quit)
+ loc=$(find "$src" -maxdepth 1 -type f -iname boot.wim | head -n 1)
+ [ ! -f "$loc" ] && loc=$(find "$src" -maxdepth 1 -type f -iname boot.esd | head -n 1)
- if [ ! -f "$wim" ]; then
- error "failed to locate 'boot.wim' or 'boot.esd' in ISO image, $FB" && return 1
+ if [ ! -f "$loc" ]; then
+ warn "failed to locate 'boot.wim' or 'boot.esd' in ISO image, $FB"
+ BOOT_MODE="windows_legacy"
+ return 1
fi
+ info "Adding XML file for automatic installation..."
+
index="1"
- result=$(wimlib-imagex info -xml "$wim" | iconv -f UTF-16LE -t UTF-8)
+ result=$(wimlib-imagex info -xml "$loc" | tr -d '\000')
if [[ "${result^^}" == *""* ]]; then
index="2"
fi
- if ! addDrivers "$src" "$tmp" "$wim" "$index" "$DETECTED"; then
- error "Failed to add drivers to image!"
+ if ! wimlib-imagex update "$loc" "$index" --command "add $asset /autounattend.xml" > /dev/null; then
+ warn "failed to add XML to ISO image, $FB"
+ return 1
fi
- if ! addFolder "$src"; then
- error "Failed to add OEM folder to image!"
- fi
-
- if wimlib-imagex extract "$wim" "$index" "/$file" "--dest-dir=$tmp" >/dev/null 2>&1; then
- if ! wimlib-imagex extract "$wim" "$index" "/$dat" "--dest-dir=$tmp" >/dev/null 2>&1; then
- if ! wimlib-imagex extract "$wim" "$index" "/$org" "--dest-dir=$tmp" >/dev/null 2>&1; then
- if ! wimlib-imagex update "$wim" "$index" --command "rename /$file /$org" > /dev/null; then
- warn "failed to backup original answer file ($file)."
- fi
- fi
- fi
- fi
-
- if [[ "$MANUAL" != [Yy1]* ]]; then
-
- xml=$(basename "$asset")
- info "Adding $xml for automatic installation..."
-
- local answer="$tmp/$xml"
- cp "$asset" "$answer"
- updateXML "$answer" "$language"
-
- if ! wimlib-imagex update "$wim" "$index" --command "add $answer /$file" > /dev/null; then
- MANUAL="Y"
- warn "failed to add answer file ($xml) to ISO image, $FB"
- else
- wimlib-imagex update "$wim" "$index" --command "add $answer /$dat" > /dev/null || true
- fi
-
- fi
-
- if [[ "$MANUAL" == [Yy1]* ]]; then
-
- wimlib-imagex update "$wim" "$index" --command "delete --force /$file" > /dev/null || true
-
- if wimlib-imagex extract "$wim" "$index" "/$org" "--dest-dir=$tmp" >/dev/null 2>&1; then
- if ! wimlib-imagex update "$wim" "$index" --command "add $tmp/$org /$file" > /dev/null; then
- warn "failed to restore original answer file ($org)."
- fi
- fi
-
- fi
-
- local find="$file"
- [[ "$MANUAL" == [Yy1]* ]] && find="$org"
- path=$(find "$dir" -maxdepth 1 -type f -iname "$find" -print -quit)
-
- if [ -f "$path" ]; then
- if [[ "$MANUAL" != [Yy1]* ]]; then
- mv -f "$path" "${path%.*}.org"
- else
- mv -f "$path" "${path%.*}.xml"
- fi
- fi
-
- rm -rf "$tmp"
- return 0
-}
-
-removeImage() {
-
- local iso="$1"
-
- [ ! -f "$iso" ] && return 0
- [ -n "$CUSTOM" ] && return 0
-
- rm -f "$iso" 2> /dev/null || warn "failed to remove $iso !"
-
return 0
}
buildImage() {
local dir="$1"
- local failed=""
local cat="BOOT.CAT"
+ local label="${BASE%.*}"
local log="/run/shm/iso.log"
- local base size size_gb space space_gb desc
+ local size size_gb space space_gb desc
- if [ -f "$BOOT" ]; then
- error "File $BOOT does already exist?!" && return 1
- fi
-
- base=$(basename "$BOOT")
- local out="$TMP/${base%.*}.tmp"
+ label="${label::30}"
+ local out="$TMP/$label.tmp"
rm -f "$out"
- desc=$(printVersion "$DETECTED" "ISO")
+ desc=$(printVersion "$DETECTED")
+ [ -z "$desc" ] && desc="ISO"
- local msg="Building $desc image"
- info "$msg..." && html "$msg..."
-
- [ -z "$LABEL" ] && LABEL="Windows"
-
- if [ ! -f "$dir/$ETFS" ]; then
- error "Failed to locate file \"$ETFS\" in ISO image!" && return 1
- fi
+ local msg="Building $desc image..."
+ info "$msg" && html "$msg"
size=$(du -h -b --max-depth=0 "$dir" | cut -f1)
- size_gb=$(formatBytes "$size")
+ size_gb=$(( (size + 1073741823)/1073741824 ))
space=$(df --output=avail -B 1 "$TMP" | tail -n 1)
- space_gb=$(formatBytes "$space")
+ space_gb=$(( (space + 1073741823)/1073741824 ))
if (( size > space )); then
- error "Not enough free space in $STORAGE, have $space_gb available but need at least $size_gb." && return 1
+ error "Not enough free space in $STORAGE, have $space_gb GB available but need at least $size_gb GB."
+ return 1
fi
- /run/progress.sh "$out" "$size" "$msg ([P])..." &
-
if [[ "${BOOT_MODE,,}" != "windows_legacy" ]]; then
- genisoimage -o "$out" -b "$ETFS" -no-emul-boot -c "$cat" -iso-level 4 -J -l -D -N -joliet-long -relaxed-filenames -V "${LABEL::30}" \
- -udf -boot-info-table -eltorito-alt-boot -eltorito-boot "$EFISYS" -no-emul-boot -allow-limited-size -quiet "$dir" 2> "$log" || failed="y"
+ if ! genisoimage -o "$out" -b "$ETFS" -no-emul-boot -c "$cat" -iso-level 4 -J -l -D -N -joliet-long -relaxed-filenames -V "$label" \
+ -udf -boot-info-table -eltorito-alt-boot -eltorito-boot "$EFISYS" -no-emul-boot -allow-limited-size -quiet "$dir" 2> "$log"; then
+ [ -f "$log" ] && echo "$(<"$log")"
+ return 1
+ fi
else
- case "${DETECTED,,}" in
- "win2k"* | "winxp"* | "win2003"* )
- genisoimage -o "$out" -b "$ETFS" -no-emul-boot -boot-load-seg 1984 -boot-load-size 4 -c "$cat" -iso-level 2 -J -l -D -N -joliet-long \
- -relaxed-filenames -V "${LABEL::30}" -quiet "$dir" 2> "$log" || failed="y" ;;
- "win9"* )
- genisoimage -o "$out" -b "$ETFS" -J -r -V "${LABEL::30}" -quiet "$dir" 2> "$log" || failed="y" ;;
- * )
- genisoimage -o "$out" -b "$ETFS" -no-emul-boot -c "$cat" -iso-level 2 -J -l -D -N -joliet-long -relaxed-filenames -V "${LABEL::30}" \
- -udf -allow-limited-size -quiet "$dir" 2> "$log" || failed="y" ;;
- esac
+ if [[ "${DETECTED,,}" != "winxp"* ]]; then
- fi
+ if ! genisoimage -o "$out" -b "$ETFS" -no-emul-boot -c "$cat" -iso-level 2 -J -l -D -N -joliet-long -relaxed-filenames -V "$label" \
+ -udf -allow-limited-size -quiet "$dir" 2> "$log"; then
+ [ -f "$log" ] && echo "$(<"$log")"
+ return 1
+ fi
- fKill "progress.sh"
+ else
- if [ -n "$failed" ]; then
- [ -s "$log" ] && echo "$(<"$log")"
- error "Failed to build image!" && return 1
+ if ! genisoimage -o "$out" -b "$ETFS" -no-emul-boot -boot-load-seg 1984 -boot-load-size 4 -c "$cat" -iso-level 2 -J -l -D -N -joliet-long \
+ -relaxed-filenames -V "$label" -quiet "$dir" 2> "$log"; then
+ [ -f "$log" ] && echo "$(<"$log")"
+ return 1
+ fi
+
+ fi
fi
local error=""
local hide="Warning: creating filesystem that does not conform to ISO-9660."
- [ -s "$log" ] && error="$(<"$log")"
+ [ -f "$log" ] && error="$(<"$log")"
[[ "$error" != "$hide" ]] && echo "$error"
- mv -f "$out" "$BOOT" || return 1
- ! setOwner "$BOOT" && error "Failed to set the owner for \"$BOOT\" !"
-
- return 0
-}
-
-bootWindows() {
-
- if [ -f "$STORAGE/windows.args" ]; then
- ARGS=$(<"$STORAGE/windows.args")
- ARGS="${ARGS//[![:print:]]/}"
- ARGUMENTS="$ARGS ${ARGUMENTS:-}"
- fi
-
- if [ -s "$STORAGE/windows.vga" ] && [ -f "$STORAGE/windows.vga" ]; then
- if [ -z "${VGA:-}" ]; then
- VGA=$(<"$STORAGE/windows.vga")
- VGA="${VGA//[![:print:]]/}"
- fi
- fi
-
- if [ -s "$STORAGE/windows.usb" ] && [ -f "$STORAGE/windows.usb" ]; then
- if [ -z "${USB:-}" ]; then
- USB=$(<"$STORAGE/windows.usb")
- USB="${USB//[![:print:]]/}"
- fi
- fi
-
- if [ -s "$STORAGE/windows.net" ] && [ -f "$STORAGE/windows.net" ]; then
- if [ -z "${ADAPTER:-}" ]; then
- ADAPTER=$(<"$STORAGE/windows.net")
- ADAPTER="${ADAPTER//[![:print:]]/}"
- fi
- fi
-
- if [ -s "$STORAGE/windows.type" ] && [ -f "$STORAGE/windows.type" ]; then
- if [ -z "${DISK_TYPE:-}" ]; then
- DISK_TYPE=$(<"$STORAGE/windows.type")
- DISK_TYPE="${DISK_TYPE//[![:print:]]/}"
- fi
- fi
-
- if [ -s "$STORAGE/windows.mode" ] && [ -f "$STORAGE/windows.mode" ]; then
- BOOT_MODE=$(<"$STORAGE/windows.mode")
- BOOT_MODE="${BOOT_MODE//[![:print:]]/}"
- fi
-
- if [ -s "$STORAGE/windows.old" ] && [ -f "$STORAGE/windows.old" ]; then
- if [[ "${PLATFORM,,}" == "x64" ]]; then
- MACHINE=$(<"$STORAGE/windows.old")
- MACHINE="${MACHINE//[![:print:]]/}"
- fi
+ if [ -f "$STORAGE/$BASE" ]; then
+ error "File $STORAGE/$BASE does already exist?!"
+ return 1
fi
+ mv "$out" "$STORAGE/$BASE"
return 0
}
######################################
-! parseVersion && exit 58
-! parseLanguage && exit 56
-! detectCustom && exit 59
-
if ! startInstall; then
- bootWindows && return 0
- exit 68
+
+ if [ -f "$STORAGE/windows.old" ]; then
+ MACHINE=$(<"$STORAGE/windows.old")
+ [ -z "$MACHINE" ] && MACHINE="q35"
+ BOOT_MODE="windows_legacy"
+ fi
+
+ rm -rf "$TMP"
+ return 0
fi
-if [ ! -s "$ISO" ] || [ ! -f "$ISO" ]; then
- if ! downloadImage "$ISO" "$VERSION" "$LANGUAGE"; then
- rm -f "$ISO" 2> /dev/null || true
+if [ ! -f "$ISO" ]; then
+ if ! downloadImage "$ISO" "$VERSION"; then
+ error "Failed to download $VERSION"
exit 61
fi
fi
-DIR="$TMP/unpack"
-
-if ! extractImage "$ISO" "$DIR" "$VERSION"; then
- rm -f "$ISO" 2> /dev/null || true
- exit 62
+if ! extractImage "$ISO" "$DIR"; then
+ abortInstall "$ISO"
+ return 0
fi
-if ! detectImage "$DIR" "$VERSION"; then
- abortInstall "$DIR" "$ISO" && return 0
- exit 60
+if ! detectImage "$DIR"; then
+ abortInstall "$ISO"
+ return 0
fi
if ! prepareImage "$ISO" "$DIR"; then
- abortInstall "$DIR" "$ISO" && return 0
- exit 66
+ abortInstall "$ISO"
+ return 0
fi
-if ! updateImage "$DIR" "$XML" "$LANGUAGE"; then
- abortInstall "$DIR" "$ISO" && return 0
- exit 63
+if ! updateImage "$ISO" "$DIR" "$XML"; then
+ abortInstall "$ISO"
+ return 0
fi
-if ! removeImage "$ISO"; then
- exit 64
-fi
+rm -f "$ISO"
if ! buildImage "$DIR"; then
+ error "Failed to build image!"
exit 65
fi
-if ! finishInstall "$BOOT" "N"; then
- exit 69
-fi
+finishInstall "$STORAGE/$BASE"
html "Successfully prepared image for installation..."
return 0
diff --git a/src/mido.sh b/src/mido.sh
index 369fc17..d52332b 100644
--- a/src/mido.sh
+++ b/src/mido.sh
@@ -1,834 +1,766 @@
-#!/usr/bin/env bash
-set -Eeuo pipefail
+#!/bin/sh
+
+# Copyright (C) 2024 Elliot Killick
+# Licensed under the MIT License. See LICENSE file for details.
+
+[ "$DEBUG" ] && set -x
+
+# Prefer Dash shell for greater security if available
+if [ "$BASH" ] && command -v dash > /dev/null; then
+ exec dash "$0" "$@"
+fi
+
+# Test for 4-bit color (16 colors)
+# Operand "colors" is undefined by POSIX
+# If the operand doesn't exist, the terminal probably doesn't support color and the program will continue normally without it
+if [ "0$(tput colors 2> /dev/null)" -ge 16 ]; then
+ RED='\033[0;31m'
+ BLUE='\033[0;34m'
+ GREEN='\033[0;32m'
+ NC='\033[0m'
+fi
+
+# Avoid printing messages as potential terminal escape sequences
+echo_ok() { printf "%b%s%b" "${GREEN}[+]${NC} " "$1" "\n" >&2; }
+echo_info() { printf "%b%s%b" "${BLUE}[i]${NC} " "$1" "\n" >&2; }
+echo_err() { printf "%b%s%b" "${RED}[!]${NC} " "$1" "\n" >&2; }
+
+# https://pubs.opengroup.org/onlinepubs/9699919799/utilities/fold.html
+format() { fold -s; }
+
+word_count() { echo $#; }
+
+usage() {
+ echo "Mido - The Secure Microsoft Windows Downloader"
+ echo ""
+ echo "Usage: $0 ..."
+ echo ""
+ echo "Download specified list of Windows media."
+ echo ""
+ echo "Specify \"all\", or one or more of the following Windows media:"
+ echo " win7x64-ultimate"
+ echo " win81x64"
+ echo " win10x64"
+ echo " win11x64"
+ echo " win81x64-enterprise-eval"
+ echo " win10x64-enterprise-eval"
+ echo " win11x64-enterprise-eval"
+ echo " win10x64-enterprise-ltsc-eval (most secure)"
+ echo " win2008r2"
+ echo " win2012r2-eval"
+ echo " win2016-eval"
+ echo " win2019-eval"
+ echo " win2022-eval"
+ echo ""
+ echo "Each ISO download takes between 3 - 7 GiBs (average: 5 GiBs)."
+ echo ""
+ echo "Updates"
+ echo "-------"
+ echo "All the downloads provided here are the most up-to-date releases that Microsoft provides. This is ensured by programmatically checking Microsoft's official download pages to get the latest download link. In other cases, the Windows version in question is no longer supported by Microsoft meaning a direct download link (stored in Mido) will always point to the most up-to-date release." | format
+ echo ""
+ echo "Remember to update Windows to the latest patch level after installation."
+ echo ""
+ echo "Overuse"
+ echo "-------"
+ echo "Newer consumer versions of Windows including win81x64, win10x64, and win11x64 are downloaded through Microsoft's gated download web interface. Do not overuse this interface. Microsoft may be quick to do ~24 hour IP address bans after only a few download requests (especially if they are done in quick succession). Being temporarily banned from one of these downloads (e.g. win11x64) doesn't cause you to be banned from any of the other downloads provided through this interface." | format
+ echo ""
+ echo "Privacy Preserving Technologies"
+ echo "-------------------------------"
+ echo "The aforementioned Microsoft gated download web interface is currently blocking Tor (and similar technologies). They say this is to prevent people in restricted regions from downloading certain Windows media they shouldn't have access to. This is fine by most standards because Tor is too slow for large downloads anyway and we have checksum verification for security." | format
+ echo ""
+ echo "Language"
+ echo "--------"
+ echo "All the downloads provided here are for English (United States). This helps to great simplify maintenance and minimize the user's fingerprint. If another language is desired then that can easily be configured in Windows once it's installed." | format
+ echo ""
+ echo "Architecture"
+ echo "------------"
+ echo "All the downloads provided here are for x86-64 (x64). This is the only architecture Microsoft ships Windows Server in.$([ -d /run/qubes ] && echo ' Also, the only architecture Qubes OS supports.')" | format
+}
+
+# Media naming scheme info:
+# Windows Server has no architecture because Microsoft only supports amd64 for this version of Windows (the last version to support x86 was Windows Server 2008 without the R2)
+# "eval" is short for "evaluation", it's simply the license type included with the Windows installation (only exists on enterprise/server) and must be specified in the associated answer file
+# "win7x64" has the "ultimate" edition appended to it because it isn't "multi-edition" like the other Windows ISOs (for multi-edition ISOs the edition is specified in the associated answer file)
+
+readonly win7x64_ultimate="win7x64-ultimate.iso"
+readonly win81x64="win81x64.iso"
+readonly win10x64="win10x64.iso"
+readonly win11x64="win11x64.iso"
+readonly win81x64_enterprise_eval="win81x64-enterprise-eval.iso"
+readonly win10x64_enterprise_eval="win10x64-enterprise-eval.iso"
+readonly win11x64_enterprise_eval="win11x64-enterprise-eval.iso"
+readonly win10x64_enterprise_ltsc_eval="win10x64-enterprise-ltsc-eval.iso"
+readonly win2008r2="win2008r2.iso"
+readonly win2012r2_eval="win2012r2-eval.iso"
+readonly win2016_eval="win2016-eval.iso"
+readonly win2019_eval="win2019-eval.iso"
+readonly win2022_eval="win2022-eval.iso"
+
+parse_args() {
+ for arg in "$@"; do
+ if [ "$arg" = "-h" ] || [ "$arg" = "--help" ]; then
+ usage
+ exit
+ fi
+ done
+
+ if [ $# -lt 1 ]; then
+ usage >&2
+ exit 1
+ fi
+
+ # Append to media_list so media is downloaded in the order they're passed in
+ for arg in "$@"; do
+ case "$arg" in
+ win7x64-ultimate)
+ media_list="$media_list $win7x64_ultimate"
+ ;;
+ win81x64)
+ media_list="$media_list $win81x64"
+ ;;
+ win10x64)
+ media_list="$media_list $win10x64"
+ ;;
+ win11x64)
+ media_list="$media_list $win11x64"
+ ;;
+ win81x64-enterprise-eval)
+ media_list="$media_list $win81x64_enterprise_eval"
+ ;;
+ win10x64-enterprise-eval)
+ media_list="$media_list $win10x64_enterprise_eval"
+ ;;
+ win11x64-enterprise-eval)
+ media_list="$media_list $win11x64_enterprise_eval"
+ ;;
+ win10x64-enterprise-ltsc-eval)
+ media_list="$media_list $win10x64_enterprise_ltsc_eval"
+ ;;
+ win2008r2)
+ media_list="$media_list $win2008r2"
+ ;;
+ win2012r2-eval)
+ media_list="$media_list $win2012r2_eval"
+ ;;
+ win2016-eval)
+ media_list="$media_list $win2016_eval"
+ ;;
+ win2019-eval)
+ media_list="$media_list $win2019_eval"
+ ;;
+ win2022-eval)
+ media_list="$media_list $win2022_eval"
+ ;;
+ all)
+ media_list="$win7x64_ultimate $win81x64 $win10x64 $win11x64 $win81x64_enterprise_eval $win10x64_enterprise_eval $win11x64_enterprise_eval $win10x64_enterprise_ltsc_eval $win2008r2 $win2012r2_eval $win2016_eval $win2019_eval $win2022_eval"
+ break
+ ;;
+ *)
+ echo_err "Invalid Windows media specified: $arg"
+ exit 1
+ ;;
+ esac
+ done
+}
handle_curl_error() {
+ error_code="$1"
- local error_code="$1"
- local server_name="$2"
+ fatal_error_action=2
- case "$error_code" in
- 1) error "Unsupported protocol!" ;;
- 2) error "Failed to initialize curl!" ;;
- 3) error "The URL format is malformed!" ;;
- 5) error "Failed to resolve address of proxy host!" ;;
- 6) error "Failed to resolve $server_name servers! Is there an Internet connection?" ;;
- 7) error "Failed to contact $server_name servers! Is there an Internet connection or is the server down?" ;;
- 8) error "$server_name servers returned a malformed HTTP response!" ;;
- 16) error "A problem was detected in the HTTP2 framing layer!" ;;
- 22) error "$server_name servers returned a failing HTTP status code!" ;;
- 23) error "Failed at writing Windows media to disk! Out of disk space or permission error?" ;;
- 26) error "Failed to read Windows media from disk!" ;;
- 27) error "Ran out of memory during download!" ;;
- 28) error "Connection timed out to $server_name server!" ;;
- 35) error "SSL connection error from $server_name server!" ;;
- 36) error "Failed to continue earlier download!" ;;
- 52) error "Received no data from the $server_name server!" ;;
- 63) error "$server_name servers returned an unexpectedly large response!" ;;
- # POSIX defines exit statuses 1-125 as usable by us
- # https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_08_02
- $((error_code <= 125)))
- # Must be some other server or network error (possibly with this specific request/file)
- # This is when accounting for all possible errors in the curl manual assuming a correctly formed curl command and an HTTP(S) request, using only the curl features we're using, and a sane build
- error "Miscellaneous server or network error, reason: $error_code"
- ;;
- 126 | 127 ) error "Curl command not found!" ;;
- # Exit statuses are undefined by POSIX beyond this point
- *)
- case "$(kill -l "$error_code")" in
- # Signals defined to exist by POSIX:
- # https://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html
- INT) error "Curl was interrupted!" ;;
- # There could be other signals but these are most common
- SEGV | ABRT ) error "Curl crashed! Please report any core dumps to curl developers." ;;
- *) error "Curl terminated due to fatal signal $error_code !" ;;
- esac
- esac
+ case "$error_code" in
+ 6)
+ echo_err "Failed to resolve Microsoft servers! Is there an Internet connection? Exiting..."
+ return "$fatal_error_action"
+ ;;
+ 7)
+ echo_err "Failed to contact Microsoft servers! Is there an Internet connection or is the server down?"
+ ;;
+ 8)
+ echo_err "Microsoft servers returned a malformed HTTP response!"
+ ;;
+ 22)
+ echo_err "Microsoft servers returned a failing HTTP status code!"
+ ;;
+ 23)
+ echo_err "Failed at writing Windows media to disk! Out of disk space or permission error? Exiting..."
+ return "$fatal_error_action"
+ ;;
+ 26)
+ echo_err "Ran out of memory during download! Exiting..."
+ return "$fatal_error_action"
+ ;;
+ 36)
+ echo_err "Failed to continue earlier download!"
+ ;;
+ 63)
+ echo_err "Microsoft servers returned an unexpectedly large response!"
+ ;;
+ # POSIX defines exit statuses 1-125 as usable by us
+ # https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_08_02
+ $((error_code <= 125)))
+ # Must be some other server or network error (possibly with this specific request/file)
+ # This is when accounting for all possible errors in the curl manual assuming a correctly formed curl command and HTTP(S) request, using only the curl features we're using, and a sane build
+ echo_err "Miscellaneous server or network error!"
+ ;;
+ 126 | 127)
+ echo_err "Curl command not found! Please install curl and try again. Exiting..."
+ return "$fatal_error_action"
+ ;;
+ # Exit statuses are undefined by POSIX beyond this point
+ *)
+ case "$(kill -l "$error_code")" in
+ # Signals defined to exist by POSIX:
+ # https://pubs.opengroup.org/onlinepubs/009695399/basedefs/signal.h.html
+ INT)
+ echo_err "Curl was interrupted!"
+ ;;
+ # There could be other signals but these are most common
+ SEGV | ABRT)
+ echo_err "Curl crashed! Failed exploitation attempt? Please report any core dumps to curl developers. Exiting..."
+ return "$fatal_error_action"
+ ;;
+ *)
+ echo_err "Curl terminated due to a fatal signal!"
+ ;;
+ esac
+ esac
- return 1
+ return 1
}
-get_agent() {
+part_ext=".PART"
+unverified_ext=".UNVERIFIED"
- local user_agent
+scurl_file() {
+ out_file="$1"
+ tls_version="$2"
+ url="$3"
- # Determine approximate latest Firefox release
- browser_version="$((124 + ($(date +%s) - 1710892800) / 2419200))"
- echo "Mozilla/5.0 (X11; Linux x86_64; rv:${browser_version}.0) Gecko/20100101 Firefox/${browser_version}.0"
+ part_file="${out_file}${part_ext}"
- return 0
-}
+ # --location: Microsoft likes to change which endpoint these downloads are stored on but is usually kind enough to add redirects
+ # --fail: Return an error on server errors where the HTTP response code is 400 or greater
+ curl --progress-bar --location --output "$part_file" --continue-at - --max-filesize 10G --fail --proto =https "--tlsv$tls_version" --http1.1 -- "$url" || {
+ error_code=$?
+ handle_curl_error "$error_code"
+ error_action=$?
-download_windows() {
-
- local id="$1"
- local lang="$2"
- local desc="$3"
- local sku_id=""
- local sku_url=""
- local iso_url=""
- local iso_json=""
- local language=""
- local session_id=""
- local user_agent=""
- local download_type=""
- local windows_version=""
- local iso_download_link=""
- local download_page_html=""
- local product_edition_id=""
- local language_skuid_json=""
- local profile="606624d44113"
-
- user_agent=$(get_agent)
- language=$(getLanguage "$lang" "name")
-
- case "${id,,}" in
- "win11x64" ) windows_version="11" && download_type="1" ;;
- "win10x64" ) windows_version="10" && download_type="1" ;;
- "win11arm64" ) windows_version="11arm64" && download_type="2" ;;
- * ) error "Invalid VERSION specified, value \"$id\" is not recognized!" && return 1 ;;
- esac
-
- local url="https://www.microsoft.com/en-us/software-download/windows$windows_version"
- [[ "${id,,}" == "win10"* ]] && url+="ISO"
-
- # uuidgen: For MacOS (installed by default) and other systems (e.g. with no /proc) that don't have a kernel interface for generating random UUIDs
- session_id=$(cat /proc/sys/kernel/random/uuid 2> /dev/null || uuidgen --random)
- session_id="${session_id//[![:print:]]/}"
-
- # Get product edition ID for latest release of given Windows version
- # Product edition ID: This specifies both the Windows release (e.g. 22H2) and edition ("multi-edition" is default, either Home/Pro/Edu/etc., we select "Pro" in the answer files) in one number
- # This is the *only* request we make that Fido doesn't. Fido manually maintains a list of all the Windows release/edition product edition IDs in its script (see: $WindowsVersions array). This is helpful for downloading older releases (e.g. Windows 10 1909, 21H1, etc.) but we always want to get the newest release which is why we get this value dynamically
- # Also, keeping a "$WindowsVersions" array like Fido does would be way too much of a maintenance burden
- # Remove "Accept" header that curl sends by default
- [[ "$DEBUG" == [Yy1]* ]] && echo "Parsing download page: ${url}"
- download_page_html=$(curl --silent --max-time 30 --user-agent "$user_agent" --header "Accept:" --max-filesize 1M --fail --proto =https --tlsv1.2 --http1.1 -- "$url") || {
- handle_curl_error "$?" "Microsoft"
- return $?
- }
-
- [[ "$DEBUG" == [Yy1]* ]] && echo -n "Getting Product edition ID: "
- product_edition_id=$(echo "$download_page_html" | grep -Eo '