Skip to content

Commit

Permalink
add Velopack
Browse files Browse the repository at this point in the history
  • Loading branch information
goswinr committed Jan 19, 2025
1 parent 489f30f commit 74f7bf7
Show file tree
Hide file tree
Showing 45 changed files with 881 additions and 341 deletions.
22 changes: 22 additions & 0 deletions .github/InstallNotes-net48.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
## for Revit 2024, 2023, 2022, 2021, 2020, 2019 and 2018

To install just download and run `Fesh.Revit.net48-framework-Setup.exe` from the Assets.

<details>

<summary>More Info on Installation</summary>

No admin rights are required to install or run the app.\
The app will be installed in `C:\Users\{username}\AppData\Local\Fesh.Revit.net48\current`\
and registered as a plugin with any installed Revit version 2024 or earlier.
It will automatically offer to update Fesh when a new version is available.

The installer is digitally code-signed via Azure Trusted Signing Service.\
It should not raise any security warnings.

See the [Changelog](https://github.com/goswinr/Fesh.Revit/blob/main/CHANGELOG.md) for changes in this release.

This release was created with [Velopack](https://velopack.io/).

</details>

21 changes: 21 additions & 0 deletions .github/InstallNotes-net8.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
## for Revit 2025 and later

To install just download and run `Fesh.Revit-2025-Setup.exe` from the Assets.

<details>

<summary>More Info on Installation</summary>

No admin rights are required to install or run the app.\
The app will be installed in `C:\Users\{username}\AppData\Local\Fesh.Revit\current`\
and registerer as a plugin with any installed Revit version 2025 or later.
It will automatically offer to update Fesh when a new version is available.

The installer is digitally code-signed via Azure Trusted Signing Service.\
It should not raise any security warnings.

See the [Changelog](https://github.com/goswinr/Fesh.Revit/blob/main/CHANGELOG.md) for changes in this release.

This release was created with [Velopack](https://velopack.io/).

</details>
15 changes: 15 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
name: Dependabot for Nuget dependencies and Github Actions
version: 2
updates:
# Update to newer version of GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"

# Update to newer NuGet dependencies
- package-ecosystem: "nuget"
directory: "/"
schedule:
interval: "daily"

6 changes: 6 additions & 0 deletions .github/signing-metadata.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"Endpoint": "https://neu.codesigning.azure.net",
"CodeSigningAccountName": "GoswinATS",
"CertificateProfileName": "cert-prof-gos-ro-org",
"CorrelationId": "HGR-GH-Fesh-Test-1"
}
28 changes: 28 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
name: Build

on:
push:
branches:
- main
pull_request:
branches:
- main

jobs:
build:
runs-on: windows-latest

steps:
- name: Checkout code
uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '9.0.x'

- name: Build FeshHosting.fsproj
run: dotnet build Fesh.Revit.Bootstrapper/Fesh.Revit.Bootstrapper.fsproj --configuration Release



146 changes: 146 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
name: Release with Velopack

on:
push:
tags:
- '[0-9]+.[0-9]+.[0-9]+'

jobs:
build-and-release:
runs-on: windows-latest # wil run commands on powershell, windows is needed so that ATS signtool.exe works inside --azureTrustedSignFile
permissions: write-all # or Workflow permissions https://github.com/goswinr/Fesh/settings/actions ??
steps:

- name: Checkout repository
uses: actions/checkout@v4

- name: Push tag with -net48 suffix
uses: richardsimko/update-tag@v1
with:
tag_name: "${{ github.ref_name }}-net48"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: '9.0.x'

- name: Run dotnet publish net48
run: |
dotnet publish Fesh.Revit.Bootstrapper/Fesh.Revit.Bootstrapper.fsproj `
--configuration release `
--runtime win-x64 `
--output bin/publish/net48 `
--framework net48 `
--no-self-contained
- name: Run dotnet publish net8.0
run: |
dotnet publish Fesh.Revit.Bootstrapper/Fesh.Revit.Bootstrapper.fsproj `
--configuration release `
--runtime win-x64 `
--output bin/publish/net8.0 `
--framework net8.0-windows `
--no-self-contained
- name: Check version consistency of git tag and CHANGELOG.md
# needs in fsproj:
# <Target Name="WriteChangelogVersion" AfterTargets="AfterBuild"><!-- for version checks in github tag based builds -->
# <WriteLinesToFile File="./ChangelogVersion.txt" Lines="@(CurrentReleaseChangelog)" Overwrite="true" ContinueOnError="false" />
# </Target>
id: check_version
shell: bash
run: |
CHANGELOG_VERSION=$(cat ./ChangelogVersion.txt | tr -d '[:space:]')
if [ "${{ github.ref_name }}" != "$CHANGELOG_VERSION" ]; then
echo "Version mismatch: git tag (${{ github.ref_name }}) and version in CHANGELOG.md ($CHANGELOG_VERSION) are not the same."
exit 1
fi
echo "CHANGELOG_VERSION=$CHANGELOG_VERSION"
echo "github.ref_name=${{ github.ref_name }}"
echo "Version check of git tag and CHANGELOG.md passed successfully."
- name: Azure login
uses: azure/login@v2
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
enable-AzPSSession: true

- name: Pack, Sign and Release with Velopack .NET Framework 4.8
# https://docs.velopack.io/reference/cli/content/vpk-windows
# If you are publishing your application with --no-self-contained,
# then you should provide the --framework argument. https://docs.velopack.io/packaging/bootstrapping
run: |
dotnet tool install vpk --global
vpk download github `
--repoUrl https://github.com/goswinr/Fesh.Revit `
--token ${{secrets.GITHUB_TOKEN}} `
--outputDir bin/installer/net48 `
--channel framework
vpk pack `
--packId Fesh.Revit.net48 `
--packVersion "${{github.ref_name}}" `
--packDir bin/publish/net48 `
--mainExe Fesh.Revit.Bootstrapper.exe `
--framework net48 `
--icon Media/logoInstaller.ico `
--packAuthors "Goswin R" `
--releaseNotes .github/InstallNotes-net48.md `
--azureTrustedSignFile .github/signing-metadata.json `
--splashImage Media/logo128.png `
--outputDir bin/installer/net48 `
--noPortable `
--shortcuts None `
--channel framework
vpk upload github `
--publish `
--repoUrl https://github.com/goswinr/Fesh.Revit `
--releaseName "Fesh.Revit ${{github.ref_name}} net4.8" `
--tag "${{github.ref_name}}-net48" `
--token ${{secrets.GITHUB_TOKEN}} `
--outputDir bin/installer/net48 `
--channel framework
- name: Pack, Sign and Release with Velopack .NET 8.0
# https://docs.velopack.io/reference/cli/content/vpk-windows
# If you are publishing your application with --no-self-contained, then you should provide the --framework argument. https://docs.velopack.io/packaging/bootstrapping
run: |
dotnet tool install vpk --global
vpk download github `
--repoUrl https://github.com/goswinr/Fesh.Revit `
--token ${{secrets.GITHUB_TOKEN}} `
--outputDir bin/installer/net8.0 `
--channel net8
vpk pack `
--packId Fesh.Revit `
--packVersion ${{github.ref_name}} `
--packDir bin/publish/net8.0 `
--mainExe Fesh.Revit.Bootstrapper.exe `
--framework net8.0-x64-desktop `
--icon Media/logoInstaller.ico `
--packAuthors "Goswin R" `
--releaseNotes .github/InstallNotes-net8.md `
--azureTrustedSignFile .github/signing-metadata.json `
--splashImage Media/logo128.png `
--outputDir bin/installer/net8.0 `
--noPortable `
--shortcuts None `
--channel net8
vpk upload github `
--publish `
--repoUrl https://github.com/goswinr/Fesh.Revit `
--releaseName "Fesh.Revit ${{github.ref_name}} net8" `
--tag ${{github.ref_name}} `
--token ${{secrets.GITHUB_TOKEN}} `
--outputDir bin/installer/net8.0 `
--channel net8
30 changes: 30 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]


## [0.20.0] - 2025-01-12
### Changed
- Create installer with Velopack
- Enable automatic Update
- Add Code Signing via Azure Trusted Signing
- Update to [Fesh 0.20.0](https://github.com/goswinr/Fesh/blob/main/CHANGELOG.md)

## [0.14.1] - 2024-11-07
### Changed
- allow to build with different Revit versions

## [0.14.0] - 2024-11-04
### Changed
- First public release

[Unreleased]: https://github.com/goswinr/Fesh.Revit/compare/0.20.0...HEAD
[0.20.0]: https://github.com/goswinr/Fesh.Revit/compare/0.14.1...0.20.0
[0.14.1]: https://github.com/goswinr/Fesh.Revit/compare/0.14.0...0.14.1
[0.14.0]: https://github.com/goswinr/Fesh.Revit/releases/tag/0.14.0

1 change: 1 addition & 0 deletions ChangelogVersion.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
0.20.1
Binary file removed Docs/addinPath.png
Binary file not shown.
66 changes: 66 additions & 0 deletions Fesh.Revit.Bootstrapper/Fesh.Revit.Bootstrapper.fsproj
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<UseWPF>true</UseWPF>
<UseWindowsForms>true</UseWindowsForms> <!--inherited from Avalonedit ?-->
<TargetFrameworks>net48;net8.0-windows</TargetFrameworks>

<LangVersion>preview</LangVersion> <!-- to enable indexing from end via ^ -->
<NeutralLanguage>en</NeutralLanguage>
<SatelliteResourceLanguages>en</SatelliteResourceLanguages> <!-- <SatelliteResourceLanguages> to only have the English resources-->
<GenerateDocumentationFile>true</GenerateDocumentationFile> <!-- <GenerateDocumentationFile> just in case the editor itself gets referenced from a script-->
<FSharpCoreIncludeDocFileInOutput>true</FSharpCoreIncludeDocFileInOutput> <!-- doesn't seem to work -->

<RootNamespace>Fesh.Revit.Bootstrapper</RootNamespace>
<AssemblyName>Fesh.Revit.Bootstrapper</AssemblyName>
<AssemblyTitle>Fesh.Revit.Bootstrapper</AssemblyTitle>
<Title>Fesh.Revit.Bootstrapper</Title>
<Product>Fesh.Revit.Bootstrapper</Product>

<!-- <Version></Version> taken from CHANGELOG.md by Ionide.KeepAChangelog.Tasks -->

<Company>Goswin Rothenthal</Company> <!-- <Company> shows up on file preview on fesh.exe in windows file explorer-->
<Authors>Goswin Rothenthal</Authors>
<Copyright>Goswin Rothenthal 2021</Copyright>
<Description>The bootstrapper and updater for the Fesh Scripting Editor in Revit</Description>
<ApplicationIcon>MediaBoot/logoBoot.ico</ApplicationIcon>
<Win32Resource>MediaBoot/logoBoot.res</Win32Resource> <!-- Win32Resource for Application Icon in explorer-->

<PlatformTarget>x64</PlatformTarget> <!-- x64 is required by Revit, do not us just Platform tag-->

<OtherFlags>$(OtherFlags) --warnon:1182</OtherFlags> <!-- 1182: warn on unused variables -->
<ChangelogFile>../CHANGELOG.md</ChangelogFile> <!-- for Ionide.KeepAChangelog.Tasks -->
<Configurations>Release</Configurations>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\Fesh.Revit\Fesh.Revit.fsproj" />
<PackageReference Include="Ionide.KeepAChangelog.Tasks" Version="0.1.8" PrivateAssets="all" />

<!--this reference is needed for tooling only, it might not be installed on host PC. (running the .NET Framework version) see also https://github.com/fsprojects/IfSharp/issues/213 -->
<PackageReference Include="NETStandard.Library" Version="2.0.3" Condition="'$(TargetFramework)' == 'net48'" GeneratePathProperty="true" /> <!-- Generated PathProperty will be 'PkgNETStandard_Library' -->
<PackageReference Include="Fesh" Version="0.20.0" GeneratePathProperty="true" /> <!-- just to copy SyntaxHighlightingFSharp.xshd below -->
</ItemGroup>

<ItemGroup>
<EmbeddedResource Include="MediaBoot/logoBoot.res" /> <!-- for Application Icon in explorer-->
<Resource Include="MediaBoot/logoBoot.ico" /> <!-- for Application Icon in primary windows-->
<Compile Include="Revit.fs" />
<Compile Include="Main.fs" />
</ItemGroup>

<Target Name="CopyFilesOverAfterBuild" AfterTargets="Publish" >
<!-- to check output from Ionide.KeepAChangelog.Tasks current git tag in gh actions -->
<WriteLinesToFile File="../ChangelogVersion.txt" Lines="@(CurrentReleaseChangelog)" Overwrite="true" ContinueOnError="false" />

<!--netstandard dll is needed for editor tooling only, copy it because it might not be installed on host PC . see also https://github.com/fsprojects/IfSharp/issues/213 -->
<Copy SourceFiles="$(PkgNETStandard_Library)/build/netstandard2.0/ref/netstandard.dll" DestinationFolder="$(PublishDir)" ContinueOnError="false" Condition="'$(TargetFramework)' == 'net48'" />
<Copy SourceFiles="$(PkgNETStandard_Library)/build/netstandard2.0/ref/netstandard.xml" DestinationFolder="$(PublishDir)" ContinueOnError="false" Condition="'$(TargetFramework)' == 'net48'" />

<!--FSharp.Core.xml because <FSharpCoreIncludeDocFileInOutput> does not seem to work add it explicitly: -->
<Copy SourceFiles="$(PkgFSharp_Core)/lib/netstandard2.0/FSharp.Core.xml" DestinationFolder="$(PublishDir)" ContinueOnError="false" />
<Copy SourceFiles="$(PkgFesh)/SyntaxHighlightingFSharp.xshd" DestinationFolder="$(PublishDir)" ContinueOnError="false" />
</Target>

</Project>
Loading

0 comments on commit 74f7bf7

Please sign in to comment.