Merge pull request #2516 from dhiltgen/single_tray_app

Fix a couple duplicate instance bugs
This commit is contained in:
Daniel Hiltgen 2024-02-15 15:52:43 -08:00 committed by GitHub
commit c3e62ba38a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 11 additions and 9 deletions

View file

@ -5,6 +5,7 @@ import (
"fmt"
"log"
"log/slog"
"os"
"github.com/jmorganca/ollama/app/store"
"github.com/jmorganca/ollama/app/tray"
@ -58,8 +59,8 @@ func Run() {
}
if IsServerRunning(ctx) {
slog.Debug("XXX detected server already running")
// TODO - should we fail fast, try to kill it, or just ignore?
slog.Info("Detected another instance of ollama running, exiting")
os.Exit(1)
} else {
done, err = SpawnServer(ctx, CLIName)
if err != nil {

View file

@ -48,7 +48,8 @@ func DoUpgrade(cancel context.CancelFunc, done chan int) error {
if done != nil {
<-done
} else {
slog.Warn("XXX done chan was nil, not actually waiting")
// Shouldn't happen
slog.Warn("done chan was nil, not actually waiting")
}
slog.Debug(fmt.Sprintf("starting installer: %s %v", installerExe, installArgs))

View file

@ -80,6 +80,8 @@ SignTool=MySignTool
SignedUninstaller=yes
#endif
SetupMutex=OllamaSetupMutex
[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"
@ -120,6 +122,8 @@ Type: filesandordirs; Name: "{%USERPROFILE}\.ollama"
[Messages]
WizardReady=Ollama Windows Preview
ReadyLabel1=%nLet's get you up and running with your own large language models.
SetupAppRunningError=Another Ollama installer is running.%n%nPlease cancel or finish the other installer, then click OK to continue with this install, or Cancel to exit.
;FinishedHeadingLabel=Run your first model
;FinishedLabel=%nRun this command in a PowerShell or cmd terminal.%n%n%n ollama run llama2

View file

@ -45,7 +45,6 @@ func nativeLoop() {
case 0:
return
default:
// slog.Debug(fmt.Sprintf("XXX dispatching message from run loop 0x%x", m.Message))
pTranslateMessage.Call(uintptr(unsafe.Pointer(m))) //nolint:errcheck
pDispatchMessage.Call(uintptr(unsafe.Pointer(m))) //nolint:errcheck
@ -66,11 +65,9 @@ func (t *winTray) wndProc(hWnd windows.Handle, message uint32, wParam, lParam ui
WM_MOUSEMOVE = 0x0200
WM_LBUTTONDOWN = 0x0201
)
// slog.Debug(fmt.Sprintf("XXX in wndProc: 0x%x", message))
switch message {
case WM_COMMAND:
menuItemId := int32(wParam)
// slog.Debug(fmt.Sprintf("XXX Menu Click: %d", menuItemId))
// https://docs.microsoft.com/en-us/windows/win32/menurc/wm-command#menus
switch menuItemId {
case quitMenuID:
@ -151,7 +148,6 @@ func (t *winTray) wndProc(hWnd windows.Handle, message uint32, wParam, lParam ui
slog.Debug(fmt.Sprintf("unmanaged app message, lParm: 0x%x", lParam))
}
case t.wmTaskbarCreated: // on explorer.exe restarts
slog.Debug("XXX got taskbar created event")
t.muNID.Lock()
err := t.nid.add()
if err != nil {
@ -161,7 +157,6 @@ func (t *winTray) wndProc(hWnd windows.Handle, message uint32, wParam, lParam ui
default:
// Calls the default window procedure to provide default processing for any window messages that an application does not process.
// https://msdn.microsoft.com/en-us/library/windows/desktop/ms633572(v=vs.85).aspx
// slog.Debug(fmt.Sprintf("XXX default wndProc handler 0x%x", message))
lResult, _, _ = pDefWindowProc.Call(
uintptr(hWnd),
uintptr(message),

View file

@ -14,7 +14,7 @@ As this is a preview release, you should expect a few bugs here and there. If
you run into a problem you can reach out on
[Discord](https://discord.gg/ollama), or file an
[issue](https://github.com/ollama/ollama/issues).
Logs will be often be helpful in dianosing the problem (see
Logs will often be helpful in dianosing the problem (see
[Troubleshooting](#troubleshooting) below)
## System Requirements

View file

@ -60,6 +60,7 @@ function buildOllama() {
/csp "Google Cloud KMS Provider" /kc ${env:KEY_CONTAINER} ollama.exe
if ($LASTEXITCODE -ne 0) { exit($LASTEXITCODE)}
}
cp .\ollama.exe .\dist\ollama-windows-amd64.exe
}
function buildApp() {