Initial check in
This commit is contained in:
24
OpenMaui.AppImage.sln
Normal file
24
OpenMaui.AppImage.sln
Normal file
@@ -0,0 +1,24 @@
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio Version 17
|
||||
VisualStudioVersion = 17.0.31903.59
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenMaui.AppImage", "src\OpenMaui.AppImage\OpenMaui.AppImage.csproj", "{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenMaui.AppImage.Installer", "src\OpenMaui.AppImage.Installer\OpenMaui.AppImage.Installer.csproj", "{B2C3D4E5-F678-9012-BCDE-F12345678901}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A1B2C3D4-E5F6-7890-ABCD-EF1234567890}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{B2C3D4E5-F678-9012-BCDE-F12345678901}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{B2C3D4E5-F678-9012-BCDE-F12345678901}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{B2C3D4E5-F678-9012-BCDE-F12345678901}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{B2C3D4E5-F678-9012-BCDE-F12345678901}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
188
README.md
Normal file
188
README.md
Normal file
@@ -0,0 +1,188 @@
|
||||
# OpenMaui.AppImage
|
||||
|
||||
A CLI tool to package .NET MAUI Linux applications as AppImages.
|
||||
|
||||
## What is AppImage?
|
||||
|
||||
AppImage is a universal Linux package format that allows you to distribute applications as a single executable file that works on most Linux distributions without installation.
|
||||
|
||||
## Features
|
||||
|
||||
- Package any .NET MAUI Linux app as an AppImage
|
||||
- Automatic `.desktop` file generation
|
||||
- Icon embedding
|
||||
- Built-in install/uninstall support
|
||||
- No root access required
|
||||
|
||||
## Prerequisites
|
||||
|
||||
1. **.NET 9 SDK** or later
|
||||
2. **appimagetool** - Download from [AppImageKit releases](https://github.com/AppImage/AppImageKit/releases)
|
||||
|
||||
### Installing appimagetool
|
||||
|
||||
```bash
|
||||
# Download
|
||||
wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
|
||||
|
||||
# Make executable
|
||||
chmod +x appimagetool-x86_64.AppImage
|
||||
|
||||
# Move to PATH
|
||||
sudo mv appimagetool-x86_64.AppImage /usr/local/bin/appimagetool
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
### As a .NET tool (recommended)
|
||||
|
||||
```bash
|
||||
dotnet tool install --global OpenMaui.AppImage
|
||||
```
|
||||
|
||||
### From source
|
||||
|
||||
```bash
|
||||
git clone https://github.com/AuroraNetworks/openmaui-appimage.git
|
||||
cd openmaui-appimage
|
||||
dotnet build
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### 1. Publish your MAUI app
|
||||
|
||||
```bash
|
||||
cd YourMauiApp
|
||||
dotnet publish -c Release -r linux-x64 --self-contained false
|
||||
```
|
||||
|
||||
### 2. Create the AppImage
|
||||
|
||||
```bash
|
||||
openmaui-appimage \
|
||||
--input bin/Release/net9.0/linux-x64/publish \
|
||||
--output YourApp.AppImage \
|
||||
--name "Your App" \
|
||||
--executable YourMauiApp \
|
||||
--icon path/to/icon.png \
|
||||
--category Utility \
|
||||
--version 1.0.0
|
||||
```
|
||||
|
||||
### Options
|
||||
|
||||
| Option | Short | Required | Description |
|
||||
|--------|-------|----------|-------------|
|
||||
| `--input` | `-i` | Yes | Path to published .NET app directory |
|
||||
| `--output` | `-o` | Yes | Output AppImage file path |
|
||||
| `--name` | `-n` | Yes | Application name |
|
||||
| `--executable` | `-e` | No | Main executable name (defaults to app name) |
|
||||
| `--icon` | | No | Path to icon (PNG or SVG) |
|
||||
| `--category` | `-c` | No | Desktop category (default: Utility) |
|
||||
| `--version` | `-v` | No | App version (default: 1.0.0) |
|
||||
| `--comment` | | No | App description |
|
||||
|
||||
### Desktop Categories
|
||||
|
||||
Common categories: `Utility`, `Development`, `Game`, `Graphics`, `Network`, `Office`, `AudioVideo`, `System`
|
||||
|
||||
## Running the AppImage
|
||||
|
||||
```bash
|
||||
# Make executable (first time only)
|
||||
chmod +x YourApp.AppImage
|
||||
|
||||
# Run
|
||||
./YourApp.AppImage
|
||||
|
||||
# Install to system (adds to app menu)
|
||||
./YourApp.AppImage --install
|
||||
|
||||
# Uninstall
|
||||
./YourApp.AppImage --uninstall
|
||||
```
|
||||
|
||||
## Example: Packaging ShellDemo
|
||||
|
||||
```bash
|
||||
# Build and publish
|
||||
cd maui-linux-samples/ShellDemo
|
||||
dotnet publish -c Release -r linux-x64 --self-contained false
|
||||
|
||||
# Create AppImage
|
||||
openmaui-appimage \
|
||||
-i bin/Release/net9.0/linux-x64/publish \
|
||||
-o ShellDemo.AppImage \
|
||||
-n "OpenMaui Shell Demo" \
|
||||
-e ShellDemo \
|
||||
--icon Resources/Images/logo_only.svg \
|
||||
-c Utility \
|
||||
-v 1.0.0 \
|
||||
--comment "OpenMaui Controls Demonstration"
|
||||
```
|
||||
|
||||
## How It Works
|
||||
|
||||
1. **AppDir Structure**: Creates the standard AppImage directory structure:
|
||||
```
|
||||
YourApp.AppDir/
|
||||
├── AppRun # Entry point script
|
||||
├── YourApp.desktop # Desktop integration
|
||||
├── YourApp.svg # Application icon
|
||||
└── usr/
|
||||
└── bin/ # Your published .NET app
|
||||
```
|
||||
|
||||
2. **AppRun Script**: A bash script that:
|
||||
- Sets up the environment (PATH, LD_LIBRARY_PATH)
|
||||
- Handles `--install` and `--uninstall` flags
|
||||
- Launches the .NET application via `dotnet`
|
||||
|
||||
3. **appimagetool**: Packages everything into a single executable AppImage file
|
||||
|
||||
## Self-Contained vs Framework-Dependent
|
||||
|
||||
### Framework-Dependent (smaller, requires .NET runtime)
|
||||
```bash
|
||||
dotnet publish -c Release -r linux-x64 --self-contained false
|
||||
```
|
||||
- Smaller AppImage (~50-100MB smaller)
|
||||
- Requires .NET runtime on target system
|
||||
|
||||
### Self-Contained (larger, no dependencies)
|
||||
```bash
|
||||
dotnet publish -c Release -r linux-x64 --self-contained true
|
||||
```
|
||||
- Larger AppImage
|
||||
- Works on any Linux system without .NET installed
|
||||
- Recommended for distribution
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "appimagetool not found"
|
||||
Install appimagetool as described in Prerequisites.
|
||||
|
||||
### "Could not find executable"
|
||||
Use `--executable` to specify the correct DLL name (without .dll extension).
|
||||
|
||||
### AppImage won't run
|
||||
1. Ensure it's executable: `chmod +x YourApp.AppImage`
|
||||
2. Check for missing dependencies: `./YourApp.AppImage` (errors will be shown)
|
||||
|
||||
### FUSE errors
|
||||
Some systems require FUSE to mount AppImages. Install with:
|
||||
```bash
|
||||
sudo apt install fuse libfuse2 # Debian/Ubuntu
|
||||
sudo dnf install fuse fuse-libs # Fedora
|
||||
```
|
||||
|
||||
Or extract and run:
|
||||
```bash
|
||||
./YourApp.AppImage --appimage-extract
|
||||
./squashfs-root/AppRun
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT License - see [LICENSE](LICENSE)
|
||||
@@ -0,0 +1,17 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<PublishSingleFile>true</PublishSingleFile>
|
||||
<SelfContained>false</SelfContained>
|
||||
<PublishTrimmed>false</PublishTrimmed>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="GtkSharp" Version="3.24.24.95" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
321
src/OpenMaui.AppImage.Installer/Program.cs
Normal file
321
src/OpenMaui.AppImage.Installer/Program.cs
Normal file
@@ -0,0 +1,321 @@
|
||||
using Gtk;
|
||||
using System.Diagnostics;
|
||||
using IOPath = System.IO.Path;
|
||||
|
||||
namespace OpenMaui.AppImage.Installer;
|
||||
|
||||
class Program
|
||||
{
|
||||
static int Main(string[] args)
|
||||
{
|
||||
// Parse arguments
|
||||
string? appName = null;
|
||||
string? appImage = null;
|
||||
string? iconPath = null;
|
||||
string? execPath = null;
|
||||
string? comment = null;
|
||||
string? category = null;
|
||||
string? version = null;
|
||||
|
||||
for (int i = 0; i < args.Length; i++)
|
||||
{
|
||||
switch (args[i])
|
||||
{
|
||||
case "--name" when i + 1 < args.Length:
|
||||
appName = args[++i];
|
||||
break;
|
||||
case "--appimage" when i + 1 < args.Length:
|
||||
appImage = args[++i];
|
||||
break;
|
||||
case "--icon" when i + 1 < args.Length:
|
||||
iconPath = args[++i];
|
||||
break;
|
||||
case "--exec" when i + 1 < args.Length:
|
||||
execPath = args[++i];
|
||||
break;
|
||||
case "--comment" when i + 1 < args.Length:
|
||||
comment = args[++i];
|
||||
break;
|
||||
case "--category" when i + 1 < args.Length:
|
||||
category = args[++i];
|
||||
break;
|
||||
case "--version" when i + 1 < args.Length:
|
||||
version = args[++i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// Get from environment if not provided
|
||||
appImage ??= Environment.GetEnvironmentVariable("APPIMAGE");
|
||||
appName ??= Environment.GetEnvironmentVariable("APPIMAGE_NAME") ?? "Application";
|
||||
comment ??= Environment.GetEnvironmentVariable("APPIMAGE_COMMENT") ?? appName;
|
||||
category ??= Environment.GetEnvironmentVariable("APPIMAGE_CATEGORY") ?? "Utility";
|
||||
version ??= Environment.GetEnvironmentVariable("APPIMAGE_VERSION") ?? "1.0.0";
|
||||
|
||||
if (string.IsNullOrEmpty(appImage))
|
||||
{
|
||||
Console.Error.WriteLine("Error: --appimage or APPIMAGE environment variable required");
|
||||
return 1;
|
||||
}
|
||||
|
||||
Application.Init();
|
||||
|
||||
var dialog = new InstallerDialog(appName, appImage, iconPath, execPath, comment, category, version);
|
||||
dialog.ShowAll();
|
||||
|
||||
Application.Run();
|
||||
|
||||
return dialog.ResultCode;
|
||||
}
|
||||
}
|
||||
|
||||
class InstallerDialog : Window
|
||||
{
|
||||
private readonly string _appName;
|
||||
private readonly string _appImagePath;
|
||||
private readonly string? _iconPath;
|
||||
private readonly string? _execPath;
|
||||
private readonly string _comment;
|
||||
private readonly string _category;
|
||||
private readonly string _version;
|
||||
|
||||
public int ResultCode { get; private set; } = 1;
|
||||
|
||||
public InstallerDialog(string appName, string appImagePath, string? iconPath, string? execPath,
|
||||
string comment, string category, string version)
|
||||
: base(WindowType.Toplevel)
|
||||
{
|
||||
_appName = appName;
|
||||
_appImagePath = appImagePath;
|
||||
_iconPath = iconPath;
|
||||
_execPath = execPath;
|
||||
_comment = comment;
|
||||
_category = category;
|
||||
_version = version;
|
||||
|
||||
SetupWindow();
|
||||
BuildUI();
|
||||
}
|
||||
|
||||
private void SetupWindow()
|
||||
{
|
||||
Title = $"Install {_appName}";
|
||||
SetDefaultSize(400, 300);
|
||||
SetPosition(WindowPosition.Center);
|
||||
BorderWidth = 20;
|
||||
Resizable = false;
|
||||
|
||||
DeleteEvent += (o, e) =>
|
||||
{
|
||||
ResultCode = 1;
|
||||
Application.Quit();
|
||||
};
|
||||
}
|
||||
|
||||
private void BuildUI()
|
||||
{
|
||||
var mainBox = new Box(Orientation.Vertical, 20);
|
||||
|
||||
// Icon
|
||||
var iconBox = new Box(Orientation.Horizontal, 0);
|
||||
iconBox.Halign = Align.Center;
|
||||
|
||||
Image appIcon;
|
||||
if (!string.IsNullOrEmpty(_iconPath) && File.Exists(_iconPath))
|
||||
{
|
||||
try
|
||||
{
|
||||
var pixbuf = new Gdk.Pixbuf(_iconPath, 96, 96);
|
||||
appIcon = new Image(pixbuf);
|
||||
}
|
||||
catch
|
||||
{
|
||||
appIcon = CreateDefaultIcon();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
appIcon = CreateDefaultIcon();
|
||||
}
|
||||
iconBox.PackStart(appIcon, false, false, 0);
|
||||
mainBox.PackStart(iconBox, false, false, 0);
|
||||
|
||||
// App name
|
||||
var nameLabel = new Label();
|
||||
nameLabel.Markup = $"<span size='x-large' weight='bold'>{GLib.Markup.EscapeText(_appName)}</span>";
|
||||
nameLabel.Halign = Align.Center;
|
||||
mainBox.PackStart(nameLabel, false, false, 0);
|
||||
|
||||
// Version
|
||||
var versionLabel = new Label();
|
||||
versionLabel.Markup = $"<span size='small' foreground='gray'>Version {GLib.Markup.EscapeText(_version)}</span>";
|
||||
versionLabel.Halign = Align.Center;
|
||||
mainBox.PackStart(versionLabel, false, false, 0);
|
||||
|
||||
// Description
|
||||
var descLabel = new Label(_comment);
|
||||
descLabel.Halign = Align.Center;
|
||||
descLabel.LineWrap = true;
|
||||
descLabel.MaxWidthChars = 40;
|
||||
mainBox.PackStart(descLabel, false, false, 10);
|
||||
|
||||
// Install location info
|
||||
var installInfo = new Label();
|
||||
var binDir = IOPath.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".local", "bin");
|
||||
installInfo.Markup = $"<span size='small' foreground='gray'>Will install to: {GLib.Markup.EscapeText(binDir)}</span>";
|
||||
installInfo.Halign = Align.Center;
|
||||
mainBox.PackStart(installInfo, false, false, 0);
|
||||
|
||||
// Buttons
|
||||
var buttonBox = new Box(Orientation.Horizontal, 10);
|
||||
buttonBox.Halign = Align.Center;
|
||||
buttonBox.Valign = Align.End;
|
||||
buttonBox.MarginTop = 20;
|
||||
|
||||
var runButton = new Button("Run Without Installing");
|
||||
runButton.SetSizeRequest(180, 40);
|
||||
runButton.Clicked += OnRunClicked;
|
||||
|
||||
var installButton = new Button("Install");
|
||||
installButton.SetSizeRequest(120, 40);
|
||||
installButton.Clicked += OnInstallClicked;
|
||||
|
||||
buttonBox.PackStart(runButton, false, false, 0);
|
||||
buttonBox.PackStart(installButton, false, false, 0);
|
||||
mainBox.PackStart(buttonBox, false, false, 0);
|
||||
|
||||
Add(mainBox);
|
||||
}
|
||||
|
||||
private Image CreateDefaultIcon()
|
||||
{
|
||||
// Create a simple colored square as default icon
|
||||
var pixbuf = new Gdk.Pixbuf(Gdk.Colorspace.Rgb, true, 8, 96, 96);
|
||||
pixbuf.Fill(0x2196F3FF); // Blue color
|
||||
return new Image(pixbuf);
|
||||
}
|
||||
|
||||
private void OnRunClicked(object? sender, EventArgs e)
|
||||
{
|
||||
ResultCode = 0; // Success - run the app
|
||||
Hide();
|
||||
Application.Quit();
|
||||
}
|
||||
|
||||
private void OnInstallClicked(object? sender, EventArgs e)
|
||||
{
|
||||
try
|
||||
{
|
||||
var homeDir = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
|
||||
var binDir = IOPath.Combine(homeDir, ".local", "bin");
|
||||
var applicationsDir = IOPath.Combine(homeDir, ".local", "share", "applications");
|
||||
var iconsDir = IOPath.Combine(homeDir, ".local", "share", "icons", "hicolor", "256x256", "apps");
|
||||
var markerDir = IOPath.Combine(homeDir, ".local", "share", "openmaui-installed");
|
||||
|
||||
// Create directories
|
||||
Directory.CreateDirectory(binDir);
|
||||
Directory.CreateDirectory(applicationsDir);
|
||||
Directory.CreateDirectory(iconsDir);
|
||||
Directory.CreateDirectory(markerDir);
|
||||
|
||||
var appImageName = IOPath.GetFileName(_appImagePath);
|
||||
var sanitizedName = SanitizeName(_appName);
|
||||
var destPath = IOPath.Combine(binDir, appImageName);
|
||||
|
||||
// Copy AppImage
|
||||
File.Copy(_appImagePath, destPath, overwrite: true);
|
||||
|
||||
// Make executable
|
||||
var chmod = Process.Start(new ProcessStartInfo
|
||||
{
|
||||
FileName = "chmod",
|
||||
Arguments = $"+x \"{destPath}\"",
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true
|
||||
});
|
||||
chmod?.WaitForExit();
|
||||
|
||||
// Copy icon if available
|
||||
string iconName = sanitizedName;
|
||||
if (!string.IsNullOrEmpty(_iconPath) && File.Exists(_iconPath))
|
||||
{
|
||||
var iconExt = IOPath.GetExtension(_iconPath);
|
||||
var destIcon = IOPath.Combine(iconsDir, $"{sanitizedName}{iconExt}");
|
||||
File.Copy(_iconPath, destIcon, overwrite: true);
|
||||
}
|
||||
|
||||
// Create .desktop file
|
||||
var desktopContent = $@"[Desktop Entry]
|
||||
Type=Application
|
||||
Name={_appName}
|
||||
Comment={_comment}
|
||||
Exec={destPath}
|
||||
Icon={iconName}
|
||||
Categories={_category};
|
||||
Terminal=false
|
||||
X-AppImage-Version={_version}
|
||||
";
|
||||
var desktopPath = IOPath.Combine(applicationsDir, $"{sanitizedName}.desktop");
|
||||
File.WriteAllText(desktopPath, desktopContent);
|
||||
|
||||
// Create marker file
|
||||
File.WriteAllText(IOPath.Combine(markerDir, appImageName), DateTime.Now.ToString("O"));
|
||||
|
||||
// Update desktop database
|
||||
try
|
||||
{
|
||||
var updateDb = Process.Start(new ProcessStartInfo
|
||||
{
|
||||
FileName = "update-desktop-database",
|
||||
Arguments = applicationsDir,
|
||||
UseShellExecute = false,
|
||||
CreateNoWindow = true,
|
||||
RedirectStandardError = true
|
||||
});
|
||||
updateDb?.WaitForExit();
|
||||
}
|
||||
catch { }
|
||||
|
||||
// Show success message
|
||||
var successDialog = new MessageDialog(
|
||||
this,
|
||||
DialogFlags.Modal,
|
||||
MessageType.Info,
|
||||
ButtonsType.Ok,
|
||||
$"{_appName} has been installed successfully!\n\nYou can find it in your application menu.");
|
||||
successDialog.Title = "Installation Complete";
|
||||
successDialog.Run();
|
||||
successDialog.Destroy();
|
||||
|
||||
ResultCode = 2; // Installed - run the app
|
||||
Hide();
|
||||
Application.Quit();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var errorDialog = new MessageDialog(
|
||||
this,
|
||||
DialogFlags.Modal,
|
||||
MessageType.Error,
|
||||
ButtonsType.Ok,
|
||||
$"Installation failed: {ex.Message}");
|
||||
errorDialog.Title = "Installation Error";
|
||||
errorDialog.Run();
|
||||
errorDialog.Destroy();
|
||||
}
|
||||
}
|
||||
|
||||
private string SanitizeName(string name)
|
||||
{
|
||||
var invalid = IOPath.GetInvalidFileNameChars();
|
||||
var result = new System.Text.StringBuilder();
|
||||
foreach (var c in name)
|
||||
{
|
||||
if (invalid.Contains(c) || c == ' ')
|
||||
result.Append('_');
|
||||
else
|
||||
result.Append(c);
|
||||
}
|
||||
return result.ToString();
|
||||
}
|
||||
}
|
||||
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/AtkSharp.dll
Executable file
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/AtkSharp.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/CairoSharp.dll
Executable file
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/CairoSharp.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GLibSharp.dll
Executable file
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GLibSharp.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GdkSharp.dll
Executable file
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GdkSharp.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GioSharp.dll
Executable file
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GioSharp.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GtkSharp.dll
Executable file
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GtkSharp.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/OpenMaui.AppImage.Installer
Executable file
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/OpenMaui.AppImage.Installer
Executable file
Binary file not shown.
@@ -0,0 +1,164 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v9.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v9.0": {
|
||||
"OpenMaui.AppImage.Installer/1.0.0": {
|
||||
"dependencies": {
|
||||
"GtkSharp": "3.24.24.95",
|
||||
"Microsoft.NET.ILLink.Tasks": "9.0.11"
|
||||
},
|
||||
"runtime": {
|
||||
"OpenMaui.AppImage.Installer.dll": {}
|
||||
}
|
||||
},
|
||||
"AtkSharp/3.24.24.95": {
|
||||
"dependencies": {
|
||||
"GLibSharp": "3.24.24.95"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/AtkSharp.dll": {
|
||||
"assemblyVersion": "3.24.24.95",
|
||||
"fileVersion": "3.24.24.95"
|
||||
}
|
||||
}
|
||||
},
|
||||
"CairoSharp/3.24.24.95": {
|
||||
"runtime": {
|
||||
"lib/net6.0/CairoSharp.dll": {
|
||||
"assemblyVersion": "3.24.24.95",
|
||||
"fileVersion": "3.24.24.95"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GdkSharp/3.24.24.95": {
|
||||
"dependencies": {
|
||||
"CairoSharp": "3.24.24.95",
|
||||
"GLibSharp": "3.24.24.95",
|
||||
"GioSharp": "3.24.24.95",
|
||||
"PangoSharp": "3.24.24.95"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/GdkSharp.dll": {
|
||||
"assemblyVersion": "3.24.24.95",
|
||||
"fileVersion": "3.24.24.95"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GioSharp/3.24.24.95": {
|
||||
"dependencies": {
|
||||
"GLibSharp": "3.24.24.95"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/GioSharp.dll": {
|
||||
"assemblyVersion": "3.24.24.95",
|
||||
"fileVersion": "3.24.24.95"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GLibSharp/3.24.24.95": {
|
||||
"runtime": {
|
||||
"lib/net6.0/GLibSharp.dll": {
|
||||
"assemblyVersion": "3.24.24.95",
|
||||
"fileVersion": "3.24.24.95"
|
||||
}
|
||||
}
|
||||
},
|
||||
"GtkSharp/3.24.24.95": {
|
||||
"dependencies": {
|
||||
"AtkSharp": "3.24.24.95",
|
||||
"CairoSharp": "3.24.24.95",
|
||||
"GLibSharp": "3.24.24.95",
|
||||
"GdkSharp": "3.24.24.95",
|
||||
"GioSharp": "3.24.24.95",
|
||||
"PangoSharp": "3.24.24.95"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/GtkSharp.dll": {
|
||||
"assemblyVersion": "3.24.24.95",
|
||||
"fileVersion": "3.24.24.95"
|
||||
}
|
||||
}
|
||||
},
|
||||
"Microsoft.NET.ILLink.Tasks/9.0.11": {},
|
||||
"PangoSharp/3.24.24.95": {
|
||||
"dependencies": {
|
||||
"CairoSharp": "3.24.24.95",
|
||||
"GLibSharp": "3.24.24.95"
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/PangoSharp.dll": {
|
||||
"assemblyVersion": "3.24.24.95",
|
||||
"fileVersion": "3.24.24.95"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"OpenMaui.AppImage.Installer/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"AtkSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-LnSfsc0y11gfzczZj5bnpwcFkXFZuVTSSd92ML/FcHIM7FU+cAfm1UkAonv5BdwTRhzDbNDE39vihao/k75sUA==",
|
||||
"path": "atksharp/3.24.24.95",
|
||||
"hashPath": "atksharp.3.24.24.95.nupkg.sha512"
|
||||
},
|
||||
"CairoSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-EZ9KT3pwVAol35XbZW0Uwdg2LqhDvPnWdhqIrsedhDx+Omnu56hLzxh8mZGqmQvEwJE8Opbda4w9CqDtXbX6Vw==",
|
||||
"path": "cairosharp/3.24.24.95",
|
||||
"hashPath": "cairosharp.3.24.24.95.nupkg.sha512"
|
||||
},
|
||||
"GdkSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-rABpIGkxr8lOdyhEmrKXzjih3z3932kjqUmm5qaQhWVSvu9YepEk3J1FApgnKCW/EWEzlerzxnJArsyOlgMsZQ==",
|
||||
"path": "gdksharp/3.24.24.95",
|
||||
"hashPath": "gdksharp.3.24.24.95.nupkg.sha512"
|
||||
},
|
||||
"GioSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-avYEDFlYgbogb+Y7ZhIXQpyJfL83bnPpBKY642YEW9PQ+pRK3qf2k0opvd5oHccXfByj6kAQjmRUSIS0pj19Fg==",
|
||||
"path": "giosharp/3.24.24.95",
|
||||
"hashPath": "giosharp.3.24.24.95.nupkg.sha512"
|
||||
},
|
||||
"GLibSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-1viZRMVjddf2HUCW7WDXT47rHssteHkAOimXQ2/pI8oGrPGNFuuw5MbX8BOIy73hCWVqo7JEMONv3z32OrCoCQ==",
|
||||
"path": "glibsharp/3.24.24.95",
|
||||
"hashPath": "glibsharp.3.24.24.95.nupkg.sha512"
|
||||
},
|
||||
"GtkSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-RRUY45hAa5gsMcadvVjcLUzMjVtmuHSYTcIwM6j8LNgKhzFFHk69qM1D5ULfGxaWmVjicqNWiFtOtk8WsvPqaQ==",
|
||||
"path": "gtksharp/3.24.24.95",
|
||||
"hashPath": "gtksharp.3.24.24.95.nupkg.sha512"
|
||||
},
|
||||
"Microsoft.NET.ILLink.Tasks/9.0.11": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-vvB9rtDmWaXgYkViT00KORBVmA3pcYsHlgd9vOPqL9sf5bKy3rvLMF1+sI1uUfVj28S3itirHlHmX5/kcpZKNw==",
|
||||
"path": "microsoft.net.illink.tasks/9.0.11",
|
||||
"hashPath": "microsoft.net.illink.tasks.9.0.11.nupkg.sha512"
|
||||
},
|
||||
"PangoSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-H7JeyEvLsgvsbamGpRgoNtdvzPiGwwsUuoeTobN1C/JRjw1J8Snw0yf2WBr7CKx5GLwbrwpQYOb7N/HD17ME8A==",
|
||||
"path": "pangosharp/3.24.24.95",
|
||||
"hashPath": "pangosharp.3.24.24.95.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net9.0",
|
||||
"framework": {
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "9.0.0"
|
||||
},
|
||||
"configProperties": {
|
||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/PangoSharp.dll
Executable file
BIN
src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/PangoSharp.dll
Executable file
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]
|
||||
@@ -0,0 +1,22 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("OpenMaui.AppImage.Installer")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("OpenMaui.AppImage.Installer")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("OpenMaui.AppImage.Installer")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
c7f52ac9278921ebc17b73f811f98dc7b89c0f6b0f333cfc26e6206bd65bdaa5
|
||||
@@ -0,0 +1,19 @@
|
||||
is_global = true
|
||||
build_property.EnableAotAnalyzer =
|
||||
build_property.EnableSingleFileAnalyzer = true
|
||||
build_property.EnableTrimAnalyzer =
|
||||
build_property.IncludeAllContentForSelfExtract =
|
||||
build_property.TargetFramework = net9.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = OpenMaui.AppImage.Installer
|
||||
build_property.ProjectDir = /home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.EffectiveAnalysisLevelStyle = 9.0
|
||||
build_property.EnableCodeStyleSeverity =
|
||||
@@ -0,0 +1,8 @@
|
||||
// <auto-generated/>
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
877f8abf432128ccebc079b686d950569597ea4cf23a2a5c83152ddb59382ad3
|
||||
@@ -0,0 +1,23 @@
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/OpenMaui.AppImage.Installer.csproj.AssemblyReference.cache
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/OpenMaui.AppImage.Installer.GeneratedMSBuildEditorConfig.editorconfig
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/OpenMaui.AppImage.Installer.AssemblyInfoInputs.cache
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/OpenMaui.AppImage.Installer.AssemblyInfo.cs
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/OpenMaui.AppImage.Installer.csproj.CoreCompileInputs.cache
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/OpenMaui.AppImage.Installer
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/OpenMaui.AppImage.Installer.deps.json
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/OpenMaui.AppImage.Installer.runtimeconfig.json
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/OpenMaui.AppImage.Installer.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/OpenMaui.AppImage.Installer.pdb
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/AtkSharp.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/CairoSharp.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GdkSharp.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GioSharp.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GLibSharp.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/GtkSharp.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/bin/Debug/net9.0/PangoSharp.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/OpenMaui.A8D22EC6.Up2Date
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/OpenMaui.AppImage.Installer.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/refint/OpenMaui.AppImage.Installer.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/OpenMaui.AppImage.Installer.pdb
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/OpenMaui.AppImage.Installer.genruntimeconfig.cache
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/ref/OpenMaui.AppImage.Installer.dll
|
||||
Binary file not shown.
@@ -0,0 +1 @@
|
||||
d7ed09b823c80d52f357fe93bcbb418806255c523d3f08e93a685d097f656cac
|
||||
Binary file not shown.
BIN
src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/apphost
Executable file
BIN
src/OpenMaui.AppImage.Installer/obj/Debug/net9.0/apphost
Executable file
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/OpenMaui.AppImage.Installer.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/OpenMaui.AppImage.Installer.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/OpenMaui.AppImage.Installer.csproj",
|
||||
"projectName": "OpenMaui.AppImage.Installer",
|
||||
"projectPath": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/OpenMaui.AppImage.Installer.csproj",
|
||||
"packagesPath": "/home/friedel/.nuget/packages/",
|
||||
"outputPath": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"/home/friedel/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net9.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.300"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"dependencies": {
|
||||
"GtkSharp": {
|
||||
"target": "Package",
|
||||
"version": "[3.24.24.95, )"
|
||||
},
|
||||
"Microsoft.NET.ILLink.Tasks": {
|
||||
"suppressParent": "All",
|
||||
"target": "Package",
|
||||
"version": "[9.0.11, )",
|
||||
"autoReferenced": true
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/home/friedel/.dotnet/sdk/9.0.308/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/friedel/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/friedel/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/home/friedel/.nuget/packages/" />
|
||||
</ItemGroup>
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)microsoft.net.illink.tasks/9.0.11/build/Microsoft.NET.ILLink.Tasks.props" Condition="Exists('$(NuGetPackageRoot)microsoft.net.illink.tasks/9.0.11/build/Microsoft.NET.ILLink.Tasks.props')" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<PkgMicrosoft_NET_ILLink_Tasks Condition=" '$(PkgMicrosoft_NET_ILLink_Tasks)' == '' ">/home/friedel/.nuget/packages/microsoft.net.illink.tasks/9.0.11</PkgMicrosoft_NET_ILLink_Tasks>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ImportGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<Import Project="$(NuGetPackageRoot)gtksharp/3.24.24.95/build/GtkSharp.targets" Condition="Exists('$(NuGetPackageRoot)gtksharp/3.24.24.95/build/GtkSharp.targets')" />
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
328
src/OpenMaui.AppImage.Installer/obj/project.assets.json
Normal file
328
src/OpenMaui.AppImage.Installer/obj/project.assets.json
Normal file
@@ -0,0 +1,328 @@
|
||||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net9.0": {
|
||||
"AtkSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"GLibSharp": "3.24.24.95"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/AtkSharp.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/AtkSharp.dll": {}
|
||||
}
|
||||
},
|
||||
"CairoSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/CairoSharp.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/CairoSharp.dll": {}
|
||||
}
|
||||
},
|
||||
"GdkSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"CairoSharp": "3.24.24.95",
|
||||
"GLibSharp": "3.24.24.95",
|
||||
"GioSharp": "3.24.24.95",
|
||||
"PangoSharp": "3.24.24.95"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/GdkSharp.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/GdkSharp.dll": {}
|
||||
}
|
||||
},
|
||||
"GioSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"GLibSharp": "3.24.24.95"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/GioSharp.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/GioSharp.dll": {}
|
||||
}
|
||||
},
|
||||
"GLibSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/GLibSharp.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/GLibSharp.dll": {}
|
||||
}
|
||||
},
|
||||
"GtkSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"AtkSharp": "3.24.24.95",
|
||||
"CairoSharp": "3.24.24.95",
|
||||
"GLibSharp": "3.24.24.95",
|
||||
"GdkSharp": "3.24.24.95",
|
||||
"GioSharp": "3.24.24.95",
|
||||
"PangoSharp": "3.24.24.95"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/GtkSharp.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/GtkSharp.dll": {}
|
||||
},
|
||||
"build": {
|
||||
"build/GtkSharp.targets": {}
|
||||
}
|
||||
},
|
||||
"Microsoft.NET.ILLink.Tasks/9.0.11": {
|
||||
"type": "package",
|
||||
"build": {
|
||||
"build/Microsoft.NET.ILLink.Tasks.props": {}
|
||||
}
|
||||
},
|
||||
"PangoSharp/3.24.24.95": {
|
||||
"type": "package",
|
||||
"dependencies": {
|
||||
"CairoSharp": "3.24.24.95",
|
||||
"GLibSharp": "3.24.24.95"
|
||||
},
|
||||
"compile": {
|
||||
"lib/net6.0/PangoSharp.dll": {}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/PangoSharp.dll": {}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"AtkSharp/3.24.24.95": {
|
||||
"sha512": "LnSfsc0y11gfzczZj5bnpwcFkXFZuVTSSd92ML/FcHIM7FU+cAfm1UkAonv5BdwTRhzDbNDE39vihao/k75sUA==",
|
||||
"type": "package",
|
||||
"path": "atksharp/3.24.24.95",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"atksharp.3.24.24.95.nupkg.sha512",
|
||||
"atksharp.nuspec",
|
||||
"lib/net6.0/AtkSharp.dll",
|
||||
"lib/netstandard2.0/AtkSharp.dll"
|
||||
]
|
||||
},
|
||||
"CairoSharp/3.24.24.95": {
|
||||
"sha512": "EZ9KT3pwVAol35XbZW0Uwdg2LqhDvPnWdhqIrsedhDx+Omnu56hLzxh8mZGqmQvEwJE8Opbda4w9CqDtXbX6Vw==",
|
||||
"type": "package",
|
||||
"path": "cairosharp/3.24.24.95",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"cairosharp.3.24.24.95.nupkg.sha512",
|
||||
"cairosharp.nuspec",
|
||||
"lib/net6.0/CairoSharp.dll",
|
||||
"lib/netstandard2.0/CairoSharp.dll"
|
||||
]
|
||||
},
|
||||
"GdkSharp/3.24.24.95": {
|
||||
"sha512": "rABpIGkxr8lOdyhEmrKXzjih3z3932kjqUmm5qaQhWVSvu9YepEk3J1FApgnKCW/EWEzlerzxnJArsyOlgMsZQ==",
|
||||
"type": "package",
|
||||
"path": "gdksharp/3.24.24.95",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"gdksharp.3.24.24.95.nupkg.sha512",
|
||||
"gdksharp.nuspec",
|
||||
"lib/net6.0/GdkSharp.dll",
|
||||
"lib/netstandard2.0/GdkSharp.dll"
|
||||
]
|
||||
},
|
||||
"GioSharp/3.24.24.95": {
|
||||
"sha512": "avYEDFlYgbogb+Y7ZhIXQpyJfL83bnPpBKY642YEW9PQ+pRK3qf2k0opvd5oHccXfByj6kAQjmRUSIS0pj19Fg==",
|
||||
"type": "package",
|
||||
"path": "giosharp/3.24.24.95",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"giosharp.3.24.24.95.nupkg.sha512",
|
||||
"giosharp.nuspec",
|
||||
"lib/net6.0/GioSharp.dll",
|
||||
"lib/netstandard2.0/GioSharp.dll"
|
||||
]
|
||||
},
|
||||
"GLibSharp/3.24.24.95": {
|
||||
"sha512": "1viZRMVjddf2HUCW7WDXT47rHssteHkAOimXQ2/pI8oGrPGNFuuw5MbX8BOIy73hCWVqo7JEMONv3z32OrCoCQ==",
|
||||
"type": "package",
|
||||
"path": "glibsharp/3.24.24.95",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"glibsharp.3.24.24.95.nupkg.sha512",
|
||||
"glibsharp.nuspec",
|
||||
"lib/net6.0/GLibSharp.dll",
|
||||
"lib/netstandard2.0/GLibSharp.dll"
|
||||
]
|
||||
},
|
||||
"GtkSharp/3.24.24.95": {
|
||||
"sha512": "RRUY45hAa5gsMcadvVjcLUzMjVtmuHSYTcIwM6j8LNgKhzFFHk69qM1D5ULfGxaWmVjicqNWiFtOtk8WsvPqaQ==",
|
||||
"type": "package",
|
||||
"path": "gtksharp/3.24.24.95",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"build/GtkSharp.targets",
|
||||
"gtksharp.3.24.24.95.nupkg.sha512",
|
||||
"gtksharp.nuspec",
|
||||
"lib/net6.0/GtkSharp.dll",
|
||||
"lib/netstandard2.0/GtkSharp.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.NET.ILLink.Tasks/9.0.11": {
|
||||
"sha512": "vvB9rtDmWaXgYkViT00KORBVmA3pcYsHlgd9vOPqL9sf5bKy3rvLMF1+sI1uUfVj28S3itirHlHmX5/kcpZKNw==",
|
||||
"type": "package",
|
||||
"path": "microsoft.net.illink.tasks/9.0.11",
|
||||
"hasTools": true,
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"LICENSE.TXT",
|
||||
"Sdk/Sdk.props",
|
||||
"THIRD-PARTY-NOTICES.TXT",
|
||||
"analyzers/dotnet/cs/ILLink.CodeFixProvider.dll",
|
||||
"analyzers/dotnet/cs/ILLink.RoslynAnalyzer.dll",
|
||||
"build/Microsoft.NET.ILLink.Analyzers.props",
|
||||
"build/Microsoft.NET.ILLink.Tasks.props",
|
||||
"build/Microsoft.NET.ILLink.targets",
|
||||
"microsoft.net.illink.tasks.9.0.11.nupkg.sha512",
|
||||
"microsoft.net.illink.tasks.nuspec",
|
||||
"tools/net472/ILLink.Tasks.dll",
|
||||
"tools/net472/ILLink.Tasks.dll.config",
|
||||
"tools/net472/Mono.Cecil.Mdb.dll",
|
||||
"tools/net472/Mono.Cecil.Pdb.dll",
|
||||
"tools/net472/Mono.Cecil.Rocks.dll",
|
||||
"tools/net472/Mono.Cecil.dll",
|
||||
"tools/net472/Sdk/Sdk.props",
|
||||
"tools/net472/System.Buffers.dll",
|
||||
"tools/net472/System.Collections.Immutable.dll",
|
||||
"tools/net472/System.Memory.dll",
|
||||
"tools/net472/System.Numerics.Vectors.dll",
|
||||
"tools/net472/System.Reflection.Metadata.dll",
|
||||
"tools/net472/System.Runtime.CompilerServices.Unsafe.dll",
|
||||
"tools/net472/build/Microsoft.NET.ILLink.Analyzers.props",
|
||||
"tools/net472/build/Microsoft.NET.ILLink.Tasks.props",
|
||||
"tools/net472/build/Microsoft.NET.ILLink.targets",
|
||||
"tools/net9.0/ILLink.Tasks.deps.json",
|
||||
"tools/net9.0/ILLink.Tasks.dll",
|
||||
"tools/net9.0/Mono.Cecil.Mdb.dll",
|
||||
"tools/net9.0/Mono.Cecil.Pdb.dll",
|
||||
"tools/net9.0/Mono.Cecil.Rocks.dll",
|
||||
"tools/net9.0/Mono.Cecil.dll",
|
||||
"tools/net9.0/Sdk/Sdk.props",
|
||||
"tools/net9.0/build/Microsoft.NET.ILLink.Analyzers.props",
|
||||
"tools/net9.0/build/Microsoft.NET.ILLink.Tasks.props",
|
||||
"tools/net9.0/build/Microsoft.NET.ILLink.targets",
|
||||
"tools/net9.0/illink.deps.json",
|
||||
"tools/net9.0/illink.dll",
|
||||
"tools/net9.0/illink.runtimeconfig.json",
|
||||
"useSharedDesignerContext.txt"
|
||||
]
|
||||
},
|
||||
"PangoSharp/3.24.24.95": {
|
||||
"sha512": "H7JeyEvLsgvsbamGpRgoNtdvzPiGwwsUuoeTobN1C/JRjw1J8Snw0yf2WBr7CKx5GLwbrwpQYOb7N/HD17ME8A==",
|
||||
"type": "package",
|
||||
"path": "pangosharp/3.24.24.95",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"lib/net6.0/PangoSharp.dll",
|
||||
"lib/netstandard2.0/PangoSharp.dll",
|
||||
"pangosharp.3.24.24.95.nupkg.sha512",
|
||||
"pangosharp.nuspec"
|
||||
]
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net9.0": [
|
||||
"GtkSharp >= 3.24.24.95",
|
||||
"Microsoft.NET.ILLink.Tasks >= 9.0.11"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"/home/friedel/.nuget/packages/": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/OpenMaui.AppImage.Installer.csproj",
|
||||
"projectName": "OpenMaui.AppImage.Installer",
|
||||
"projectPath": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/OpenMaui.AppImage.Installer.csproj",
|
||||
"packagesPath": "/home/friedel/.nuget/packages/",
|
||||
"outputPath": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"/home/friedel/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net9.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.300"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"dependencies": {
|
||||
"GtkSharp": {
|
||||
"target": "Package",
|
||||
"version": "[3.24.24.95, )"
|
||||
},
|
||||
"Microsoft.NET.ILLink.Tasks": {
|
||||
"suppressParent": "All",
|
||||
"target": "Package",
|
||||
"version": "[9.0.11, )",
|
||||
"autoReferenced": true
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/home/friedel/.dotnet/sdk/9.0.308/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
17
src/OpenMaui.AppImage.Installer/obj/project.nuget.cache
Normal file
17
src/OpenMaui.AppImage.Installer/obj/project.nuget.cache
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "9YJjqvWj58A=",
|
||||
"success": true,
|
||||
"projectFilePath": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage.Installer/OpenMaui.AppImage.Installer.csproj",
|
||||
"expectedPackageFiles": [
|
||||
"/home/friedel/.nuget/packages/atksharp/3.24.24.95/atksharp.3.24.24.95.nupkg.sha512",
|
||||
"/home/friedel/.nuget/packages/cairosharp/3.24.24.95/cairosharp.3.24.24.95.nupkg.sha512",
|
||||
"/home/friedel/.nuget/packages/gdksharp/3.24.24.95/gdksharp.3.24.24.95.nupkg.sha512",
|
||||
"/home/friedel/.nuget/packages/giosharp/3.24.24.95/giosharp.3.24.24.95.nupkg.sha512",
|
||||
"/home/friedel/.nuget/packages/glibsharp/3.24.24.95/glibsharp.3.24.24.95.nupkg.sha512",
|
||||
"/home/friedel/.nuget/packages/gtksharp/3.24.24.95/gtksharp.3.24.24.95.nupkg.sha512",
|
||||
"/home/friedel/.nuget/packages/microsoft.net.illink.tasks/9.0.11/microsoft.net.illink.tasks.9.0.11.nupkg.sha512",
|
||||
"/home/friedel/.nuget/packages/pangosharp/3.24.24.95/pangosharp.3.24.24.95.nupkg.sha512"
|
||||
],
|
||||
"logs": []
|
||||
}
|
||||
30
src/OpenMaui.AppImage/OpenMaui.AppImage.csproj
Normal file
30
src/OpenMaui.AppImage/OpenMaui.AppImage.csproj
Normal file
@@ -0,0 +1,30 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net9.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
<!-- Tool metadata -->
|
||||
<PackAsTool>true</PackAsTool>
|
||||
<ToolCommandName>openmaui-appimage</ToolCommandName>
|
||||
<PackageId>OpenMaui.AppImage</PackageId>
|
||||
<Version>1.0.0</Version>
|
||||
<Authors>OpenMaui Contributors</Authors>
|
||||
<Description>CLI tool to package .NET MAUI Linux apps as AppImages</Description>
|
||||
<PackageProjectUrl>https://github.com/AuroraNetworks/openmaui-appimage</PackageProjectUrl>
|
||||
<PackageLicenseExpression>MIT</PackageLicenseExpression>
|
||||
<PackageTags>maui;linux;appimage;packaging</PackageTags>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="System.CommandLine" Version="2.0.0-beta4.22272.1" />
|
||||
</ItemGroup>
|
||||
|
||||
<!-- Embed templates -->
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="../../templates/**/*" LinkBase="templates" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
520
src/OpenMaui.AppImage/Program.cs
Normal file
520
src/OpenMaui.AppImage/Program.cs
Normal file
@@ -0,0 +1,520 @@
|
||||
using System.CommandLine;
|
||||
using System.Diagnostics;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
|
||||
namespace OpenMaui.AppImage;
|
||||
|
||||
class Program
|
||||
{
|
||||
static async Task<int> Main(string[] args)
|
||||
{
|
||||
var rootCommand = new RootCommand("Package .NET MAUI Linux apps as AppImages");
|
||||
|
||||
var inputOption = new Option<DirectoryInfo>(
|
||||
aliases: new[] { "--input", "-i" },
|
||||
description: "Path to the published .NET app directory")
|
||||
{ IsRequired = true };
|
||||
|
||||
var outputOption = new Option<FileInfo>(
|
||||
aliases: new[] { "--output", "-o" },
|
||||
description: "Output AppImage file path")
|
||||
{ IsRequired = true };
|
||||
|
||||
var nameOption = new Option<string>(
|
||||
aliases: new[] { "--name", "-n" },
|
||||
description: "Application name (used in .desktop file)")
|
||||
{ IsRequired = true };
|
||||
|
||||
var execOption = new Option<string>(
|
||||
aliases: new[] { "--executable", "-e" },
|
||||
description: "Name of the main executable (without extension)");
|
||||
|
||||
var iconOption = new Option<FileInfo?>(
|
||||
aliases: new[] { "--icon" },
|
||||
description: "Path to application icon (PNG or SVG)");
|
||||
|
||||
var categoryOption = new Option<string>(
|
||||
aliases: new[] { "--category", "-c" },
|
||||
() => "Utility",
|
||||
description: "Desktop category (e.g., Utility, Development, Game)");
|
||||
|
||||
var versionOption = new Option<string>(
|
||||
aliases: new[] { "--app-version" },
|
||||
() => "1.0.0",
|
||||
description: "Application version");
|
||||
|
||||
var commentOption = new Option<string>(
|
||||
aliases: new[] { "--comment" },
|
||||
description: "Application description/comment");
|
||||
|
||||
rootCommand.AddOption(inputOption);
|
||||
rootCommand.AddOption(outputOption);
|
||||
rootCommand.AddOption(nameOption);
|
||||
rootCommand.AddOption(execOption);
|
||||
rootCommand.AddOption(iconOption);
|
||||
rootCommand.AddOption(categoryOption);
|
||||
rootCommand.AddOption(versionOption);
|
||||
rootCommand.AddOption(commentOption);
|
||||
|
||||
rootCommand.SetHandler(async (context) =>
|
||||
{
|
||||
var input = context.ParseResult.GetValueForOption(inputOption)!;
|
||||
var output = context.ParseResult.GetValueForOption(outputOption)!;
|
||||
var name = context.ParseResult.GetValueForOption(nameOption)!;
|
||||
var exec = context.ParseResult.GetValueForOption(execOption);
|
||||
var icon = context.ParseResult.GetValueForOption(iconOption);
|
||||
var category = context.ParseResult.GetValueForOption(categoryOption)!;
|
||||
var version = context.ParseResult.GetValueForOption(versionOption)!;
|
||||
var comment = context.ParseResult.GetValueForOption(commentOption);
|
||||
|
||||
var builder = new AppImageBuilder();
|
||||
var result = await builder.BuildAsync(new AppImageOptions
|
||||
{
|
||||
InputDirectory = input,
|
||||
OutputFile = output,
|
||||
AppName = name,
|
||||
ExecutableName = exec,
|
||||
IconPath = icon,
|
||||
Category = category,
|
||||
Version = version,
|
||||
Comment = comment ?? $"{name} - Built with OpenMaui"
|
||||
});
|
||||
|
||||
context.ExitCode = result ? 0 : 1;
|
||||
});
|
||||
|
||||
return await rootCommand.InvokeAsync(args);
|
||||
}
|
||||
}
|
||||
|
||||
public class AppImageOptions
|
||||
{
|
||||
public required DirectoryInfo InputDirectory { get; init; }
|
||||
public required FileInfo OutputFile { get; init; }
|
||||
public required string AppName { get; init; }
|
||||
public string? ExecutableName { get; init; }
|
||||
public FileInfo? IconPath { get; init; }
|
||||
public required string Category { get; init; }
|
||||
public required string Version { get; init; }
|
||||
public required string Comment { get; init; }
|
||||
}
|
||||
|
||||
public class AppImageBuilder
|
||||
{
|
||||
public async Task<bool> BuildAsync(AppImageOptions options)
|
||||
{
|
||||
Console.WriteLine($"Building AppImage for {options.AppName}...");
|
||||
Console.WriteLine($" Input: {options.InputDirectory.FullName}");
|
||||
Console.WriteLine($" Output: {options.OutputFile.FullName}");
|
||||
|
||||
// Validate input directory
|
||||
if (!options.InputDirectory.Exists)
|
||||
{
|
||||
Console.Error.WriteLine($"Error: Input directory does not exist: {options.InputDirectory.FullName}");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Find the main executable
|
||||
var execName = options.ExecutableName ?? options.AppName;
|
||||
var mainExec = Path.Combine(options.InputDirectory.FullName, execName);
|
||||
if (!File.Exists(mainExec))
|
||||
{
|
||||
// Try with common variations
|
||||
var candidates = new[]
|
||||
{
|
||||
mainExec,
|
||||
mainExec + ".dll",
|
||||
Path.Combine(options.InputDirectory.FullName, execName.Replace(" ", "")),
|
||||
Path.Combine(options.InputDirectory.FullName, execName.Replace(" ", "") + ".dll")
|
||||
};
|
||||
|
||||
mainExec = candidates.FirstOrDefault(File.Exists) ?? "";
|
||||
if (string.IsNullOrEmpty(mainExec))
|
||||
{
|
||||
// List available executables
|
||||
var dlls = Directory.GetFiles(options.InputDirectory.FullName, "*.dll")
|
||||
.Select(Path.GetFileNameWithoutExtension)
|
||||
.Take(10)
|
||||
.ToList();
|
||||
|
||||
Console.Error.WriteLine($"Error: Could not find executable '{execName}' in {options.InputDirectory.FullName}");
|
||||
Console.Error.WriteLine($"Available DLLs: {string.Join(", ", dlls)}");
|
||||
Console.Error.WriteLine("Use --executable to specify the correct name.");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Create temporary AppDir structure
|
||||
var tempDir = Path.Combine(Path.GetTempPath(), $"appimage-{Guid.NewGuid():N}");
|
||||
var appDir = Path.Combine(tempDir, $"{options.AppName}.AppDir");
|
||||
|
||||
try
|
||||
{
|
||||
Directory.CreateDirectory(appDir);
|
||||
Console.WriteLine($" Creating AppDir at: {appDir}");
|
||||
|
||||
// Copy application files
|
||||
Console.WriteLine(" Copying application files...");
|
||||
CopyDirectory(options.InputDirectory.FullName, Path.Combine(appDir, "usr", "bin"));
|
||||
|
||||
// Copy installer if available
|
||||
Console.WriteLine(" Copying installer...");
|
||||
await CopyInstaller(Path.Combine(appDir, "usr", "bin"));
|
||||
|
||||
// Create AppRun script
|
||||
Console.WriteLine(" Creating AppRun script...");
|
||||
var appRunPath = Path.Combine(appDir, "AppRun");
|
||||
await CreateAppRunScript(appRunPath, options);
|
||||
|
||||
// Create .desktop file
|
||||
Console.WriteLine(" Creating .desktop file...");
|
||||
var desktopPath = Path.Combine(appDir, $"{SanitizeFileName(options.AppName)}.desktop");
|
||||
await CreateDesktopFile(desktopPath, options);
|
||||
|
||||
// Copy or create icon
|
||||
Console.WriteLine(" Setting up icon...");
|
||||
await SetupIcon(appDir, options);
|
||||
|
||||
// Create the AppImage using appimagetool
|
||||
Console.WriteLine(" Creating AppImage...");
|
||||
var success = await CreateAppImage(appDir, options.OutputFile.FullName);
|
||||
|
||||
if (success)
|
||||
{
|
||||
Console.WriteLine();
|
||||
Console.WriteLine($"AppImage created successfully: {options.OutputFile.FullName}");
|
||||
Console.WriteLine();
|
||||
Console.WriteLine("To run:");
|
||||
Console.WriteLine($" chmod +x {options.OutputFile.Name}");
|
||||
Console.WriteLine($" ./{options.OutputFile.Name}");
|
||||
}
|
||||
|
||||
return success;
|
||||
}
|
||||
finally
|
||||
{
|
||||
// Cleanup temp directory
|
||||
try
|
||||
{
|
||||
if (Directory.Exists(tempDir))
|
||||
Directory.Delete(tempDir, recursive: true);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
|
||||
private async Task CopyInstaller(string destDir)
|
||||
{
|
||||
// Find installer in the same directory as the tool
|
||||
var toolDir = Path.GetDirectoryName(typeof(AppImageBuilder).Assembly.Location) ?? "";
|
||||
var installerDll = Path.Combine(toolDir, "..", "..", "..", "..", "OpenMaui.AppImage.Installer", "bin", "Debug", "net9.0");
|
||||
|
||||
// Also check published location
|
||||
if (!Directory.Exists(installerDll))
|
||||
{
|
||||
installerDll = Path.Combine(toolDir, "installer");
|
||||
}
|
||||
|
||||
// Also check relative to current directory
|
||||
if (!Directory.Exists(installerDll))
|
||||
{
|
||||
var currentDir = Directory.GetCurrentDirectory();
|
||||
installerDll = Path.Combine(currentDir, "src", "OpenMaui.AppImage.Installer", "bin", "Debug", "net9.0");
|
||||
}
|
||||
|
||||
if (Directory.Exists(installerDll))
|
||||
{
|
||||
var installerFiles = new[] { "OpenMaui.AppImage.Installer.dll", "OpenMaui.AppImage.Installer.deps.json", "OpenMaui.AppImage.Installer.runtimeconfig.json" };
|
||||
foreach (var file in installerFiles)
|
||||
{
|
||||
var srcPath = Path.Combine(installerDll, file);
|
||||
if (File.Exists(srcPath))
|
||||
{
|
||||
File.Copy(srcPath, Path.Combine(destDir, file), overwrite: true);
|
||||
}
|
||||
}
|
||||
Console.WriteLine(" Installer included for first-run dialog.");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine(" Installer not found, skipping first-run dialog.");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task CreateAppRunScript(string path, AppImageOptions options)
|
||||
{
|
||||
var execName = options.ExecutableName ?? options.AppName;
|
||||
var script = $@"#!/bin/bash
|
||||
# AppRun script for OpenMaui applications
|
||||
|
||||
SELF=$(readlink -f ""$0"")
|
||||
HERE=${{SELF%/*}}
|
||||
|
||||
# App metadata
|
||||
export APPIMAGE_NAME=""{options.AppName}""
|
||||
export APPIMAGE_COMMENT=""{options.Comment}""
|
||||
export APPIMAGE_CATEGORY=""{options.Category}""
|
||||
export APPIMAGE_VERSION=""{options.Version}""
|
||||
EXEC_NAME=""{execName}""
|
||||
|
||||
export PATH=""$HERE/usr/bin:$PATH""
|
||||
export LD_LIBRARY_PATH=""$HERE/usr/bin:$LD_LIBRARY_PATH""
|
||||
export XDG_DATA_DIRS=""$HERE/usr/share:${{XDG_DATA_DIRS:-/usr/local/share:/usr/share}}""
|
||||
|
||||
INSTALLED_MARKER=""$HOME/.local/share/openmaui-installed""
|
||||
|
||||
# Handle command line flags
|
||||
if [ ""$1"" = ""--install"" ]; then
|
||||
SHOW_INSTALLER=1
|
||||
shift
|
||||
elif [ ""$1"" = ""--uninstall"" ]; then
|
||||
echo ""Uninstalling $APPIMAGE_NAME...""
|
||||
APPIMAGE_BASENAME=$(basename ""$APPIMAGE"")
|
||||
SANITIZED_NAME=$(echo ""$APPIMAGE_NAME"" | tr ' ' '_')
|
||||
rm -f ""$HOME/.local/bin/$APPIMAGE_BASENAME""
|
||||
rm -f ""$HOME/.local/share/applications/${{SANITIZED_NAME}}.desktop""
|
||||
rm -f ""$INSTALLED_MARKER/$APPIMAGE_BASENAME""
|
||||
command -v update-desktop-database &> /dev/null && update-desktop-database ""$HOME/.local/share/applications"" 2>/dev/null
|
||||
echo ""Uninstallation complete!""
|
||||
exit 0
|
||||
elif [ ""$1"" = ""--help"" ]; then
|
||||
echo ""Usage: $(basename ""$APPIMAGE"") [OPTIONS]""
|
||||
echo """"
|
||||
echo ""Options:""
|
||||
echo "" --install Show the installation dialog""
|
||||
echo "" --uninstall Remove the application""
|
||||
echo "" --help Show this help message""
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check for first run
|
||||
if [ -n ""$APPIMAGE"" ]; then
|
||||
APPIMAGE_BASENAME=$(basename ""$APPIMAGE"")
|
||||
if [ ! -f ""$INSTALLED_MARKER/$APPIMAGE_BASENAME"" ] || [ ""$SHOW_INSTALLER"" = ""1"" ]; then
|
||||
if [ -f ""$HERE/usr/bin/OpenMaui.AppImage.Installer.dll"" ]; then
|
||||
SANITIZED=$(echo ""$APPIMAGE_NAME"" | tr ' ' '_')
|
||||
ICON_PATH=""""
|
||||
for ext in svg png ico; do
|
||||
[ -f ""$HERE/${{SANITIZED}}.${{ext}}"" ] && ICON_PATH=""$HERE/${{SANITIZED}}.${{ext}}"" && break
|
||||
done
|
||||
cd ""$HERE/usr/bin""
|
||||
dotnet OpenMaui.AppImage.Installer.dll --name ""$APPIMAGE_NAME"" --appimage ""$APPIMAGE"" --comment ""$APPIMAGE_COMMENT"" --category ""$APPIMAGE_CATEGORY"" --version ""$APPIMAGE_VERSION"" ${{ICON_PATH:+--icon ""$ICON_PATH""}}
|
||||
RESULT=$?
|
||||
[ ""$RESULT"" = ""1"" ] && exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
cd ""$HERE/usr/bin""
|
||||
exec dotnet ""$EXEC_NAME.dll"" ""$@""
|
||||
";
|
||||
await File.WriteAllTextAsync(path, script);
|
||||
await RunCommandAsync("chmod", $"+x \"{path}\"");
|
||||
}
|
||||
|
||||
private async Task CreateDesktopFile(string path, AppImageOptions options)
|
||||
{
|
||||
var desktop = $@"[Desktop Entry]
|
||||
Type=Application
|
||||
Name={options.AppName}
|
||||
Comment={options.Comment}
|
||||
Exec={SanitizeFileName(options.AppName)}
|
||||
Icon={SanitizeFileName(options.AppName)}
|
||||
Categories={options.Category};
|
||||
Terminal=false
|
||||
X-AppImage-Version={options.Version}
|
||||
";
|
||||
await File.WriteAllTextAsync(path, desktop);
|
||||
}
|
||||
|
||||
private async Task SetupIcon(string appDir, AppImageOptions options)
|
||||
{
|
||||
var iconName = SanitizeFileName(options.AppName);
|
||||
|
||||
if (options.IconPath != null && options.IconPath.Exists)
|
||||
{
|
||||
// Copy provided icon
|
||||
var ext = options.IconPath.Extension.ToLowerInvariant();
|
||||
var destIcon = Path.Combine(appDir, $"{iconName}{ext}");
|
||||
File.Copy(options.IconPath.FullName, destIcon);
|
||||
|
||||
// Also copy to standard locations
|
||||
var iconDirs = new[]
|
||||
{
|
||||
Path.Combine(appDir, "usr", "share", "icons", "hicolor", "256x256", "apps"),
|
||||
Path.Combine(appDir, "usr", "share", "icons", "hicolor", "scalable", "apps")
|
||||
};
|
||||
|
||||
foreach (var dir in iconDirs)
|
||||
{
|
||||
Directory.CreateDirectory(dir);
|
||||
var iconPath = Path.Combine(dir, $"{iconName}{ext}");
|
||||
if (!File.Exists(iconPath))
|
||||
File.Copy(options.IconPath.FullName, iconPath);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Create a simple default icon (placeholder SVG)
|
||||
var defaultIcon = $@"<?xml version=""1.0"" encoding=""UTF-8""?>
|
||||
<svg width=""256"" height=""256"" viewBox=""0 0 256 256"" xmlns=""http://www.w3.org/2000/svg"">
|
||||
<rect width=""256"" height=""256"" rx=""32"" fill=""#2196F3""/>
|
||||
<text x=""128"" y=""160"" font-family=""sans-serif"" font-size=""120"" font-weight=""bold""
|
||||
text-anchor=""middle"" fill=""white"">{options.AppName[0]}</text>
|
||||
</svg>";
|
||||
|
||||
var iconPath = Path.Combine(appDir, $"{iconName}.svg");
|
||||
await File.WriteAllTextAsync(iconPath, defaultIcon);
|
||||
|
||||
// Also create in standard location
|
||||
var svgDir = Path.Combine(appDir, "usr", "share", "icons", "hicolor", "scalable", "apps");
|
||||
Directory.CreateDirectory(svgDir);
|
||||
await File.WriteAllTextAsync(Path.Combine(svgDir, $"{iconName}.svg"), defaultIcon);
|
||||
}
|
||||
}
|
||||
|
||||
private async Task<bool> CreateAppImage(string appDir, string outputPath)
|
||||
{
|
||||
// Ensure output directory exists
|
||||
var outputDir = Path.GetDirectoryName(outputPath);
|
||||
if (!string.IsNullOrEmpty(outputDir) && !Directory.Exists(outputDir))
|
||||
Directory.CreateDirectory(outputDir);
|
||||
|
||||
// Check if appimagetool is available
|
||||
var appImageTool = await FindAppImageTool();
|
||||
if (appImageTool == null)
|
||||
{
|
||||
Console.Error.WriteLine();
|
||||
Console.Error.WriteLine("Error: appimagetool not found.");
|
||||
Console.Error.WriteLine();
|
||||
Console.Error.WriteLine("Please install appimagetool:");
|
||||
Console.Error.WriteLine(" wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage");
|
||||
Console.Error.WriteLine(" chmod +x appimagetool-x86_64.AppImage");
|
||||
Console.Error.WriteLine(" sudo mv appimagetool-x86_64.AppImage /usr/local/bin/appimagetool");
|
||||
Console.Error.WriteLine();
|
||||
Console.Error.WriteLine("Or install via package manager:");
|
||||
Console.Error.WriteLine(" Ubuntu/Debian: sudo apt install appimagetool");
|
||||
Console.Error.WriteLine(" Fedora: sudo dnf install appimagetool");
|
||||
Console.Error.WriteLine(" Arch: yay -S appimagetool-bin");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Set ARCH environment variable
|
||||
var arch = Environment.GetEnvironmentVariable("ARCH") ?? "x86_64";
|
||||
|
||||
var result = await RunCommandAsync(appImageTool, $"\"{appDir}\" \"{outputPath}\"",
|
||||
new Dictionary<string, string> { ["ARCH"] = arch });
|
||||
|
||||
if (result == 0)
|
||||
{
|
||||
// Make the AppImage executable
|
||||
await RunCommandAsync("chmod", $"+x \"{outputPath}\"");
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private async Task<string?> FindAppImageTool()
|
||||
{
|
||||
var candidates = new[]
|
||||
{
|
||||
"appimagetool",
|
||||
"/usr/local/bin/appimagetool",
|
||||
"/usr/bin/appimagetool",
|
||||
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "bin", "appimagetool"),
|
||||
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), ".local", "bin", "appimagetool"),
|
||||
};
|
||||
|
||||
foreach (var candidate in candidates)
|
||||
{
|
||||
var result = await RunCommandAsync("which", candidate, captureOutput: true);
|
||||
if (result == 0)
|
||||
return candidate;
|
||||
|
||||
if (File.Exists(candidate))
|
||||
return candidate;
|
||||
}
|
||||
|
||||
// Try to find any appimagetool AppImage
|
||||
var homeDir = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
|
||||
var searchDirs = new[] { homeDir, "/usr/local/bin", "/opt" };
|
||||
|
||||
foreach (var dir in searchDirs)
|
||||
{
|
||||
if (Directory.Exists(dir))
|
||||
{
|
||||
var tools = Directory.GetFiles(dir, "appimagetool*", SearchOption.TopDirectoryOnly);
|
||||
if (tools.Length > 0)
|
||||
return tools[0];
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void CopyDirectory(string source, string destination)
|
||||
{
|
||||
Directory.CreateDirectory(destination);
|
||||
|
||||
foreach (var file in Directory.GetFiles(source))
|
||||
{
|
||||
var destFile = Path.Combine(destination, Path.GetFileName(file));
|
||||
File.Copy(file, destFile, overwrite: true);
|
||||
}
|
||||
|
||||
foreach (var dir in Directory.GetDirectories(source))
|
||||
{
|
||||
var destDir = Path.Combine(destination, Path.GetFileName(dir));
|
||||
CopyDirectory(dir, destDir);
|
||||
}
|
||||
}
|
||||
|
||||
private string SanitizeFileName(string name)
|
||||
{
|
||||
var invalid = Path.GetInvalidFileNameChars();
|
||||
var sanitized = new StringBuilder();
|
||||
foreach (var c in name)
|
||||
{
|
||||
if (invalid.Contains(c) || c == ' ')
|
||||
sanitized.Append('_');
|
||||
else
|
||||
sanitized.Append(c);
|
||||
}
|
||||
return sanitized.ToString();
|
||||
}
|
||||
|
||||
private async Task<int> RunCommandAsync(string command, string arguments,
|
||||
Dictionary<string, string>? envVars = null, bool captureOutput = false)
|
||||
{
|
||||
try
|
||||
{
|
||||
var psi = new ProcessStartInfo
|
||||
{
|
||||
FileName = command,
|
||||
Arguments = arguments,
|
||||
UseShellExecute = false,
|
||||
RedirectStandardOutput = captureOutput,
|
||||
RedirectStandardError = captureOutput,
|
||||
CreateNoWindow = true
|
||||
};
|
||||
|
||||
if (envVars != null)
|
||||
{
|
||||
foreach (var (key, value) in envVars)
|
||||
psi.EnvironmentVariables[key] = value;
|
||||
}
|
||||
|
||||
using var process = Process.Start(psi);
|
||||
if (process == null) return -1;
|
||||
|
||||
await process.WaitForExitAsync();
|
||||
return process.ExitCode;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage
Executable file
Binary file not shown.
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"runtimeTarget": {
|
||||
"name": ".NETCoreApp,Version=v9.0",
|
||||
"signature": ""
|
||||
},
|
||||
"compilationOptions": {},
|
||||
"targets": {
|
||||
".NETCoreApp,Version=v9.0": {
|
||||
"OpenMaui.AppImage/1.0.0": {
|
||||
"dependencies": {
|
||||
"System.CommandLine": "2.0.0-beta4.22272.1"
|
||||
},
|
||||
"runtime": {
|
||||
"OpenMaui.AppImage.dll": {}
|
||||
}
|
||||
},
|
||||
"System.CommandLine/2.0.0-beta4.22272.1": {
|
||||
"runtime": {
|
||||
"lib/net6.0/System.CommandLine.dll": {
|
||||
"assemblyVersion": "2.0.0.0",
|
||||
"fileVersion": "2.0.22.27201"
|
||||
}
|
||||
},
|
||||
"resources": {
|
||||
"lib/net6.0/cs/System.CommandLine.resources.dll": {
|
||||
"locale": "cs"
|
||||
},
|
||||
"lib/net6.0/de/System.CommandLine.resources.dll": {
|
||||
"locale": "de"
|
||||
},
|
||||
"lib/net6.0/es/System.CommandLine.resources.dll": {
|
||||
"locale": "es"
|
||||
},
|
||||
"lib/net6.0/fr/System.CommandLine.resources.dll": {
|
||||
"locale": "fr"
|
||||
},
|
||||
"lib/net6.0/it/System.CommandLine.resources.dll": {
|
||||
"locale": "it"
|
||||
},
|
||||
"lib/net6.0/ja/System.CommandLine.resources.dll": {
|
||||
"locale": "ja"
|
||||
},
|
||||
"lib/net6.0/ko/System.CommandLine.resources.dll": {
|
||||
"locale": "ko"
|
||||
},
|
||||
"lib/net6.0/pl/System.CommandLine.resources.dll": {
|
||||
"locale": "pl"
|
||||
},
|
||||
"lib/net6.0/pt-BR/System.CommandLine.resources.dll": {
|
||||
"locale": "pt-BR"
|
||||
},
|
||||
"lib/net6.0/ru/System.CommandLine.resources.dll": {
|
||||
"locale": "ru"
|
||||
},
|
||||
"lib/net6.0/tr/System.CommandLine.resources.dll": {
|
||||
"locale": "tr"
|
||||
},
|
||||
"lib/net6.0/zh-Hans/System.CommandLine.resources.dll": {
|
||||
"locale": "zh-Hans"
|
||||
},
|
||||
"lib/net6.0/zh-Hant/System.CommandLine.resources.dll": {
|
||||
"locale": "zh-Hant"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"OpenMaui.AppImage/1.0.0": {
|
||||
"type": "project",
|
||||
"serviceable": false,
|
||||
"sha512": ""
|
||||
},
|
||||
"System.CommandLine/2.0.0-beta4.22272.1": {
|
||||
"type": "package",
|
||||
"serviceable": true,
|
||||
"sha512": "sha512-1uqED/q2H0kKoLJ4+hI2iPSBSEdTuhfCYADeJrAqERmiGQ2NNacYKRNEQ+gFbU4glgVyK8rxI+ZOe1onEtr/Pg==",
|
||||
"path": "system.commandline/2.0.0-beta4.22272.1",
|
||||
"hashPath": "system.commandline.2.0.0-beta4.22272.1.nupkg.sha512"
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage.dll
Normal file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage.dll
Normal file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage.pdb
Normal file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage.pdb
Normal file
Binary file not shown.
@@ -0,0 +1,12 @@
|
||||
{
|
||||
"runtimeOptions": {
|
||||
"tfm": "net9.0",
|
||||
"framework": {
|
||||
"name": "Microsoft.NETCore.App",
|
||||
"version": "9.0.0"
|
||||
},
|
||||
"configProperties": {
|
||||
"System.Runtime.Serialization.EnableUnsafeBinaryFormatterSerialization": false
|
||||
}
|
||||
}
|
||||
}
|
||||
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/System.CommandLine.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/System.CommandLine.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/cs/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/cs/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/de/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/de/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/es/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/es/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/fr/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/fr/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/it/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/it/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/ja/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/ja/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/ko/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/ko/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/pl/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/pl/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/pt-BR/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/pt-BR/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/ru/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/ru/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/tr/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/tr/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/zh-Hans/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/zh-Hans/System.CommandLine.resources.dll
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/zh-Hant/System.CommandLine.resources.dll
Executable file
BIN
src/OpenMaui.AppImage/bin/Debug/net9.0/zh-Hant/System.CommandLine.resources.dll
Executable file
Binary file not shown.
@@ -0,0 +1,4 @@
|
||||
// <autogenerated />
|
||||
using System;
|
||||
using System.Reflection;
|
||||
[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]
|
||||
@@ -0,0 +1,23 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
using System;
|
||||
using System.Reflection;
|
||||
|
||||
[assembly: System.Reflection.AssemblyCompanyAttribute("OpenMaui Contributors")]
|
||||
[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
|
||||
[assembly: System.Reflection.AssemblyDescriptionAttribute("CLI tool to package .NET MAUI Linux apps as AppImages")]
|
||||
[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
|
||||
[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0")]
|
||||
[assembly: System.Reflection.AssemblyProductAttribute("OpenMaui.AppImage")]
|
||||
[assembly: System.Reflection.AssemblyTitleAttribute("OpenMaui.AppImage")]
|
||||
[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
|
||||
|
||||
// Generated by the MSBuild WriteCodeFragment class.
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
bf99d2ffe27c9c790485e51419e712a4b2df073b18f432dfe5131e090c6513a2
|
||||
@@ -0,0 +1,15 @@
|
||||
is_global = true
|
||||
build_property.TargetFramework = net9.0
|
||||
build_property.TargetPlatformMinVersion =
|
||||
build_property.UsingMicrosoftNETSdkWeb =
|
||||
build_property.ProjectTypeGuids =
|
||||
build_property.InvariantGlobalization =
|
||||
build_property.PlatformNeutralAssembly =
|
||||
build_property.EnforceExtendedAnalyzerRules =
|
||||
build_property._SupportedPlatformList = Linux,macOS,Windows
|
||||
build_property.RootNamespace = OpenMaui.AppImage
|
||||
build_property.ProjectDir = /home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/
|
||||
build_property.EnableComHosting =
|
||||
build_property.EnableGeneratedComInterfaceComImportInterop =
|
||||
build_property.EffectiveAnalysisLevelStyle = 9.0
|
||||
build_property.EnableCodeStyleSeverity =
|
||||
@@ -0,0 +1,8 @@
|
||||
// <auto-generated/>
|
||||
global using global::System;
|
||||
global using global::System.Collections.Generic;
|
||||
global using global::System.IO;
|
||||
global using global::System.Linq;
|
||||
global using global::System.Net.Http;
|
||||
global using global::System.Threading;
|
||||
global using global::System.Threading.Tasks;
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1 @@
|
||||
6d12895822d98ab28330aa4307b387e8f3fac85baa39fa7b678f5ca4cfe0033a
|
||||
@@ -0,0 +1,30 @@
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage.deps.json
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage.runtimeconfig.json
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/OpenMaui.AppImage.pdb
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/System.CommandLine.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/cs/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/de/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/es/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/fr/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/it/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/ja/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/ko/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/pl/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/pt-BR/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/ru/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/tr/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/zh-Hans/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/bin/Debug/net9.0/zh-Hant/System.CommandLine.resources.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.csproj.AssemblyReference.cache
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.GeneratedMSBuildEditorConfig.editorconfig
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.AssemblyInfoInputs.cache
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.AssemblyInfo.cs
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.csproj.CoreCompileInputs.cache
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.46D7F9ED.Up2Date
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/refint/OpenMaui.AppImage.dll
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.pdb
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.genruntimeconfig.cache
|
||||
/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/Debug/net9.0/ref/OpenMaui.AppImage.dll
|
||||
BIN
src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.dll
Normal file
BIN
src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.dll
Normal file
Binary file not shown.
@@ -0,0 +1 @@
|
||||
15ca7a5b1f6bd3fdd96439b1498278d65b31949e1b1b994dda2f40fff992f573
|
||||
BIN
src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.pdb
Normal file
BIN
src/OpenMaui.AppImage/obj/Debug/net9.0/OpenMaui.AppImage.pdb
Normal file
Binary file not shown.
BIN
src/OpenMaui.AppImage/obj/Debug/net9.0/apphost
Executable file
BIN
src/OpenMaui.AppImage/obj/Debug/net9.0/apphost
Executable file
Binary file not shown.
BIN
src/OpenMaui.AppImage/obj/Debug/net9.0/ref/OpenMaui.AppImage.dll
Normal file
BIN
src/OpenMaui.AppImage/obj/Debug/net9.0/ref/OpenMaui.AppImage.dll
Normal file
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"format": 1,
|
||||
"restore": {
|
||||
"/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/OpenMaui.AppImage.csproj": {}
|
||||
},
|
||||
"projects": {
|
||||
"/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/OpenMaui.AppImage.csproj": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/OpenMaui.AppImage.csproj",
|
||||
"projectName": "OpenMaui.AppImage",
|
||||
"projectPath": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/OpenMaui.AppImage.csproj",
|
||||
"packagesPath": "/home/friedel/.nuget/packages/",
|
||||
"outputPath": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"/home/friedel/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net9.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.300"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"dependencies": {
|
||||
"System.CommandLine": {
|
||||
"target": "Package",
|
||||
"version": "[2.0.0-beta4.22272.1, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/home/friedel/.dotnet/sdk/9.0.308/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<RestoreSuccess Condition=" '$(RestoreSuccess)' == '' ">True</RestoreSuccess>
|
||||
<RestoreTool Condition=" '$(RestoreTool)' == '' ">NuGet</RestoreTool>
|
||||
<ProjectAssetsFile Condition=" '$(ProjectAssetsFile)' == '' ">$(MSBuildThisFileDirectory)project.assets.json</ProjectAssetsFile>
|
||||
<NuGetPackageRoot Condition=" '$(NuGetPackageRoot)' == '' ">/home/friedel/.nuget/packages/</NuGetPackageRoot>
|
||||
<NuGetPackageFolders Condition=" '$(NuGetPackageFolders)' == '' ">/home/friedel/.nuget/packages/</NuGetPackageFolders>
|
||||
<NuGetProjectStyle Condition=" '$(NuGetProjectStyle)' == '' ">PackageReference</NuGetProjectStyle>
|
||||
<NuGetToolVersion Condition=" '$(NuGetToolVersion)' == '' ">6.14.0</NuGetToolVersion>
|
||||
</PropertyGroup>
|
||||
<ItemGroup Condition=" '$(ExcludeRestorePackageImports)' != 'true' ">
|
||||
<SourceRoot Include="/home/friedel/.nuget/packages/" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,2 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" />
|
||||
180
src/OpenMaui.AppImage/obj/project.assets.json
Normal file
180
src/OpenMaui.AppImage/obj/project.assets.json
Normal file
@@ -0,0 +1,180 @@
|
||||
{
|
||||
"version": 3,
|
||||
"targets": {
|
||||
"net9.0": {
|
||||
"System.CommandLine/2.0.0-beta4.22272.1": {
|
||||
"type": "package",
|
||||
"compile": {
|
||||
"lib/net6.0/System.CommandLine.dll": {
|
||||
"related": ".pdb;.xml"
|
||||
}
|
||||
},
|
||||
"runtime": {
|
||||
"lib/net6.0/System.CommandLine.dll": {
|
||||
"related": ".pdb;.xml"
|
||||
}
|
||||
},
|
||||
"resource": {
|
||||
"lib/net6.0/cs/System.CommandLine.resources.dll": {
|
||||
"locale": "cs"
|
||||
},
|
||||
"lib/net6.0/de/System.CommandLine.resources.dll": {
|
||||
"locale": "de"
|
||||
},
|
||||
"lib/net6.0/es/System.CommandLine.resources.dll": {
|
||||
"locale": "es"
|
||||
},
|
||||
"lib/net6.0/fr/System.CommandLine.resources.dll": {
|
||||
"locale": "fr"
|
||||
},
|
||||
"lib/net6.0/it/System.CommandLine.resources.dll": {
|
||||
"locale": "it"
|
||||
},
|
||||
"lib/net6.0/ja/System.CommandLine.resources.dll": {
|
||||
"locale": "ja"
|
||||
},
|
||||
"lib/net6.0/ko/System.CommandLine.resources.dll": {
|
||||
"locale": "ko"
|
||||
},
|
||||
"lib/net6.0/pl/System.CommandLine.resources.dll": {
|
||||
"locale": "pl"
|
||||
},
|
||||
"lib/net6.0/pt-BR/System.CommandLine.resources.dll": {
|
||||
"locale": "pt-BR"
|
||||
},
|
||||
"lib/net6.0/ru/System.CommandLine.resources.dll": {
|
||||
"locale": "ru"
|
||||
},
|
||||
"lib/net6.0/tr/System.CommandLine.resources.dll": {
|
||||
"locale": "tr"
|
||||
},
|
||||
"lib/net6.0/zh-Hans/System.CommandLine.resources.dll": {
|
||||
"locale": "zh-Hans"
|
||||
},
|
||||
"lib/net6.0/zh-Hant/System.CommandLine.resources.dll": {
|
||||
"locale": "zh-Hant"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"libraries": {
|
||||
"System.CommandLine/2.0.0-beta4.22272.1": {
|
||||
"sha512": "1uqED/q2H0kKoLJ4+hI2iPSBSEdTuhfCYADeJrAqERmiGQ2NNacYKRNEQ+gFbU4glgVyK8rxI+ZOe1onEtr/Pg==",
|
||||
"type": "package",
|
||||
"path": "system.commandline/2.0.0-beta4.22272.1",
|
||||
"files": [
|
||||
".nupkg.metadata",
|
||||
".signature.p7s",
|
||||
"Icon.png",
|
||||
"lib/net6.0/System.CommandLine.dll",
|
||||
"lib/net6.0/System.CommandLine.pdb",
|
||||
"lib/net6.0/System.CommandLine.xml",
|
||||
"lib/net6.0/cs/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/de/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/es/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/fr/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/it/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/ja/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/ko/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/pl/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/pt-BR/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/ru/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/tr/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/zh-Hans/System.CommandLine.resources.dll",
|
||||
"lib/net6.0/zh-Hant/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/System.CommandLine.dll",
|
||||
"lib/netstandard2.0/System.CommandLine.pdb",
|
||||
"lib/netstandard2.0/System.CommandLine.xml",
|
||||
"lib/netstandard2.0/cs/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/de/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/es/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/fr/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/it/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/ja/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/ko/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/pl/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/pt-BR/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/ru/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/tr/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/zh-Hans/System.CommandLine.resources.dll",
|
||||
"lib/netstandard2.0/zh-Hant/System.CommandLine.resources.dll",
|
||||
"system.commandline.2.0.0-beta4.22272.1.nupkg.sha512",
|
||||
"system.commandline.nuspec"
|
||||
]
|
||||
}
|
||||
},
|
||||
"projectFileDependencyGroups": {
|
||||
"net9.0": [
|
||||
"System.CommandLine >= 2.0.0-beta4.22272.1"
|
||||
]
|
||||
},
|
||||
"packageFolders": {
|
||||
"/home/friedel/.nuget/packages/": {}
|
||||
},
|
||||
"project": {
|
||||
"version": "1.0.0",
|
||||
"restore": {
|
||||
"projectUniqueName": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/OpenMaui.AppImage.csproj",
|
||||
"projectName": "OpenMaui.AppImage",
|
||||
"projectPath": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/OpenMaui.AppImage.csproj",
|
||||
"packagesPath": "/home/friedel/.nuget/packages/",
|
||||
"outputPath": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/obj/",
|
||||
"projectStyle": "PackageReference",
|
||||
"configFilePaths": [
|
||||
"/home/friedel/.nuget/NuGet/NuGet.Config"
|
||||
],
|
||||
"originalTargetFrameworks": [
|
||||
"net9.0"
|
||||
],
|
||||
"sources": {
|
||||
"https://api.nuget.org/v3/index.json": {}
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"projectReferences": {}
|
||||
}
|
||||
},
|
||||
"warningProperties": {
|
||||
"warnAsError": [
|
||||
"NU1605"
|
||||
]
|
||||
},
|
||||
"restoreAuditProperties": {
|
||||
"enableAudit": "true",
|
||||
"auditLevel": "low",
|
||||
"auditMode": "direct"
|
||||
},
|
||||
"SdkAnalysisLevel": "9.0.300"
|
||||
},
|
||||
"frameworks": {
|
||||
"net9.0": {
|
||||
"targetAlias": "net9.0",
|
||||
"dependencies": {
|
||||
"System.CommandLine": {
|
||||
"target": "Package",
|
||||
"version": "[2.0.0-beta4.22272.1, )"
|
||||
}
|
||||
},
|
||||
"imports": [
|
||||
"net461",
|
||||
"net462",
|
||||
"net47",
|
||||
"net471",
|
||||
"net472",
|
||||
"net48",
|
||||
"net481"
|
||||
],
|
||||
"assetTargetFallback": true,
|
||||
"warn": true,
|
||||
"frameworkReferences": {
|
||||
"Microsoft.NETCore.App": {
|
||||
"privateAssets": "all"
|
||||
}
|
||||
},
|
||||
"runtimeIdentifierGraphPath": "/home/friedel/.dotnet/sdk/9.0.308/PortableRuntimeIdentifierGraph.json"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
10
src/OpenMaui.AppImage/obj/project.nuget.cache
Normal file
10
src/OpenMaui.AppImage/obj/project.nuget.cache
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"version": 2,
|
||||
"dgSpecHash": "s/Fcy88GmSs=",
|
||||
"success": true,
|
||||
"projectFilePath": "/home/friedel/Documents/Gitea/appimage/src/OpenMaui.AppImage/OpenMaui.AppImage.csproj",
|
||||
"expectedPackageFiles": [
|
||||
"/home/friedel/.nuget/packages/system.commandline/2.0.0-beta4.22272.1/system.commandline.2.0.0-beta4.22272.1.nupkg.sha512"
|
||||
],
|
||||
"logs": []
|
||||
}
|
||||
95
templates/AppRun.template
Normal file
95
templates/AppRun.template
Normal file
@@ -0,0 +1,95 @@
|
||||
#!/bin/bash
|
||||
# AppRun script for OpenMaui applications
|
||||
# This script is the entry point for the AppImage
|
||||
|
||||
SELF=$(readlink -f "$0")
|
||||
HERE=${SELF%/*}
|
||||
|
||||
# App metadata (filled in by builder)
|
||||
export APPIMAGE_NAME="{{APP_NAME}}"
|
||||
export APPIMAGE_COMMENT="{{COMMENT}}"
|
||||
export APPIMAGE_CATEGORY="{{CATEGORY}}"
|
||||
export APPIMAGE_VERSION="{{VERSION}}"
|
||||
EXEC_NAME="{{EXEC_NAME}}"
|
||||
|
||||
export PATH="$HERE/usr/bin:$PATH"
|
||||
export LD_LIBRARY_PATH="$HERE/usr/bin:$LD_LIBRARY_PATH"
|
||||
export XDG_DATA_DIRS="$HERE/usr/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
|
||||
|
||||
# Configuration
|
||||
INSTALLED_MARKER="$HOME/.local/share/openmaui-installed"
|
||||
|
||||
# Handle command line flags
|
||||
if [ "$1" = "--install" ]; then
|
||||
# Force show installer
|
||||
SHOW_INSTALLER=1
|
||||
shift
|
||||
elif [ "$1" = "--uninstall" ]; then
|
||||
# Uninstall
|
||||
echo "Uninstalling $APPIMAGE_NAME..."
|
||||
APPIMAGE_BASENAME=$(basename "$APPIMAGE")
|
||||
SANITIZED_NAME=$(echo "$APPIMAGE_NAME" | tr ' ' '_')
|
||||
|
||||
rm -f "$HOME/.local/bin/$APPIMAGE_BASENAME"
|
||||
rm -f "$HOME/.local/share/applications/${SANITIZED_NAME}.desktop"
|
||||
rm -f "$INSTALLED_MARKER/$APPIMAGE_BASENAME"
|
||||
|
||||
if command -v update-desktop-database &> /dev/null; then
|
||||
update-desktop-database "$HOME/.local/share/applications" 2>/dev/null || true
|
||||
fi
|
||||
|
||||
echo "Uninstallation complete!"
|
||||
exit 0
|
||||
elif [ "$1" = "--help" ]; then
|
||||
echo "Usage: $(basename "$APPIMAGE") [OPTIONS]"
|
||||
echo ""
|
||||
echo "Options:"
|
||||
echo " --install Show the installation dialog"
|
||||
echo " --uninstall Remove the application"
|
||||
echo " --help Show this help message"
|
||||
echo ""
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Check if running from AppImage and if first run
|
||||
if [ -n "$APPIMAGE" ]; then
|
||||
APPIMAGE_BASENAME=$(basename "$APPIMAGE")
|
||||
|
||||
# Check if already installed
|
||||
if [ ! -f "$INSTALLED_MARKER/$APPIMAGE_BASENAME" ] || [ "$SHOW_INSTALLER" = "1" ]; then
|
||||
# First run - show installer dialog
|
||||
if [ -f "$HERE/usr/bin/OpenMaui.AppImage.Installer.dll" ]; then
|
||||
# Find icon
|
||||
ICON_PATH=""
|
||||
for ext in svg png ico; do
|
||||
if [ -f "$HERE/${APPIMAGE_NAME}.${ext}" ]; then
|
||||
ICON_PATH="$HERE/${APPIMAGE_NAME}.${ext}"
|
||||
break
|
||||
fi
|
||||
SANITIZED=$(echo "$APPIMAGE_NAME" | tr ' ' '_')
|
||||
if [ -f "$HERE/${SANITIZED}.${ext}" ]; then
|
||||
ICON_PATH="$HERE/${SANITIZED}.${ext}"
|
||||
break
|
||||
fi
|
||||
done
|
||||
|
||||
cd "$HERE/usr/bin"
|
||||
RESULT=$(dotnet OpenMaui.AppImage.Installer.dll \
|
||||
--name "$APPIMAGE_NAME" \
|
||||
--appimage "$APPIMAGE" \
|
||||
--comment "$APPIMAGE_COMMENT" \
|
||||
--category "$APPIMAGE_CATEGORY" \
|
||||
--version "$APPIMAGE_VERSION" \
|
||||
${ICON_PATH:+--icon "$ICON_PATH"}; echo $?)
|
||||
|
||||
# Check result: 0=run, 1=cancel, 2=installed
|
||||
if [ "$RESULT" = "1" ]; then
|
||||
exit 0
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
|
||||
# Run the application
|
||||
cd "$HERE/usr/bin"
|
||||
exec dotnet "$EXEC_NAME.dll" "$@"
|
||||
10
templates/app.desktop.template
Normal file
10
templates/app.desktop.template
Normal file
@@ -0,0 +1,10 @@
|
||||
[Desktop Entry]
|
||||
Type=Application
|
||||
Name={{APP_NAME}}
|
||||
Comment={{COMMENT}}
|
||||
Exec={{EXEC_NAME}}
|
||||
Icon={{ICON_NAME}}
|
||||
Categories={{CATEGORY}};
|
||||
Terminal=false
|
||||
X-AppImage-Version={{VERSION}}
|
||||
StartupWMClass={{WM_CLASS}}
|
||||
Reference in New Issue
Block a user