Scope
This comparison covers the two PyInstaller bundle layouts for Windows 11 x64. It records what the local release estate exercises. It does not compare every bootloader, antivirus, or application-startup condition.
Answer
For the estate’s PolyForm Noncommercial/Internal Use distributions, use --onedir because bundled LGPL Qt and other LGPL libraries must remain replaceable by end users. This is the mapped estate decision rule, not a general preference for --onedir.
--onefile was not chosen or reproduced for that mapped PolyForm route. The canonical SXT policy permits either layout for MIT/open-source tools, where source is available for rebuilding and relinking. This does not remove dependency notices or other obligations, and it does not make either layout universally correct.
| Need | --onedir |
--onefile |
|---|---|---|
| Mapped PolyForm LGPL-replaceability evidence | Yes | No |
| Portable ZIP input | Full output folder | Viable but not reproduced here |
| Shared Inno installer input | Full output folder | Viable but not reproduced here |
| Present local app release route | Yes | No |
Decision path
- Determine whether dependency licensing requires end users to replace or relink bundled libraries. If that requirement applies, choose the mapped
--onedirroute. - Include the complete output folder in the ZIP. Do not distribute only the
.exeunless your own build proves it is sufficient. - Point the installer at the
--onediroutput folder when using the shared workflow for that PolyForm route. - For an MIT/open-source SXT, either layout is available under the canonical policy. Apply the actual dependency obligations, then test the released artifact, asset behavior, update approach, and installer integration.
Production evidence
Simple UNA Log Viewer’s build script invokes pyinstaller --onedir and collects PySide6 and qtpy. The shared release workflow compresses the complete distribution folder and passes that folder to Inno Setup.
Unsupported or external outcomes
--onefilewas not chosen or reproduced for the mapped PolyForm route.- The evidence is pywebview plus PySide6 Qt backend, not a standalone native PySide6 app.
- Authenticode signing, Store or MSIX, and general WinGet acceptance are external outcomes.
- Hashes and provenance can document bytes and build origin, but neither establishes malware safety or SmartScreen reputation.
- This is not legal advice. Layout alone does not fulfill all license obligations; notices, source or offer requirements, and the actual dependency and license versions still matter.
Related drafts
Source ledger
| Source owner | Primary URL | Review class | Last reviewed | Exact claim or evidence mapped |
|---|---|---|---|---|
| PyInstaller | https://pyinstaller.org/en/stable/usage.html | Framework-critical | August 14, 2026 | --onedir and --onefile build options. |
| PyInstaller | https://pyinstaller.org/en/stable/runtime-information.html | Framework-critical | August 14, 2026 | One-folder and one-file runtime bundle context. |
| JDE-Projects Simple UNA Log Viewer | https://github.com/JDE-Projects/Simple-UNA-Log-Viewer/blob/df2ce2118a0d8c2ffa3ec0ea0189dc6a6eefc1e3/Build_Simple_UNA_Log_Viewer.bat | Production evidence | August 14, 2026 | --onedir invocation for the reproduced app shape. |
| JDE-Projects Build-Tools | https://github.com/JDE-Projects/Build-Tools/blob/ab90ba3459fe0e7cadab8d23d7e920d0bacabdaa/.github/workflows/release.yml | Production evidence | August 14, 2026 | Folder ZIP and installer inputs. |
| JDE-Projects Simple UNA Log Viewer | https://github.com/JDE-Projects/Simple-UNA-Log-Viewer/blob/df2ce2118a0d8c2ffa3ec0ea0189dc6a6eefc1e3/THIRD-PARTY-LICENSES.txt | Production evidence | August 14, 2026 | Estate notice states the --onedir replaceability goal. |
| Qt | https://www.qt.io/development/open-source-lgpl-obligations | Framework-critical | August 14, 2026 | Qt LGPL obligations boundary. |
| Qt | https://www.qt.io/faq/qt-open-source-licensing | Framework-critical | August 14, 2026 | Qt open-source licensing context. |
| Free Software Foundation | https://www.gnu.org/licenses/lgpl-3.0.en.html | Framework-critical | August 14, 2026 | LGPLv3 primary license text. |