summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2021-12-04 15:55:29 -0500
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2021-12-04 15:55:29 -0500
commitc80d07fddfffe4fd3f8fa69bf6cab6374eec992d (patch)
tree1322c583652748a9a3f4ba2cca0e5d7921453143
parent711e17a4f99af29177fb250b24868b6e655dacb7 (diff)
downloadSMAPI-c80d07fddfffe4fd3f8fa69bf6cab6374eec992d.tar.gz
SMAPI-c80d07fddfffe4fd3f8fa69bf6cab6374eec992d.tar.bz2
SMAPI-c80d07fddfffe4fd3f8fa69bf6cab6374eec992d.zip
migrate SMAPI to self-contained install
This removes the need to have .NET 5 installed to run SMAPI. Note that there's no need to actually bundle the .NET files, since they're already bundled into the game folder.
-rwxr-xr-xbuild/prepare-install-package.sh28
-rw-r--r--docs/release-notes.md2
-rw-r--r--src/SMAPI.Installer/assets/runtimeconfig.unix.json3
-rw-r--r--src/SMAPI.Installer/assets/runtimeconfig.windows.json3
-rw-r--r--src/SMAPI.Installer/assets/unix-launcher.sh9
5 files changed, 20 insertions, 25 deletions
diff --git a/build/prepare-install-package.sh b/build/prepare-install-package.sh
index 2d03ba82..07dae217 100755
--- a/build/prepare-install-package.sh
+++ b/build/prepare-install-package.sh
@@ -26,6 +26,7 @@ cd "`dirname "$0"`/.."
echo "Clearing old builds..."
echo "-----------------------"
for path in */**/bin */**/obj; do
+ echo "$path"
rm -rf $path
done
rm -rf "bin"
@@ -38,10 +39,9 @@ for folder in ${folders[@]}; do
runtime=${runtimes[$folder]}
msbuildPlatformName=${msBuildPlatformNames[$folder]}
- # SMAPI
echo "Compiling SMAPI for $folder..."
echo "------------------"
- dotnet publish src/SMAPI --configuration $buildConfig -v minimal --runtime "$runtime" -p:OS="$msbuildPlatformName" -p:GamePath="$gamePath" -p:CopyToGameFolder="false"
+ dotnet publish src/SMAPI --configuration $buildConfig -v minimal --runtime "$runtime" -p:OS="$msbuildPlatformName" -p:GamePath="$gamePath" -p:CopyToGameFolder="false" --self-contained true
echo ""
echo ""
@@ -79,7 +79,7 @@ done
# copy base installer files
for name in "install on Linux.sh" "install on macOS.command" "install on Windows.bat" "README.txt"; do
- cp "$installAssets/$name" "$packagePath/$name"
+ cp "$installAssets/$name" "$packagePath"
done
# copy per-platform files
@@ -114,7 +114,7 @@ for folder in ${folders[@]}; do
name="$name.exe"
fi
- cp "$smapiBin/$name" "$bundlePath/$name"
+ cp "$smapiBin/$name" "$bundlePath"
done
# bundle i18n
@@ -122,24 +122,24 @@ for folder in ${folders[@]}; do
# bundle smapi-internal
for name in "0Harmony.dll" "0Harmony.xml" "Mono.Cecil.dll" "Mono.Cecil.Mdb.dll" "Mono.Cecil.Pdb.dll" "MonoMod.Common.dll" "Newtonsoft.Json.dll" "TMXTile.dll" "SMAPI.Toolkit.dll" "SMAPI.Toolkit.pdb" "SMAPI.Toolkit.xml" "SMAPI.Toolkit.CoreInterfaces.dll" "SMAPI.Toolkit.CoreInterfaces.pdb" "SMAPI.Toolkit.CoreInterfaces.xml"; do
- cp "$smapiBin/$name" "$bundlePath/smapi-internal/$name"
+ cp "$smapiBin/$name" "$bundlePath/smapi-internal"
done
cp "$smapiBin/SMAPI.config.json" "$bundlePath/smapi-internal/config.json"
cp "$smapiBin/SMAPI.metadata.json" "$bundlePath/smapi-internal/metadata.json"
if [ $folder == "linux" ] || [ $folder == "macOS" ]; then
- cp "$installAssets/unix-launcher.sh" "$bundlePath/unix-launcher.sh"
- cp "$smapiBin/System.Runtime.Caching.dll" "$bundlePath/smapi-internal/System.Runtime.Caching.dll"
+ cp "$installAssets/unix-launcher.sh" "$bundlePath"
+ cp "$smapiBin/System.Runtime.Caching.dll" "$bundlePath/smapi-internal"
else
cp "$installAssets/windows-exe-config.xml" "$bundlePath/StardewModdingAPI.exe.config"
fi
# copy .NET dependencies
- cp "$smapiBin/System.Configuration.ConfigurationManager.dll" "$bundlePath/smapi-internal/System.Configuration.ConfigurationManager.dll"
- cp "$smapiBin/System.Runtime.Caching.dll" "$bundlePath/smapi-internal/System.Runtime.Caching.dll"
- cp "$smapiBin/System.Security.Permissions.dll" "$bundlePath/smapi-internal/System.Security.Permissions.dll"
+ cp "$smapiBin/System.Configuration.ConfigurationManager.dll" "$bundlePath/smapi-internal"
+ cp "$smapiBin/System.Runtime.Caching.dll" "$bundlePath/smapi-internal"
+ cp "$smapiBin/System.Security.Permissions.dll" "$bundlePath/smapi-internal"
if [ $folder == "windows" ]; then
- cp "$smapiBin/System.Management.dll" "$bundlePath/smapi-internal/System.Management.dll"
+ cp "$smapiBin/System.Management.dll" "$bundlePath/smapi-internal"
fi
# copy bundled mods
@@ -149,9 +149,9 @@ for folder in ${folders[@]}; do
mkdir "$targetPath" --parents
- cp "$fromPath/$modName.dll" "$targetPath/$modName.dll"
- cp "$fromPath/$modName.pdb" "$targetPath/$modName.pdb"
- cp "$fromPath/manifest.json" "$targetPath/manifest.json"
+ cp "$fromPath/$modName.dll" "$targetPath"
+ cp "$fromPath/$modName.pdb" "$targetPath"
+ cp "$fromPath/manifest.json" "$targetPath"
if [ -d "$fromPath/i18n" ]; then
cp -r "$fromPath/i18n" "$targetPath"
fi
diff --git a/docs/release-notes.md b/docs/release-notes.md
index 3f13b4e2..4fc6a524 100644
--- a/docs/release-notes.md
+++ b/docs/release-notes.md
@@ -3,7 +3,7 @@
# Release notes
## Upcoming version
* For players:
- * You no longer need .NET 5 to run the SMAPI installer.
+ * You no longer need .NET 5 installed to run SMAPI or the installer.
* Updated for the Stardew Valley 1.5.5 hotfix on 2021-12-03.
* For SMAPI maintainers:
diff --git a/src/SMAPI.Installer/assets/runtimeconfig.unix.json b/src/SMAPI.Installer/assets/runtimeconfig.unix.json
index 8a01ceb1..a1d060b5 100644
--- a/src/SMAPI.Installer/assets/runtimeconfig.unix.json
+++ b/src/SMAPI.Installer/assets/runtimeconfig.unix.json
@@ -4,7 +4,8 @@
"includedFrameworks": [
{
"name": "Microsoft.NETCore.App",
- "version": "5.0.7"
+ "version": "5.0.0",
+ "rollForward": "major"
}
],
"configProperties": {
diff --git a/src/SMAPI.Installer/assets/runtimeconfig.windows.json b/src/SMAPI.Installer/assets/runtimeconfig.windows.json
index b693d809..d5f24bdb 100644
--- a/src/SMAPI.Installer/assets/runtimeconfig.windows.json
+++ b/src/SMAPI.Installer/assets/runtimeconfig.windows.json
@@ -3,7 +3,8 @@
"tfm": "net5.0",
"framework": {
"name": "Microsoft.NETCore.App",
- "version": "5.0.0"
+ "version": "5.0.0",
+ "rollForward": "major"
},
"configProperties": {
"System.Runtime.TieredCompilation": false
diff --git a/src/SMAPI.Installer/assets/unix-launcher.sh b/src/SMAPI.Installer/assets/unix-launcher.sh
index 58f7a5ae..e8b9ae62 100644
--- a/src/SMAPI.Installer/assets/unix-launcher.sh
+++ b/src/SMAPI.Installer/assets/unix-launcher.sh
@@ -49,20 +49,13 @@ if [ ! -f "Stardew Valley.dll" ]; then
exit 1
fi
-# .NET 5 must be installed
-if ! command -v dotnet >/dev/null 2>&1; then
- echo "Oops! You must have .NET 5 installed to use SMAPI: https://dotnet.microsoft.com/download";
- read
- exit 1
-fi
-
##########
## Launch SMAPI
##########
# macOS
if [ "$(uname)" == "Darwin" ]; then
- dotnet StardewModdingAPI.dll "$@"
+ ./StardewModdingAPI "$@"
# Linux
else