windows-development-sandbox 1.18.4 → 1.20.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. package/README.md +1 -1
  2. package/config.example.json +9 -0
  3. package/dist/app/features/accounts/accounts.def.d.ts +4 -0
  4. package/dist/app/features/accounts/accounts.run.d.ts +1 -0
  5. package/dist/app/features/accounts/services.def.d.ts +3 -0
  6. package/dist/app/features/accounts/services.def.js +4 -2
  7. package/dist/app/features/accounts/services.run.d.ts +1 -0
  8. package/dist/app/features/accounts/services.run.js +3 -1
  9. package/dist/app/features/agent-commands/agent-commands.def.d.ts +37 -0
  10. package/dist/app/features/agent-commands/agent-commands.def.js +91 -0
  11. package/dist/app/features/agent-commands/agent-commands.run.d.ts +28 -0
  12. package/dist/app/features/agent-commands/agent-commands.run.js +35 -0
  13. package/dist/app/features/agent-commands/index.d.ts +2 -0
  14. package/dist/app/features/agent-commands/index.js +3 -0
  15. package/dist/app/features/agents/agents.def.d.ts +14 -1
  16. package/dist/app/features/agents/agents.def.js +61 -6
  17. package/dist/app/features/agents/agents.run.d.ts +1 -0
  18. package/dist/app/features/agents/agents.run.js +8 -1
  19. package/dist/app/features/agents/claude-env.def.d.ts +36 -0
  20. package/dist/app/features/agents/claude-env.def.js +305 -0
  21. package/dist/app/features/agents/env.def.d.ts +163 -0
  22. package/dist/app/features/agents/env.def.js +184 -0
  23. package/dist/app/features/agents/env.run.d.ts +43 -0
  24. package/dist/app/features/agents/env.run.js +86 -0
  25. package/dist/app/features/agents/index.d.ts +2 -0
  26. package/dist/app/features/agents/index.js +2 -0
  27. package/dist/app/features/defs.d.ts +132 -1
  28. package/dist/app/features/defs.js +9 -0
  29. package/dist/app/features/settings/categories.def.js +5 -2
  30. package/dist/app/features/settings/settings-rows.js +5 -1
  31. package/dist/app/features/settings/settings.run.d.ts +8 -0
  32. package/dist/app/features/settings/settings.run.js +9 -0
  33. package/dist/app/features/updates/updates.run.js +12 -2
  34. package/dist/app/features/vpn/vpn.def.d.ts +33 -0
  35. package/dist/app/features/vpn/vpn.def.js +30 -6
  36. package/dist/app/features/vpn/vpn.run.d.ts +11 -0
  37. package/dist/app/features/vpn/vpn.run.js +4 -1
  38. package/dist/app/kernel/rpc.d.ts +1 -1
  39. package/dist/app/registry.js +7 -1
  40. package/dist/bin/agent-sandbox.js +2 -2
  41. package/dist/bin/{chunk-MY7NLQQY.js → chunk-2IMT7ZCT.js} +1 -1
  42. package/dist/bin/{chunk-N4GXYTLV.js → chunk-DK4NTBUF.js} +69 -26
  43. package/dist/bin/{chunk-FRPLQLSY.js → chunk-Z2P5OGKL.js} +4323 -3463
  44. package/dist/bin/claude-host.js +2 -2
  45. package/dist/bin/claude-sbx.js +2 -2
  46. package/dist/bin/codex-sbx.js +2 -2
  47. package/dist/bin/gemini-sbx.js +2 -2
  48. package/dist/bin/sandbox.js +2 -2
  49. package/dist/bin/sbx-hide.js +2 -2
  50. package/dist/bin/sbx-show.js +2 -2
  51. package/dist/cli/commands/agent-commands.d.ts +0 -1
  52. package/dist/cli/commands/agent-commands.js +2 -32
  53. package/dist/cli/commands/index.d.ts +1 -1
  54. package/dist/cli/commands/index.js +1 -1
  55. package/dist/cli/commands/launch/launch.js +2 -2
  56. package/dist/cli/commands/registry.js +3 -2
  57. package/dist/cli/manifest.d.ts +1 -1
  58. package/dist/cli/manifest.js +1 -1
  59. package/dist/cli/menu/menu.d.ts +1 -1
  60. package/dist/cli/menu/menu.js +3 -3
  61. package/dist/cli/menu/pages/agents-page.d.ts +7 -2
  62. package/dist/cli/menu/pages/agents-page.js +67 -11
  63. package/dist/cli/menu/pages/maintenance-page.js +1 -2
  64. package/dist/cli/menu/pages/settings-page.js +1 -0
  65. package/dist/cli/menu/views.js +2 -1
  66. package/dist/cli/services/agent-commands-service.d.ts +2 -0
  67. package/dist/cli/services/agent-commands-service.js +13 -7
  68. package/dist/cli/services/vpn-service.d.ts +5 -1
  69. package/dist/cli/services/vpn-service.js +6 -1
  70. package/dist/cli/tui/dialogs/text-screen.js +2 -1
  71. package/dist/cli/tui/terminal.js +3 -1
  72. package/dist/core/config/defaults.js +9 -0
  73. package/dist/core/detect/toolchains.js +9 -0
  74. package/dist/core/disk.d.ts +1 -5
  75. package/dist/core/disk.js +1 -16
  76. package/dist/core/schema/codex.d.ts +29 -0
  77. package/dist/core/schema/codex.js +24 -0
  78. package/dist/core/schema/config.d.ts +46 -14
  79. package/dist/core/schema/config.js +2 -0
  80. package/dist/core/schema/index.d.ts +1 -0
  81. package/dist/core/schema/index.js +1 -0
  82. package/dist/core/schema/toolchains.d.ts +4 -0
  83. package/dist/core/schema/toolchains.js +3 -0
  84. package/dist/core/types.d.ts +2 -0
  85. package/dist/guest/accounts/apply.d.ts +6 -6
  86. package/dist/guest/agents/agent-files.d.ts +26 -6
  87. package/dist/guest/agents/agent-files.js +84 -14
  88. package/dist/guest/agents/local-state.d.ts +5 -2
  89. package/dist/guest/agents/local-state.js +24 -10
  90. package/dist/guest/boot/boot.js +10 -5
  91. package/dist/guest/daemon/sessions.js +2 -1
  92. package/dist/guest/toolchains/installers.d.ts +6 -10
  93. package/dist/guest/toolchains/installers.js +4 -12
  94. package/dist/guest/toolchains/native/autosdk.d.ts +3 -0
  95. package/dist/guest/toolchains/native/autosdk.js +50 -0
  96. package/dist/guest/toolchains/native/unreal.js +3 -0
  97. package/dist/guest/toolchains/native/vcruntime.d.ts +0 -3
  98. package/dist/guest/toolchains/native/vcruntime.js +2 -5
  99. package/dist/guest/toolchains/native/visual-studio.d.ts +2 -2
  100. package/dist/guest/toolchains/native/visual-studio.js +100 -16
  101. package/dist/guest/toolchains/native/vs-request.d.ts +21 -0
  102. package/dist/guest/toolchains/native/vs-request.js +60 -1
  103. package/dist/guest/toolchains/not-yet.d.ts +1 -1
  104. package/dist/guest/toolchains/not-yet.js +3 -3
  105. package/dist/guest/toolchains/persisted.js +2 -7
  106. package/dist/guest/toolchains/plan.js +9 -4
  107. package/dist/guest/toolchains/signature.d.ts +5 -0
  108. package/dist/guest/toolchains/signature.js +22 -0
  109. package/dist/guest/vpn/tunnel.d.ts +3 -0
  110. package/dist/guest/vpn/tunnel.js +10 -12
  111. package/dist/guest/vpn/vpn.js +6 -1
  112. package/dist/host/accounts/leases.d.ts +3 -3
  113. package/dist/host/accounts/source.js +1 -1
  114. package/dist/host/agent-commands/commands.js +1 -1
  115. package/dist/host/agent-commands/forwarders.d.ts +14 -2
  116. package/dist/host/agent-commands/forwarders.js +31 -13
  117. package/dist/host/agent-commands/reconcile.d.ts +2 -1
  118. package/dist/host/agent-commands/reconcile.js +7 -8
  119. package/dist/host/agent-commands/user-path.d.ts +5 -0
  120. package/dist/host/agent-commands/user-path.js +13 -0
  121. package/dist/host/launch/session-file.js +1 -0
  122. package/dist/host/profile/accounts.js +2 -4
  123. package/dist/host/profile/claude-login.d.ts +3 -2
  124. package/dist/host/profile/claude-login.js +3 -13
  125. package/dist/host/vpn/index.d.ts +2 -1
  126. package/dist/host/vpn/index.js +2 -1
  127. package/dist/host/vpn/last.d.ts +28 -0
  128. package/dist/host/vpn/last.js +43 -0
  129. package/dist/host/vpn/login.d.ts +3 -1
  130. package/dist/host/vpn/login.js +17 -3
  131. package/dist/runtime/agent.js +28 -0
  132. package/dist/runtime/daemon.js +1117 -912
  133. package/dist/runtime/db.js +30 -0
  134. package/dist/runtime/main.js +1308 -1036
  135. package/dist/runtime/netproxy.js +22 -0
  136. package/dist/runtime/tool.js +238 -208
  137. package/dist/runtime/view.js +22 -0
  138. package/dist/selftest/agent-commands.test.js +45 -7
  139. package/dist/selftest/agent-paths.test.js +1 -12
  140. package/dist/selftest/agent-settings.test.d.ts +2 -0
  141. package/dist/selftest/agent-settings.test.js +94 -0
  142. package/dist/selftest/app.test.js +2 -1
  143. package/dist/selftest/cli.test.js +4 -0
  144. package/dist/selftest/index.js +2 -0
  145. package/dist/selftest/menu.test.js +5 -3
  146. package/dist/selftest/pc-installs.test.js +5 -0
  147. package/dist/selftest/persisted-installs.test.js +69 -0
  148. package/dist/selftest/service-accounts.test.js +1 -1
  149. package/dist/selftest/support/engine-golden.js +1 -1
  150. package/dist/selftest/support/fixtures.d.ts +9 -0
  151. package/dist/selftest/vpn.test.js +51 -3
  152. package/dist/shared/accounts/anthropic.d.ts +5 -0
  153. package/dist/shared/accounts/anthropic.js +15 -0
  154. package/dist/shared/accounts/index.d.ts +1 -0
  155. package/dist/shared/accounts/index.js +1 -0
  156. package/dist/shared/channel/schema.d.ts +19 -0
  157. package/dist/shared/channel/schema.js +2 -0
  158. package/dist/shared/io/disk.d.ts +9 -0
  159. package/dist/shared/io/disk.js +19 -0
  160. package/dist/shared/io/index.d.ts +1 -0
  161. package/dist/shared/io/index.js +1 -0
  162. package/dist/shared/readiness.d.ts +9 -0
  163. package/dist/shared/readiness.js +11 -0
  164. package/dist/shared/signer.d.ts +24 -0
  165. package/dist/shared/signer.js +15 -0
  166. package/dist/shared/vpn/failure.d.ts +10 -0
  167. package/dist/shared/vpn/failure.js +28 -0
  168. package/dist/sync/watcher.js +2 -0
  169. package/dist/web/index.html +1 -1
  170. package/dist/web/{main-GVZWWP4I.js → main-OUUQYNK4.js} +75 -74
  171. package/native/csharp/HcsHost/AssemblyInfo.cs +3 -3
  172. package/native/csharp/HostTools/AssemblyInfo.cs +3 -3
  173. package/native/csharp/HostTools/Program.cs +14 -1
  174. package/native/csharp/HostTools/UserPath.cs +17 -0
  175. package/native/csharp/StorageHelper/AssemblyInfo.cs +3 -3
  176. package/native/scripts/edit-user-path.ps1 +6 -2
  177. package/package.json +1 -1
  178. package/sandbox/scripts/get-signature.ps1 +13 -0
  179. package/schemas/config.schema.json +64 -0
  180. package/schemas/sandbox-config.schema.json +8 -0
  181. package/sandbox/scripts/get-signer.ps1 +0 -8
@@ -8,9 +8,9 @@ using System.Runtime.InteropServices;
8
8
  [assembly: AssemblyCompany("windows-development-sandbox (open source)")]
9
9
  [assembly: AssemblyProduct("Windows Development Sandbox")]
10
10
  [assembly: AssemblyCopyright("MIT License, windows-development-sandbox contributors")]
11
- [assembly: AssemblyVersion("1.18.4.0")]
12
- [assembly: AssemblyFileVersion("1.18.4.0")]
13
- [assembly: AssemblyInformationalVersion("1.18.4")]
11
+ [assembly: AssemblyVersion("1.20.0.0")]
12
+ [assembly: AssemblyFileVersion("1.20.0.0")]
13
+ [assembly: AssemblyInformationalVersion("1.20.0")]
14
14
  [assembly: ComVisible(false)]
15
15
  // computecore.dll and computestorage.dll are not KnownDLLs: load them from System32 only, never from the exe's folder.
16
16
  [assembly: DefaultDllImportSearchPaths(DllImportSearchPath.System32)]
@@ -8,7 +8,7 @@ using System.Runtime.InteropServices;
8
8
  [assembly: AssemblyCompany("windows-development-sandbox (open source)")]
9
9
  [assembly: AssemblyProduct("Windows Development Sandbox")]
10
10
  [assembly: AssemblyCopyright("MIT License, windows-development-sandbox contributors")]
11
- [assembly: AssemblyVersion("1.18.4.0")]
12
- [assembly: AssemblyFileVersion("1.18.4.0")]
13
- [assembly: AssemblyInformationalVersion("1.18.4")]
11
+ [assembly: AssemblyVersion("1.20.0.0")]
12
+ [assembly: AssemblyFileVersion("1.20.0.0")]
13
+ [assembly: AssemblyInformationalVersion("1.20.0")]
14
14
  [assembly: ComVisible(false)]
@@ -6,6 +6,7 @@
6
6
  // hide-window --wait S hides the sandbox window once it appears; prints the hidden handles as JSON
7
7
  // show-window --handles a,b shows those windows (else any sandbox window); prints how many
8
8
  // user-path --add|--remove D D first on, or off, your PATH; exit 3 when PATH would be too long
9
+ // user-path --has D exit 0 when D is on your stored PATH, 1 when not
9
10
  // web-helper --pipe P --server-pid N Windows sign-in for the web UI (WebHelper.cs), until stdin closes
10
11
  // door-client --owner USER another user's side of that sign-in: prints the answer
11
12
  // protect | unprotect DPAPI for the current user (Protect.cs): base64 on stdin, base64 on stdout
@@ -85,6 +86,18 @@ static class Program
85
86
  Console.Out.Write(AgentSandbox.Win.Show(handles).ToString(CultureInfo.InvariantCulture));
86
87
  return 0;
87
88
  case "user-path":
89
+ if (options.TryGetValue("has", out value))
90
+ {
91
+ try
92
+ {
93
+ return AgentSandbox.UserPath.Has(value);
94
+ }
95
+ catch (Exception e)
96
+ {
97
+ Console.Error.WriteLine(e.Message);
98
+ return 2;
99
+ }
100
+ }
88
101
  bool add = options.TryGetValue("add", out value);
89
102
  if (!add && !options.TryGetValue("remove", out value))
90
103
  {
@@ -124,7 +137,7 @@ static class Program
124
137
 
125
138
  static int Usage()
126
139
  {
127
- Console.Error.WriteLine("Usage: HostTools keep-awake --owner-pid N | stop-events --since <ISO time> | memory-status | hide-window --wait S | show-window [--handles a,b] | user-path --add|--remove <folder> | web-helper --pipe P --server-pid N | door-client --owner USER | protect | unprotect");
140
+ Console.Error.WriteLine("Usage: HostTools keep-awake --owner-pid N | stop-events --since <ISO time> | memory-status | hide-window --wait S | show-window [--handles a,b] | user-path --add|--remove|--has <folder> | web-helper --pipe P --server-pid N | door-client --owner USER | protect | unprotect");
128
141
  return 2;
129
142
  }
130
143
 
@@ -59,6 +59,23 @@ namespace AgentSandbox
59
59
  return Done;
60
60
  }
61
61
 
62
+ /// <summary>Whether dir is on your stored PATH (the registry, not this process's copy): 0 = yes, 1 = no.</summary>
63
+ public static int Has(string dir)
64
+ {
65
+ using (RegistryKey key = Registry.CurrentUser.CreateSubKey("Environment"))
66
+ {
67
+ string raw = Convert.ToString(key.GetValue("Path", "", RegistryValueOptions.DoNotExpandEnvironmentNames));
68
+ foreach (string part in raw.Split(';'))
69
+ {
70
+ if (part.Length > 0 && string.Equals(part.TrimEnd('\\'), dir.TrimEnd('\\'),StringComparison.OrdinalIgnoreCase))
71
+ {
72
+ return 0;
73
+ }
74
+ }
75
+ }
76
+ return 1;
77
+ }
78
+
62
79
  private static bool HasValue(RegistryKey key, string name)
63
80
  {
64
81
  foreach (string existing in key.GetValueNames())
@@ -9,7 +9,7 @@ using System.Runtime.InteropServices;
9
9
  [assembly: AssemblyCompany("windows-development-sandbox (open source)")]
10
10
  [assembly: AssemblyProduct("Windows Development Sandbox")]
11
11
  [assembly: AssemblyCopyright("MIT License, windows-development-sandbox contributors")]
12
- [assembly: AssemblyVersion("1.18.4.0")]
13
- [assembly: AssemblyFileVersion("1.18.4.0")]
14
- [assembly: AssemblyInformationalVersion("1.18.4")]
12
+ [assembly: AssemblyVersion("1.20.0.0")]
13
+ [assembly: AssemblyFileVersion("1.20.0.0")]
14
+ [assembly: AssemblyInformationalVersion("1.20.0")]
15
15
  [assembly: ComVisible(false)]
@@ -1,11 +1,15 @@
1
1
  #Requires -Version 5.1
2
- # Puts -Dir first on your PATH (-Add) or takes it off, then tells Windows it changed. Exit 3: PATH would be too long.
2
+ # Puts -Dir first on your PATH (-Add) or takes it off, then tells Windows it changed. -Query only asks: exit 0 when it is on
3
+ # your stored PATH, 1 when not. Exit 3: PATH would be too long.
3
4
  # The fallback for HostTools.exe user-path (host/agent-commands/user-path.ts).
4
5
  param(
5
6
  [Parameter(Mandatory = $true)][string]$Dir,
6
- [switch]$Add
7
+ [switch]$Add,
8
+
9
+ [switch]$Query
7
10
  )
8
11
  $ErrorActionPreference = 'Stop'
9
12
 
10
13
  Add-Type -Path (Join-Path $PSScriptRoot '..\csharp\HostTools\UserPath.cs')
14
+ if ($Query) { exit [AgentSandbox.UserPath]::Has($Dir) }
11
15
  exit [AgentSandbox.UserPath]::Edit($Dir, [bool]$Add)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "windows-development-sandbox",
3
- "version": "1.18.4",
3
+ "version": "1.20.0",
4
4
  "description": "A disposable Windows Sandbox for development, with or without an AI agent (Claude Code, Codex, Gemini, opencode, ...): the folder you run it from is the workspace, toolchains and databases for your project install themselves, and nothing else on your PC is reachable.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -0,0 +1,13 @@
1
+ #Requires -Version 5.1
2
+ # Prints the certificate names of a file's Authenticode signature as JSON ({"subject": ..., "issuer": ...}) when the
3
+ # signature is valid; prints nothing when the file is unsigned or was tampered with. guest/apps/signature.ts checks
4
+ # them against an app's expected signer (AppEntry.signer) before the download is kept or an installer is run.
5
+ param([Parameter(Mandatory = $true)][string]$Path)
6
+ $ErrorActionPreference = 'Stop'
7
+
8
+ $signature = Get-AuthenticodeSignature -LiteralPath $Path
9
+ if ($signature.Status -eq 'Valid' -and $signature.SignerCertificate) {
10
+ $certificate = $signature.SignerCertificate
11
+ [pscustomobject]@{ subject = [string]$certificate.Subject; issuer = [string]$certificate.Issuer } |
12
+ ConvertTo-Json -Compress
13
+ }
@@ -861,6 +861,14 @@
861
861
  "type": "boolean",
862
862
  "description": "Keep an offline copy of the Visual Studio install files in tools\\visualstudio (~10 GB, made once), so later boots install without downloading them again. Skipped while that disk has too little room."
863
863
  },
864
+ "visualStudio": {
865
+ "type": "string",
866
+ "enum": [
867
+ "full",
868
+ "autosdk"
869
+ ],
870
+ "description": "\"full\": install Visual Studio Community (the engine finds it through the Setup API; ~10 GB, redone every boot). \"autosdk\" (experimental): skip Visual Studio and build an Unreal AutoSDK tree from the portable MSVC in tools\\unreal\\autosdk (kept between sandboxes); UnrealBuildTool finds MSVC through AutoSDK, but the editor's Visual Studio integration is not available. Needs toolchains.msvc (turned on for you)."
871
+ },
864
872
  "persistEngines": {
865
873
  "type": "boolean",
866
874
  "description": "Engines the Epic Games Launcher installs go to tools\\unreal\\engines (kept between sandboxes, 40-60 GB each) and are registered with the launcher again every boot. Off: they go on the sandbox disk and are lost when it closes. Engines installed on this PC can be mapped instead (pcInstalls.unrealEngines)."
@@ -2259,6 +2267,62 @@
2259
2267
  },
2260
2268
  "description": "Agents that can run in the sandbox."
2261
2269
  },
2270
+ "codex": {
2271
+ "type": "object",
2272
+ "properties": {
2273
+ "sandboxMode": {
2274
+ "type": "string",
2275
+ "enum": [
2276
+ "danger-full-access",
2277
+ "workspace-write",
2278
+ "read-only"
2279
+ ],
2280
+ "description": "Codex's own sandbox. Inside Windows Sandbox Codex's own sandbox only slows it down (it re-grants file permissions over your profile at every boot), so the default is danger-full-access: Windows Sandbox is the sandbox."
2281
+ },
2282
+ "approvalPolicy": {
2283
+ "type": "string",
2284
+ "enum": [
2285
+ "never",
2286
+ "on-request",
2287
+ "on-failure",
2288
+ "untrusted"
2289
+ ],
2290
+ "description": "When Codex asks before it runs a command. \"never\" with danger-full-access starts it with no questions."
2291
+ },
2292
+ "model": {
2293
+ "type": "string",
2294
+ "maxLength": 100,
2295
+ "pattern": "^[A-Za-z0-9._:/-]*$",
2296
+ "description": "The model Codex uses. Empty = Codex's own default."
2297
+ },
2298
+ "reasoningEffort": {
2299
+ "type": "string",
2300
+ "enum": [
2301
+ "default",
2302
+ "minimal",
2303
+ "low",
2304
+ "medium",
2305
+ "high",
2306
+ "xhigh"
2307
+ ],
2308
+ "description": "How hard Codex thinks. \"default\" = Codex's own default."
2309
+ },
2310
+ "windowsSandbox": {
2311
+ "type": "string",
2312
+ "enum": [
2313
+ "off",
2314
+ "unelevated",
2315
+ "elevated"
2316
+ ],
2317
+ "description": "Codex's Windows sandbox mode in its config.toml. \"off\" removes the setting so Codex does not set up its sandbox users and firewall rules at every boot."
2318
+ },
2319
+ "mcpLoginsInFile": {
2320
+ "type": "boolean",
2321
+ "description": "Keep the sign-ins of Codex's MCP servers in a file in the saved Codex folder (mcp_oauth_credentials_store = \"file\"), so they survive between sandboxes. A value you set in config.toml is kept."
2322
+ }
2323
+ },
2324
+ "additionalProperties": false
2325
+ },
2262
2326
  "hooks": {
2263
2327
  "type": "object",
2264
2328
  "properties": {
@@ -546,6 +546,14 @@
546
546
  "type": "boolean",
547
547
  "description": "Keep an offline copy of the Visual Studio install files in tools\\visualstudio (~10 GB, made once), so later boots install without downloading them again. Skipped while that disk has too little room."
548
548
  },
549
+ "visualStudio": {
550
+ "type": "string",
551
+ "enum": [
552
+ "full",
553
+ "autosdk"
554
+ ],
555
+ "description": "\"full\": install Visual Studio Community (the engine finds it through the Setup API; ~10 GB, redone every boot). \"autosdk\" (experimental): skip Visual Studio and build an Unreal AutoSDK tree from the portable MSVC in tools\\unreal\\autosdk (kept between sandboxes); UnrealBuildTool finds MSVC through AutoSDK, but the editor's Visual Studio integration is not available. Needs toolchains.msvc (turned on for you)."
556
+ },
549
557
  "persistEngines": {
550
558
  "type": "boolean",
551
559
  "description": "Engines the Epic Games Launcher installs go to tools\\unreal\\engines (kept between sandboxes, 40-60 GB each) and are registered with the launcher again every boot. Off: they go on the sandbox disk and are lost when it closes. Engines installed on this PC can be mapped instead (pcInstalls.unrealEngines)."
@@ -1,8 +0,0 @@
1
- #Requires -Version 5.1
2
- # Prints the subject of a file's Authenticode signature when it is valid; prints nothing when the file is unsigned or
3
- # was tampered with (guest/toolchains/native/vcruntime.ts checks Microsoft's signature before running an installer).
4
- param([Parameter(Mandatory = $true)][string]$Path)
5
- $ErrorActionPreference = 'Stop'
6
-
7
- $signature = Get-AuthenticodeSignature -LiteralPath $Path
8
- if ($signature.Status -eq 'Valid') { $signature.SignerCertificate.Subject }