Browse Source

bundle vc redistributables on windows

Brendan Allan 6 tháng trước cách đây
mục cha
commit
8080b51a7f

BIN
packages/desktop/src-tauri/resources/vc_redist.x64.exe


+ 3 - 1
packages/desktop/src-tauri/tauri.conf.json

@@ -34,6 +34,7 @@
     "active": true,
     "targets": ["deb", "rpm", "dmg", "nsis", "app"],
     "externalBin": ["sidecars/opencode-cli"],
+    "resources": ["resources/vc_redist.x64.exe"],
     "linux": {
       "rpm": {
         "compression": {
@@ -48,7 +49,8 @@
       "nsis": {
         "installerIcon": "icons/dev/icon.ico",
         "headerImage": "assets/nsis-header.bmp",
-        "sidebarImage": "assets/nsis-sidebar.bmp"
+        "sidebarImage": "assets/nsis-sidebar.bmp",
+        "installerHooks": "./windows/hooks.nsh"
       }
     }
   },

+ 3 - 1
packages/desktop/src-tauri/tauri.prod.conf.json

@@ -11,9 +11,11 @@
       "icons/prod/icon.icns",
       "icons/prod/icon.ico"
     ],
+    "resources": ["resources/vc_redist.x64.exe"],
     "windows": {
       "nsis": {
-        "installerIcon": "icons/prod/icon.ico"
+        "installerIcon": "icons/prod/icon.ico",
+        "installerHooks": "./windows/hooks.nsh"
       }
     },
     "linux": {

+ 24 - 0
packages/desktop/src-tauri/windows/hooks.nsh

@@ -0,0 +1,24 @@
+!include "FileFunc.nsh"
+
+!macro NSIS_HOOK_POSTINSTALL
+  ReadRegDWord $0 HKLM "SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" "Installed"
+  ${If} $0 == 1
+    DetailPrint "Visual C++ Redistributable already installed"
+    Goto vcredist_done
+  ${EndIf}
+
+  ${If} ${FileExists} "$INSTDIR\resources\vc_redist.x64.exe"
+    DetailPrint "Installing Visual C++ Redistributable..."
+    CopyFiles "$INSTDIR\resources\vc_redist.x64.exe" "$TEMP\vc_redist.x64.exe"
+    ExecWait '"$TEMP\vc_redist.x64.exe" /install /quiet /norestart' $0
+    ${If} $0 == 0
+      DetailPrint "Visual C++ Redistributable installed successfully"
+    ${Else}
+      MessageBox MB_ICONEXCLAMATION "Visual C++ installation failed. Some features may not work."
+    ${EndIf}
+    Delete "$TEMP\vc_redist.x64.exe"
+    Delete "$INSTDIR\resources\vc_redist.x64.exe"
+  ${EndIf}
+
+  vcredist_done:
+!macroend