diff --git a/res/msi/Package/Components/RustDesk.wxs b/res/msi/Package/Components/RustDesk.wxs
index fa8c402e1..b2049f4e8 100644
--- a/res/msi/Package/Components/RustDesk.wxs
+++ b/res/msi/Package/Components/RustDesk.wxs
@@ -17,7 +17,7 @@
-
+
@@ -40,11 +40,11 @@
-
+
-
-
+
+
@@ -54,14 +54,14 @@
-
+
-
+
@@ -109,7 +109,7 @@
-
+
diff --git a/res/msi/Package/Fragments/AddRemoveProperties.wxs b/res/msi/Package/Fragments/AddRemoveProperties.wxs
index f93852867..a7139fab2 100644
--- a/res/msi/Package/Fragments/AddRemoveProperties.wxs
+++ b/res/msi/Package/Fragments/AddRemoveProperties.wxs
@@ -25,6 +25,9 @@
+
+
+
diff --git a/res/msi/preprocess.py b/res/msi/preprocess.py
index 02db5bde4..9a6a3bcab 100644
--- a/res/msi/preprocess.py
+++ b/res/msi/preprocess.py
@@ -64,6 +64,12 @@ def make_parser():
parser.add_argument(
"-c", "--custom", action="store_true", help="Is custom client", default=False
)
+ parser.add_argument(
+ "--custom-client-props",
+ type=str,
+ default="{}",
+ help='Custom client properties, e.g. \'{"connection-type": "outgoing"}\'',
+ )
parser.add_argument(
"--app-name", type=str, default="RustDesk", help="The app name."
)
@@ -385,6 +391,33 @@ def gen_custom_ARPSYSTEMCOMPONENT(args, dist_dir):
else:
return gen_custom_ARPSYSTEMCOMPONENT_False(args)
+def gen_custom_client_properties(args):
+ try:
+ props = json.loads(args.custom_client_props)
+ except json.JSONDecodeError as e:
+ print(f"Failed to decode custom props: {e}")
+ return False
+
+ def func(lines, index_start):
+ indent = g_indent_unit * 3
+
+ lines_new = []
+
+ if 'connection-type' in props:
+ lines_new.append(
+ f"""{indent}\n"""
+ )
+
+ for i, line in enumerate(lines_new):
+ lines.insert(index_start + i + 1, line)
+ return lines
+
+ return gen_content_between_tags(
+ "Package/Fragments/AddRemoveProperties.wxs",
+ "",
+ "",
+ func,
+ )
def gen_content_between_tags(filename, tag_start, tag_end, func):
target_file = Path(sys.argv[0]).parent.joinpath(filename)
@@ -506,6 +539,9 @@ if __name__ == "__main__":
if not gen_custom_ARPSYSTEMCOMPONENT(args, dist_dir):
sys.exit(-1)
+ if not gen_custom_client_properties(args):
+ sys.exit(-1)
+
if not gen_auto_component(app_name, dist_dir):
sys.exit(-1)