mirror of
https://gitcode.com/gh_mirrors/se/Semi.Avalonia
synced 2026-06-06 18:08:16 +08:00
create-dmg (#818)
* create-dmg * create-dmg-update * Potential fix for pull request finding OK Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -233,6 +233,9 @@ indent_size = 2
|
|||||||
[*.json]
|
[*.json]
|
||||||
indent_size = 2
|
indent_size = 2
|
||||||
|
|
||||||
|
[*.{yml,yaml}]
|
||||||
|
indent_size = 2
|
||||||
|
|
||||||
# Shell scripts
|
# Shell scripts
|
||||||
[*.sh]
|
[*.sh]
|
||||||
end_of_line = lf
|
end_of_line = lf
|
||||||
|
|||||||
@@ -35,6 +35,14 @@ on:
|
|||||||
description: 'macOS arm64 AOT'
|
description: 'macOS arm64 AOT'
|
||||||
default: false
|
default: false
|
||||||
type: boolean
|
type: boolean
|
||||||
|
osx-x64:
|
||||||
|
description: 'macOS Intel x64'
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
|
osx-x64-aot:
|
||||||
|
description: 'macOS Intel x64 AOT'
|
||||||
|
default: false
|
||||||
|
type: boolean
|
||||||
android-arm64:
|
android-arm64:
|
||||||
description: 'Android arm64'
|
description: 'Android arm64'
|
||||||
default: false
|
default: false
|
||||||
@@ -65,6 +73,12 @@ on:
|
|||||||
osx-arm64-aot:
|
osx-arm64-aot:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: true
|
default: true
|
||||||
|
osx-x64:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
osx-x64-aot:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
android-arm64:
|
android-arm64:
|
||||||
type: boolean
|
type: boolean
|
||||||
default: true
|
default: true
|
||||||
@@ -180,6 +194,33 @@ jobs:
|
|||||||
uses: actions/checkout@v6
|
uses: actions/checkout@v6
|
||||||
- name: Publish osx-arm64
|
- name: Publish osx-arm64
|
||||||
run: dotnet publish demo/Semi.Avalonia.Demo.Desktop -r osx-arm64 -c Release -o publish --sc /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true
|
run: dotnet publish demo/Semi.Avalonia.Demo.Desktop -r osx-arm64 -c Release -o publish --sc /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true
|
||||||
|
|
||||||
|
- name: Create .app bundle and DMG (create-dmg)
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
APP_DIR="bundle/Semi.Avalonia.Demo.app"
|
||||||
|
MACOS_DIR="${APP_DIR}/Contents/MacOS"
|
||||||
|
mkdir -p "${MACOS_DIR}"
|
||||||
|
cp -R publish/. "${MACOS_DIR}/"
|
||||||
|
chmod +x "${MACOS_DIR}/Semi.Avalonia.Demo.Desktop"
|
||||||
|
cp publish/Info-macOS.plist "${APP_DIR}/Contents/Info.plist"
|
||||||
|
codesign --force --deep --sign - "${APP_DIR}"
|
||||||
|
mkdir -p dmg_stage
|
||||||
|
ditto "${APP_DIR}" "dmg_stage/Semi.Avalonia.Demo.app"
|
||||||
|
brew install create-dmg
|
||||||
|
rm -f Semi.Avalonia.Demo.Desktop.osx-arm64.dmg
|
||||||
|
create-dmg \
|
||||||
|
--volname "Semi Avalonia Demo" \
|
||||||
|
--window-pos 200 120 \
|
||||||
|
--window-size 640 400 \
|
||||||
|
--icon-size 100 \
|
||||||
|
--icon "Semi.Avalonia.Demo.app" 175 185 \
|
||||||
|
--hide-extension "Semi.Avalonia.Demo.app" \
|
||||||
|
--app-drop-link 455 185 \
|
||||||
|
--skip-jenkins \
|
||||||
|
"Semi.Avalonia.Demo.Desktop.osx-arm64.dmg" \
|
||||||
|
"dmg_stage"
|
||||||
|
|
||||||
- name: Upload a Build Artifact
|
- name: Upload a Build Artifact
|
||||||
uses: actions/upload-artifact@v7
|
uses: actions/upload-artifact@v7
|
||||||
with:
|
with:
|
||||||
@@ -188,6 +229,62 @@ jobs:
|
|||||||
publish
|
publish
|
||||||
!publish/*.pdb
|
!publish/*.pdb
|
||||||
|
|
||||||
|
- name: Upload macOS DMG
|
||||||
|
uses: actions/upload-artifact@v7
|
||||||
|
with:
|
||||||
|
name: Semi.Avalonia.Demo.Desktop.osx-arm64.dmg
|
||||||
|
path: Semi.Avalonia.Demo.Desktop.osx-arm64.dmg
|
||||||
|
|
||||||
|
osx-x64:
|
||||||
|
if: ${{inputs.osx-x64}}
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Publish osx-x64
|
||||||
|
run: dotnet publish demo/Semi.Avalonia.Demo.Desktop -r osx-x64 -c Release -o publish --sc /p:PublishSingleFile=true /p:IncludeNativeLibrariesForSelfExtract=true
|
||||||
|
|
||||||
|
- name: Create .app bundle and DMG (create-dmg)
|
||||||
|
run: |
|
||||||
|
set -euo pipefail
|
||||||
|
APP_DIR="bundle/Semi.Avalonia.Demo.app"
|
||||||
|
MACOS_DIR="${APP_DIR}/Contents/MacOS"
|
||||||
|
mkdir -p "${MACOS_DIR}"
|
||||||
|
cp -R publish/. "${MACOS_DIR}/"
|
||||||
|
chmod +x "${MACOS_DIR}/Semi.Avalonia.Demo.Desktop"
|
||||||
|
cp publish/Info-macOS.plist "${APP_DIR}/Contents/Info.plist"
|
||||||
|
codesign --force --deep --sign - "${APP_DIR}"
|
||||||
|
mkdir -p dmg_stage
|
||||||
|
ditto "${APP_DIR}" "dmg_stage/Semi.Avalonia.Demo.app"
|
||||||
|
brew install create-dmg
|
||||||
|
rm -f Semi.Avalonia.Demo.Desktop.osx-x64.dmg
|
||||||
|
create-dmg \
|
||||||
|
--volname "Semi Avalonia Demo" \
|
||||||
|
--window-pos 200 120 \
|
||||||
|
--window-size 640 400 \
|
||||||
|
--icon-size 100 \
|
||||||
|
--icon "Semi.Avalonia.Demo.app" 175 185 \
|
||||||
|
--hide-extension "Semi.Avalonia.Demo.app" \
|
||||||
|
--app-drop-link 455 185 \
|
||||||
|
--skip-jenkins \
|
||||||
|
"Semi.Avalonia.Demo.Desktop.osx-x64.dmg" \
|
||||||
|
"dmg_stage"
|
||||||
|
|
||||||
|
- name: Upload a Build Artifact
|
||||||
|
uses: actions/upload-artifact@v7
|
||||||
|
with:
|
||||||
|
name: Semi.Avalonia.Demo.Desktop.osx-x64
|
||||||
|
path: |
|
||||||
|
publish
|
||||||
|
!publish/*.pdb
|
||||||
|
|
||||||
|
- name: Upload macOS DMG (Intel)
|
||||||
|
uses: actions/upload-artifact@v7
|
||||||
|
with:
|
||||||
|
name: Semi.Avalonia.Demo.Desktop.osx-x64.dmg
|
||||||
|
path: Semi.Avalonia.Demo.Desktop.osx-x64.dmg
|
||||||
|
|
||||||
osx-arm64-aot:
|
osx-arm64-aot:
|
||||||
if: ${{inputs.osx-arm64-aot}}
|
if: ${{inputs.osx-arm64-aot}}
|
||||||
runs-on: macos-latest
|
runs-on: macos-latest
|
||||||
@@ -206,6 +303,24 @@ jobs:
|
|||||||
publish
|
publish
|
||||||
!publish/*.pdb
|
!publish/*.pdb
|
||||||
|
|
||||||
|
osx-x64-aot:
|
||||||
|
if: ${{inputs.osx-x64-aot}}
|
||||||
|
runs-on: macos-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
- name: Enable Native AOT in .csproj
|
||||||
|
run: sed -i '' 's#<!--<PublishAot>true</PublishAot>-->#<PublishAot>true</PublishAot>#' demo/Semi.Avalonia.Demo.Desktop/Semi.Avalonia.Demo.Desktop.csproj
|
||||||
|
- name: Publish osx-x64 AOT
|
||||||
|
run: dotnet publish demo/Semi.Avalonia.Demo.Desktop -r osx-x64 -c Release -o publish
|
||||||
|
- name: Upload a Build Artifact
|
||||||
|
uses: actions/upload-artifact@v7
|
||||||
|
with:
|
||||||
|
name: Semi.Avalonia.Demo.Desktop.osx-x64.NativeAOT
|
||||||
|
path: |
|
||||||
|
publish
|
||||||
|
!publish/*.pdb
|
||||||
|
|
||||||
android-arm64:
|
android-arm64:
|
||||||
if: ${{inputs.android-arm64 }}
|
if: ${{inputs.android-arm64 }}
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
|
|||||||
@@ -58,6 +58,10 @@ jobs:
|
|||||||
zip -rj Semi.Avalonia.Demo.Desktop.osx-arm64.zip Semi.Avalonia.Demo.Desktop.osx-arm64
|
zip -rj Semi.Avalonia.Demo.Desktop.osx-arm64.zip Semi.Avalonia.Demo.Desktop.osx-arm64
|
||||||
cd Semi.Avalonia.Demo.Desktop.osx-arm64.NativeAOT
|
cd Semi.Avalonia.Demo.Desktop.osx-arm64.NativeAOT
|
||||||
zip -r ../Semi.Avalonia.Demo.Desktop.osx-arm64.NativeAOT.zip .
|
zip -r ../Semi.Avalonia.Demo.Desktop.osx-arm64.NativeAOT.zip .
|
||||||
|
cd "${GITHUB_WORKSPACE}"
|
||||||
|
zip -rj Semi.Avalonia.Demo.Desktop.osx-x64.zip Semi.Avalonia.Demo.Desktop.osx-x64
|
||||||
|
cd Semi.Avalonia.Demo.Desktop.osx-x64.NativeAOT
|
||||||
|
zip -r ../Semi.Avalonia.Demo.Desktop.osx-x64.NativeAOT.zip .
|
||||||
|
|
||||||
- name: Display structure of zipped files
|
- name: Display structure of zipped files
|
||||||
run: ls -R
|
run: ls -R
|
||||||
@@ -72,3 +76,5 @@ jobs:
|
|||||||
nugets/*.nupkg
|
nugets/*.nupkg
|
||||||
android-arm64/*.apk
|
android-arm64/*.apk
|
||||||
*.zip
|
*.zip
|
||||||
|
Semi.Avalonia.Demo.Desktop.osx-arm64.dmg/Semi.Avalonia.Demo.Desktop.osx-arm64.dmg
|
||||||
|
Semi.Avalonia.Demo.Desktop.osx-x64.dmg/Semi.Avalonia.Demo.Desktop.osx-x64.dmg
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>Semi.Avalonia.Demo.Desktop</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>org.avaloniaui.SemiAvaloniaDemo</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>Semi Avalonia Demo</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>$(Version)</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>$(Version)</string>
|
||||||
|
<key>LSMinimumSystemVersion</key>
|
||||||
|
<string>10.15</string>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
||||||
@@ -2,6 +2,7 @@
|
|||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<OutputType>WinExe</OutputType>
|
<OutputType>WinExe</OutputType>
|
||||||
<TargetFramework>net10.0</TargetFramework>
|
<TargetFramework>net10.0</TargetFramework>
|
||||||
|
<Version>1.0.0</Version>
|
||||||
<Nullable>enable</Nullable>
|
<Nullable>enable</Nullable>
|
||||||
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
<BuiltInComInteropSupport>true</BuiltInComInteropSupport>
|
||||||
<ApplicationIcon>..\Semi.Avalonia.Demo\Assets\irihi.ico</ApplicationIcon>
|
<ApplicationIcon>..\Semi.Avalonia.Demo\Assets\irihi.ico</ApplicationIcon>
|
||||||
@@ -30,4 +31,26 @@
|
|||||||
<ProjectReference Include="..\Semi.Avalonia.Demo\Semi.Avalonia.Demo.csproj"/>
|
<ProjectReference Include="..\Semi.Avalonia.Demo\Semi.Avalonia.Demo.csproj"/>
|
||||||
<ProjectReference Include="..\Semi.Avalonia.Demo.Fonts\Semi.Avalonia.Demo.Fonts.csproj"/>
|
<ProjectReference Include="..\Semi.Avalonia.Demo.Fonts\Semi.Avalonia.Demo.Fonts.csproj"/>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
<UsingTask TaskName="ExpandMacOSPlistVersion" TaskFactory="RoslynCodeTaskFactory" AssemblyFile="$(MSBuildToolsPath)\Microsoft.Build.Tasks.Core.dll">
|
||||||
|
<ParameterGroup>
|
||||||
|
<InputFile ParameterType="System.String" Required="true"/>
|
||||||
|
<OutputFile ParameterType="System.String" Required="true"/>
|
||||||
|
<AppVersion ParameterType="System.String" Required="true"/>
|
||||||
|
</ParameterGroup>
|
||||||
|
<Task>
|
||||||
|
<Code Type="Fragment" Language="cs"><![CDATA[
|
||||||
|
var token = "$" + "(Version)";
|
||||||
|
System.IO.File.WriteAllText(
|
||||||
|
OutputFile,
|
||||||
|
System.IO.File.ReadAllText(InputFile).Replace(token, AppVersion));
|
||||||
|
]]></Code>
|
||||||
|
</Task>
|
||||||
|
</UsingTask>
|
||||||
|
<Target Name="ExpandMacOSInfoPlist" AfterTargets="Publish">
|
||||||
|
<ExpandMacOSPlistVersion
|
||||||
|
InputFile="$(MSBuildProjectDirectory)/Info-macOS.plist"
|
||||||
|
OutputFile="$(PublishDir)Info-macOS.plist"
|
||||||
|
AppVersion="$(Version)"/>
|
||||||
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
Reference in New Issue
Block a user