diff --git a/.gitignore b/.gitignore
index 9491a2f..5e3ca80 100644
--- a/.gitignore
+++ b/.gitignore
@@ -360,4 +360,7 @@ MigrationBackup/
.ionide/
# Fody - auto-generated XML schema
-FodyWeavers.xsd
\ No newline at end of file
+FodyWeavers.xsd
+
+# build output
+/build
diff --git a/build.ps1 b/build.ps1
new file mode 100644
index 0000000..7dae51a
--- /dev/null
+++ b/build.ps1
@@ -0,0 +1,21 @@
+mkdir -Force build
+mkdir -Force build/tmp
+mkdir -Force build/Plugins
+
+foreach ($proj in ls "src/CurvaLauncher.Plugins.*") {
+ if ($proj.Name.Contains("Test")) {
+ continue
+ }
+
+ dotnet build $proj -c Release -o build/tmp
+ copy "build/tmp/$($proj.Name).dll" "build/Plugins/"
+}
+
+
+dotnet publish src/CurvaLauncher -c Release -o build -r win-x64 --self-contained false /p:PublishSingleFile=true
+
+# clean up
+rm -Recurse -Force build/tmp
+rm build/*.pdb
+
+# Compress-Archive @("build/CurvaLauncher.exe", "build/Plugins") "build/CurvaLauncher.zip"
\ No newline at end of file
diff --git a/src/CurvaLauncher.Common/CurvaLauncher.Common.csproj b/src/CurvaLauncher.Common/CurvaLauncher.Common.csproj
index dd3e53f..283f26a 100644
--- a/src/CurvaLauncher.Common/CurvaLauncher.Common.csproj
+++ b/src/CurvaLauncher.Common/CurvaLauncher.Common.csproj
@@ -7,6 +7,7 @@
true
true
CurvaLauncher
+ true
diff --git a/src/CurvaLauncher.Plugins.Calculator/CurvaLauncher.Plugins.Calculator.csproj b/src/CurvaLauncher.Plugins.Calculator/CurvaLauncher.Plugins.Calculator.csproj
index 33fed52..859fc9d 100644
--- a/src/CurvaLauncher.Plugins.Calculator/CurvaLauncher.Plugins.Calculator.csproj
+++ b/src/CurvaLauncher.Plugins.Calculator/CurvaLauncher.Plugins.Calculator.csproj
@@ -5,6 +5,7 @@
enable
enable
true
+ true
diff --git a/src/CurvaLauncher.Plugins.Hashing/CurvaLauncher.Plugins.Hashing.csproj b/src/CurvaLauncher.Plugins.Hashing/CurvaLauncher.Plugins.Hashing.csproj
index ca250d4..4124141 100644
--- a/src/CurvaLauncher.Plugins.Hashing/CurvaLauncher.Plugins.Hashing.csproj
+++ b/src/CurvaLauncher.Plugins.Hashing/CurvaLauncher.Plugins.Hashing.csproj
@@ -5,6 +5,7 @@
enable
enable
true
+ true
diff --git a/src/CurvaLauncher.Plugins.OpenUrl/CurvaLauncher.Plugins.OpenUrl.csproj b/src/CurvaLauncher.Plugins.OpenUrl/CurvaLauncher.Plugins.OpenUrl.csproj
index ca250d4..4124141 100644
--- a/src/CurvaLauncher.Plugins.OpenUrl/CurvaLauncher.Plugins.OpenUrl.csproj
+++ b/src/CurvaLauncher.Plugins.OpenUrl/CurvaLauncher.Plugins.OpenUrl.csproj
@@ -5,6 +5,7 @@
enable
enable
true
+ true
diff --git a/src/CurvaLauncher.Plugins.QuickWebSearch/CurvaLauncher.Plugins.QuickWebSearch.csproj b/src/CurvaLauncher.Plugins.QuickWebSearch/CurvaLauncher.Plugins.QuickWebSearch.csproj
index ca250d4..4124141 100644
--- a/src/CurvaLauncher.Plugins.QuickWebSearch/CurvaLauncher.Plugins.QuickWebSearch.csproj
+++ b/src/CurvaLauncher.Plugins.QuickWebSearch/CurvaLauncher.Plugins.QuickWebSearch.csproj
@@ -5,6 +5,7 @@
enable
enable
true
+ true
diff --git a/src/CurvaLauncher.Plugins.RunApplication/CurvaLauncher.Plugins.RunApplication.csproj b/src/CurvaLauncher.Plugins.RunApplication/CurvaLauncher.Plugins.RunApplication.csproj
index c16e076..f28f69c 100644
--- a/src/CurvaLauncher.Plugins.RunApplication/CurvaLauncher.Plugins.RunApplication.csproj
+++ b/src/CurvaLauncher.Plugins.RunApplication/CurvaLauncher.Plugins.RunApplication.csproj
@@ -6,6 +6,7 @@
enable
true
true
+ true
diff --git a/src/CurvaLauncher.Plugins.RunProgram/CurvaLauncher.Plugins.RunProgram.csproj b/src/CurvaLauncher.Plugins.RunProgram/CurvaLauncher.Plugins.RunProgram.csproj
index 03a7ead..3022962 100644
--- a/src/CurvaLauncher.Plugins.RunProgram/CurvaLauncher.Plugins.RunProgram.csproj
+++ b/src/CurvaLauncher.Plugins.RunProgram/CurvaLauncher.Plugins.RunProgram.csproj
@@ -6,6 +6,7 @@
enable
true
latest
+ true
diff --git a/src/CurvaLauncher.Plugins.Test/CurvaLauncher.Plugins.Test.csproj b/src/CurvaLauncher.Plugins.Test/CurvaLauncher.Plugins.Test.csproj
index 3f759b1..958c85e 100644
--- a/src/CurvaLauncher.Plugins.Test/CurvaLauncher.Plugins.Test.csproj
+++ b/src/CurvaLauncher.Plugins.Test/CurvaLauncher.Plugins.Test.csproj
@@ -5,6 +5,7 @@
enable
enable
true
+ true
@@ -18,5 +19,5 @@
-
+
diff --git a/src/CurvaLauncher.Plugins.Translator/CurvaLauncher.Plugins.Translator.csproj b/src/CurvaLauncher.Plugins.Translator/CurvaLauncher.Plugins.Translator.csproj
index ca250d4..4124141 100644
--- a/src/CurvaLauncher.Plugins.Translator/CurvaLauncher.Plugins.Translator.csproj
+++ b/src/CurvaLauncher.Plugins.Translator/CurvaLauncher.Plugins.Translator.csproj
@@ -5,6 +5,7 @@
enable
enable
true
+ true
diff --git a/src/CurvaLauncher.Plugins/CurvaLauncher.Plugins.csproj b/src/CurvaLauncher.Plugins/CurvaLauncher.Plugins.csproj
index d748949..fd26206 100644
--- a/src/CurvaLauncher.Plugins/CurvaLauncher.Plugins.csproj
+++ b/src/CurvaLauncher.Plugins/CurvaLauncher.Plugins.csproj
@@ -6,6 +6,7 @@
enable
true
CurvaLauncher
+ true
diff --git a/src/CurvaLauncher/CurvaLauncher.csproj b/src/CurvaLauncher/CurvaLauncher.csproj
index 51b57d4..f475d00 100644
--- a/src/CurvaLauncher/CurvaLauncher.csproj
+++ b/src/CurvaLauncher/CurvaLauncher.csproj
@@ -12,6 +12,7 @@
0.5.2-beta
true
+ true
diff --git a/src/TestConsole/TestConsole.csproj b/src/TestConsole/TestConsole.csproj
index 99c8b85..e5d22d8 100644
--- a/src/TestConsole/TestConsole.csproj
+++ b/src/TestConsole/TestConsole.csproj
@@ -6,6 +6,7 @@
enable
enable
true
+ true