Instead of bundling binaries directly within the repository, we propose registering them as a formal binary extension using OneWare Studio's package/module definition. The binary should then be downloaded dynamically immediately after the plugin is installed.
To demonstrate how this can be achieved cleanly, the NetlistViewer Plug-In provides an excellent reference implementation. In its frontend module, it defines the backend binary as a Package with versioning, targets, and automatic path settings:
https://github.com/FEntwumS/FEntwumS.NetlistViewer/blob/master/src/FEntwumS.NetlistViewer/FEntwumSNetlistReaderFrontendModule.cs
public static readonly Package NetlistViewerBackendPackage = new()
{
Category = "Binaries",
Id = "NetlistReaderBackend",
Type = "NativeTool",
Name = "FEntwumS NetlistViewer Backend",
Description = "Backend for the FEntwumS Netlist Viewer",
License = "MIT License",
IconUrl = "https://avatars.githubusercontent.com/u/184253110?s=200&v=4",
Links =
[
new PackageLink()
{
Name = "GitHub",
Url = "https://github.com/FEntwumS/NetlistReaderBackend",
}
],
Tabs =
[
new PackageTab()
{
Title = "README",
ContentUrl = "https://raw.githubusercontent.com/FEntwumS/NetlistReaderBackend/refs/heads/master/README.md"
},
new PackageTab()
{
Title = "License",
ContentUrl = "https://raw.githubusercontent.com/FEntwumS/NetlistReaderBackend/refs/heads/master/LICENSE.txt"
}
],
Versions =
[
new PackageVersion()
{
Version = "0.11.2",
Targets =
[
new PackageTarget()
{
Target = "all",
Url = "https://github.com/FEntwumS/NetlistReaderBackend/releases/download/v0.11.2/fentwums-netlist-reader-server-v0.11.2.tar.gz",
AutoSetting =
[
new PackageAutoSetting()
{
RelativePath = "fentwums-netlist-reader",
SettingKey = FentwumSNetlistViewerSettingsHelper.NetlistPathSettingKey,
}
]
}
]
}
]
};
Benefits
- Smaller Repository Sizes: Keeps the plugin source code repository lightweight and clean.
- Better Dependency Management: Allows binaries to be versioned, updated, and targeted per OS independently of the core plugin UI.
- Bandwidth Efficiency: Users only download the heavy binaries when they actually install and use the plugin.
Instead of bundling binaries directly within the repository, we propose registering them as a formal binary extension using OneWare Studio's package/module definition. The binary should then be downloaded dynamically immediately after the plugin is installed.
To demonstrate how this can be achieved cleanly, the NetlistViewer Plug-In provides an excellent reference implementation. In its frontend module, it defines the backend binary as a Package with versioning, targets, and automatic path settings:
https://github.com/FEntwumS/FEntwumS.NetlistViewer/blob/master/src/FEntwumS.NetlistViewer/FEntwumSNetlistReaderFrontendModule.cs
Benefits