Repository: cobbler/cobbler

Issue:
Windows Install Detailed Steps
Cobbler 3.2.x and 3.3.3 Office Docs  Windows Install not very detailed
Related work according to the official documentation cannot be successfully installed Windows
Can you make a blog or practice tutorial to help install Windows more detailed in detail?
Thank you!!!







Discussion:
@tpw56j is the expert for Windows. As such I would love him to step in as soon as his time allows. For now my focus must be to finish 3.4.0.
@brook-w Could you point out the steps that require further explanation?
I tried to install windows using the official website, but it didn't work successfully. I tried win10 and win2019, but it didn't work.
But I use cobbler 2.8.5 it works fine
Unfortunately, cobbler 2.8.5 is not well suited for windows installation, although it is still possible by manually preparing many files and doing some of the work in a windows environment.
More convenient preparation is implemented in cobbler 3.3.1, where support for importing a windows distribution has appeared. But full automation of windows installation preparation is not yet available in this version either. In particular, you need to manually prepare the samba share (smb.conf) and the translation rules for tftp (tftp.rules) as it is said in: https://github.com/cobbler/cobbler/blob/main/docs/user-guide/wingen.rst
I've tried this tutorial several times, including my colleagues, with no success, 2.8.5 requires manual steps but it works flawlessly, so we'd like a full tutorial or a full deployment blog, though I know it's a little irrational, but we do have this problem

Thank you !!!
Our environment is centos8
3.2.2 and 3.3 (no cobbler web) deployed respectively
and centos7 2.8.5 (works perfectly, lots of manual steps and old python interpreter,this is why we want to upgrade to 3.x)

At present, we have searched for some information on search engines, but we can only find very few cobbler 3.wndows installation content, and most of the content is official documents, so it is best to have a supplementary blog or deployment tutorial

Resolving patch:
diff --git a/cobbler/modules/sync_post_wingen.py b/cobbler/modules/sync_post_wingen.py
--- a/cobbler/modules/sync_post_wingen.py
+++ b/cobbler/modules/sync_post_wingen.py
@@ -92,32 +92,21 @@ def guid2binary(g):
     h.node_set_value(e1, {"key": "Element", "t": REG_BINARY, "value": b"\x01"})
     e1 = h.node_add_child(e, "11000001")
     guid = guid2binary("{ae5534e0-a924-466c-b836-758539a3ee3a}")
-    h.node_set_value(e1, {"key": "Element",
-                          "t": REG_BINARY,
-                          "value": guid + b"\x00\x00\x00\x00\x01\x00\x00\x00"
-                                        + winpath_length(wim, 126)
-                                        + b"\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-                                          b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00 "
-                                        + winpath_length(wim, 86)
-                                        + b"\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00"
-                                          b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-                                          b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-                                          b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-                                          b"\x00\x00\x00\x00\x00\x00\x00" + wim.encode(encoding="utf_16_le")
-                                        + b"\x00\x00"})
+    wimval = {"key": "Element",
+              "t": REG_BINARY,
+              "value": guid + b"\x00\x00\x00\x00\x01\x00\x00\x00" + winpath_length(wim, 126)
+                            + b"\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+                              b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00"
+                            + winpath_length(wim, 86)
+                            + b"\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00"
+                              b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+                              b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+                              b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
+                              b"\x00\x00\x00\x00\x00\x00\x00" + wim.encode(encoding="utf_16_le")
+                            + b"\x00\x00"}
+    h.node_set_value(e1, wimval)
     e1 = h.node_add_child(e, "21000001")
-    h.node_set_value(e1, {"key": "Element",
-                          "t": REG_BINARY,
-                          "value": guid + b"\x00\x00\x00\x00\x01\x00\x00\x00" + winpath_length(wim, 126)
-                                        + b"\x00\x00\x00\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-                                          b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x00\x00 "
-                                        + winpath_length(wim, 86)
-                                        + b"\x00\x00\x00\x05\x00\x00\x00\x05\x00\x00\x00\x00\x00\x00\x00\x48\x00\x00"
-                                          b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-                                          b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-                                          b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
-                                          b"\x00\x00\x00\x00\x00\x00\x00" + wim.encode(encoding="utf_16_le")
-                                        + b"\x00\x00"})
+    h.node_set_value(e1, wimval)
 
     if startoptions:
         e1 = h.node_add_child(e, "12000030")


Test patch: