AI-Studio/documentation/compatibility-shims/2026-07-enterprise-config-zip-backslashes.md
Thorsten Sommer 0af0330482
Some checks are pending
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-apple-darwin, osx-x64, macos-latest, x86_64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-pc-windows-msvc.exe, win-x64, windows-latest, x86_64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-x86_64-unknown-linux-gnu, linux-x64, ubuntu-22.04, x86_64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Prepare & create release (push) Blocked by required conditions
Build and Release / Determine run mode (push) Waiting to run
Build and Release / Read metadata (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-apple-darwin, osx-arm64, macos-latest, aarch64-apple-darwin, dmg,app,updater, dmg) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-pc-windows-msvc.exe, win-arm64, windows-latest, aarch64-pc-windows-msvc, nsis,updater, nsis) (push) Blocked by required conditions
Build and Release / Build app (${{ matrix.dotnet_runtime }}) (-aarch64-unknown-linux-gnu, linux-arm64, ubuntu-22.04-arm, aarch64-unknown-linux-gnu, appimage,updater, appimage) (push) Blocked by required conditions
Build and Release / Publish release (push) Blocked by required conditions
Fixed enterprise config ZIP extraction on Linux (#843)
2026-07-09 14:09:28 +02:00

1.7 KiB

Enterprise Configuration ZIP Backslashes

  • Status: Active
  • Introduced: 2026-07-09
  • Remove after: when Microsoft fixes dotnet/runtime#27620 and dotnet/runtime#41914
  • Code references:
    • app/MindWork AI Studio/Tools/PluginSystem/PluginFactory.Download.cs

User Impact

Some enterprise administrators create configuration plugin ZIP files on Windows. Depending on the packaging tool, entries inside the ZIP may use Windows-style backslashes, for example O\plugin.lua.

Without this shim, Unix systems extract those entries as files whose names contain literal backslash characters. The plugin loader then cannot find plugin.lua, so the enterprise configuration plugin is not activated.

Compatibility Behavior

AI Studio manually extracts downloaded enterprise configuration plugin ZIP files. During extraction, entry names are normalized so both / and \ are treated as archive path separators.

The extraction still preserves the archive structure and validates each entry before writing it to disk. Rooted paths, drive-qualified paths, and parent-directory traversal paths are rejected.

This works around the behavior described in dotnet/runtime#27620. A related upstream context for ZIP entry creation is dotnet/runtime#41914, where the ZIP specification requirement for forward slashes is discussed.

Removal Checklist

  • Confirm supported .NET runtimes and administrator packaging guidance no longer require accepting backslashes in enterprise ZIP entry names.
  • Replace the manual enterprise configuration plugin ZIP extraction with ZipFile.ExtractToDirectory(...).
  • Remove ExtractConfigPluginArchive(...), NormalizeConfigPluginZipEntryName(...), and GetConfigPluginZipEntryDestinationPath(...).
  • Update this document's status to Removed.