diff --git a/.gitignore b/.gitignore
index b5c9244..43ce481 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,3 +10,7 @@ cmd/vpnapp/resource.syso
.navis-webview/
navis-update.bat
Navis.exe.new
+Navis-pending.exe
+*.bak
+Navis.exe.bak
+
diff --git a/README.md b/README.md
index ffa529f..4567fb9 100644
--- a/README.md
+++ b/README.md
@@ -205,3 +205,16 @@ CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o dist/navis-release/darwin-amd
## Купить доступ
https://evilfox.win/
+
+## Антивирусы (ложные срабатывания)
+
+Некоторые AV (Kaspersky, Microsoft Wacatac.B!ml, Ikarus Trojan.WinGo.Agent и др.) часто помечают **любые** Go-бинарники с сетью и сменой системного прокси.
+
+В 1.7.0 уменьшили «подозрительные» паттерны:
+- нет скрытой загрузки cores при старте;
+- нет `.bat`-самозамены с `del /f` + hidden detached `cmd`;
+- обновление через `Navis-pending.exe` + явный флаг;
+- Windows application manifest (`asInvoker`);
+- metadata компании EvilFox / Product Navis.
+
+Если Defender/KAV ругается: добавьте `Navis.exe` в исключения или отправьте файл как False Positive вендору. Надёжнее всего — подпись Authenticode (code signing certificate).
diff --git a/assets/app.manifest b/assets/app.manifest
new file mode 100644
index 0000000..4c7a87c
--- /dev/null
+++ b/assets/app.manifest
@@ -0,0 +1,32 @@
+
+
+
+ Navis — official NaiveProxy / Hysteria 2 client
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true/pm
+ PerMonitorV2
+ true
+
+
+
diff --git a/build.bat b/build.bat
index c18d0d2..9374f1e 100644
--- a/build.bat
+++ b/build.bat
@@ -11,14 +11,14 @@ if errorlevel 1 (
go install github.com/josephspurrier/goversioninfo/cmd/goversioninfo@latest
)
-goversioninfo -icon assets\navis.ico -o cmd\vpnapp\resource.syso versioninfo.json
+goversioninfo -64 -icon assets\navis.ico -manifest assets\app.manifest -o cmd\vpnapp\resource.syso versioninfo.json
if errorlevel 1 exit /b 1
echo Building Navis GUI and CLI...
-go build -ldflags="-H windowsgui -s -w" -o Navis.exe ./cmd/vpnapp
+go build -ldflags="-H windowsgui -s -w" -trimpath -o Navis.exe ./cmd/vpnapp
if errorlevel 1 exit /b 1
-go build -ldflags="-s -w" -o vpnclient.exe ./cmd/vpnclient
+go build -ldflags="-s -w" -trimpath -o vpnclient.exe ./cmd/vpnclient
if errorlevel 1 exit /b 1
echo.
diff --git a/cmd/vpnapp/main_windows.go b/cmd/vpnapp/main_windows.go
index 5af619e..75bf8bc 100644
--- a/cmd/vpnapp/main_windows.go
+++ b/cmd/vpnapp/main_windows.go
@@ -8,11 +8,9 @@ import (
"fmt"
"log"
"os"
- "os/exec"
"path/filepath"
"strings"
"sync"
- "syscall"
"time"
"unsafe"
@@ -59,6 +57,10 @@ type uiState struct {
}
func main() {
+ if update.MaybeFinishUpdate(os.Args[1:]) {
+ return
+ }
+
log.SetFlags(log.LstdFlags | log.Lshortfile)
cfgPath, err := config.LocateConfig()
@@ -95,9 +97,7 @@ func main() {
dataPath := filepath.Join(filepath.Dir(cfgPath), ".navis-webview")
_ = os.MkdirAll(dataPath, 0o755)
- go func() {
- _, _ = mgr.EnsureAllCores()
- }()
+ // Do NOT auto-download cores on startup — silent network+write looks like malware to AV.
w := webview2.NewWithOptions(webview2.WebViewOptions{
Debug: false,
@@ -373,18 +373,7 @@ func openURL(raw string) error {
default:
return fmt.Errorf("разрешена только ссылка evilfox.win")
}
- if err := shellOpen(raw); err == nil {
- return nil
- }
- // Fallbacks when ShellExecute is blocked by policy.
- cmd := exec.Command("cmd", "/c", "start", "", raw)
- cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
- if err := cmd.Start(); err == nil {
- return nil
- }
- cmd = exec.Command("rundll32", "url.dll,FileProtocolHandler", raw)
- cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
- return cmd.Start()
+ return shellOpen(raw)
}
func shellOpen(raw string) error {
diff --git a/dist/navis-release/Navis.exe b/dist/navis-release/Navis.exe
index 38e750f..9e5f853 100644
Binary files a/dist/navis-release/Navis.exe and b/dist/navis-release/Navis.exe differ
diff --git a/dist/navis-release/darwin-amd64/Navis b/dist/navis-release/darwin-amd64/Navis
index 8849b0d..8c4cf70 100644
Binary files a/dist/navis-release/darwin-amd64/Navis and b/dist/navis-release/darwin-amd64/Navis differ
diff --git a/dist/navis-release/darwin-amd64/Navis.app.zip b/dist/navis-release/darwin-amd64/Navis.app.zip
index a2e8e59..75b00be 100644
Binary files a/dist/navis-release/darwin-amd64/Navis.app.zip and b/dist/navis-release/darwin-amd64/Navis.app.zip differ
diff --git a/dist/navis-release/darwin-amd64/Navis.dmg b/dist/navis-release/darwin-amd64/Navis.dmg
index e25b0a3..8e3de81 100644
Binary files a/dist/navis-release/darwin-amd64/Navis.dmg and b/dist/navis-release/darwin-amd64/Navis.dmg differ
diff --git a/dist/navis-release/darwin-arm64/Navis b/dist/navis-release/darwin-arm64/Navis
index dd309ec..09c3e4b 100644
Binary files a/dist/navis-release/darwin-arm64/Navis and b/dist/navis-release/darwin-arm64/Navis differ
diff --git a/dist/navis-release/darwin-arm64/Navis.app.zip b/dist/navis-release/darwin-arm64/Navis.app.zip
index b034820..200a359 100644
Binary files a/dist/navis-release/darwin-arm64/Navis.app.zip and b/dist/navis-release/darwin-arm64/Navis.app.zip differ
diff --git a/dist/navis-release/darwin-arm64/Navis.dmg b/dist/navis-release/darwin-arm64/Navis.dmg
index a6bc87c..ed91dd0 100644
Binary files a/dist/navis-release/darwin-arm64/Navis.dmg and b/dist/navis-release/darwin-arm64/Navis.dmg differ
diff --git a/dist/navis-release/update.json b/dist/navis-release/update.json
index 5a3f878..67e143c 100644
--- a/dist/navis-release/update.json
+++ b/dist/navis-release/update.json
@@ -1,38 +1,38 @@
{
- "version": "1.6.1",
- "notes": "Фикс URL подписки: кнопка ↻ снова работает, сообщения об ошибке/успехе видны, лучше парсинг base64/Clash",
+ "version": "1.7.0",
+ "notes": "Меньше ложных срабатываний AV: без bat-апдейтера и тихой загрузки cores; Windows manifest; metadata EvilFox",
"platform": "windows-amd64",
"os": "windows",
"arch": "amd64",
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/Navis.exe",
- "sha256": "b836310af1b946c98d5d84787266d79978cb6d2a45e360c9fc5cb3a0a89059e4",
+ "sha256": "8bb8bab990292be66f169dc0a23f0aaff45cf349b6c6b5cfbef763f55cfe0d4d",
"mandatory": false,
"platforms": {
"windows-amd64": {
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/Navis.exe",
- "sha256": "b836310af1b946c98d5d84787266d79978cb6d2a45e360c9fc5cb3a0a89059e4",
+ "sha256": "8bb8bab990292be66f169dc0a23f0aaff45cf349b6c6b5cfbef763f55cfe0d4d",
"os": "windows",
"arch": "amd64"
},
"darwin-arm64": {
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis",
- "sha256": "94a39a127073ee299902026fe0be6f35506663fb20b9d9dde73f8f7732b1c079",
+ "sha256": "3e544461c1ce8ec3b508639cb549a759b773da38517c98c9ca634faaf09a601c",
"os": "darwin",
"arch": "arm64",
"dmg_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis.dmg",
- "dmg_sha256": "1880a4bac8f52e5ea0ed4f5ed6a6d796f492347a7bb1b0565b6766859839d04a",
+ "dmg_sha256": "39e88c985867ce6ef37deb00d87e1c6669cfbc8b9f8f0589d11a3f32036a5258",
"zip_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis.app.zip",
- "zip_sha256": "16711d3c0544806eefa0ca29b0d2c78b9f159c44e4e526cf05ce9ec1aaf82af9"
+ "zip_sha256": "213fd7563e068f60a1ae2504c6e48171b9f9e3f2fe3c14ecad75ed809fa05d06"
},
"darwin-amd64": {
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis",
- "sha256": "580005bbdaeef92ae6384be7946cef103c45b1150473185bdf70538d77e3b545",
+ "sha256": "f40a711108e78bfa1a944a1d4946549aba32cb5e00ef9035be352810c700807c",
"os": "darwin",
"arch": "amd64",
"dmg_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis.dmg",
- "dmg_sha256": "d80bd24e467886db6fd8486f5e209cb835531b2665bac953267d0fee959dd9c0",
+ "dmg_sha256": "c70fe7feb000eec34c0fe4ef2d05565dd0285c0c4f18a264ecad540d2c0878db",
"zip_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis.app.zip",
- "zip_sha256": "d6e9876ce1a7331f9fd9f8bece86a6bce55a48d874c6e40d22292653029dc486"
+ "zip_sha256": "5b3e3fea5aef4ac962c18a190c1943c7cfd5357ea233abbdec1d26007e1e6eb4"
}
}
}
diff --git a/dist/update.json b/dist/update.json
index 5a3f878..67e143c 100644
--- a/dist/update.json
+++ b/dist/update.json
@@ -1,38 +1,38 @@
{
- "version": "1.6.1",
- "notes": "Фикс URL подписки: кнопка ↻ снова работает, сообщения об ошибке/успехе видны, лучше парсинг base64/Clash",
+ "version": "1.7.0",
+ "notes": "Меньше ложных срабатываний AV: без bat-апдейтера и тихой загрузки cores; Windows manifest; metadata EvilFox",
"platform": "windows-amd64",
"os": "windows",
"arch": "amd64",
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/Navis.exe",
- "sha256": "b836310af1b946c98d5d84787266d79978cb6d2a45e360c9fc5cb3a0a89059e4",
+ "sha256": "8bb8bab990292be66f169dc0a23f0aaff45cf349b6c6b5cfbef763f55cfe0d4d",
"mandatory": false,
"platforms": {
"windows-amd64": {
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/Navis.exe",
- "sha256": "b836310af1b946c98d5d84787266d79978cb6d2a45e360c9fc5cb3a0a89059e4",
+ "sha256": "8bb8bab990292be66f169dc0a23f0aaff45cf349b6c6b5cfbef763f55cfe0d4d",
"os": "windows",
"arch": "amd64"
},
"darwin-arm64": {
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis",
- "sha256": "94a39a127073ee299902026fe0be6f35506663fb20b9d9dde73f8f7732b1c079",
+ "sha256": "3e544461c1ce8ec3b508639cb549a759b773da38517c98c9ca634faaf09a601c",
"os": "darwin",
"arch": "arm64",
"dmg_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis.dmg",
- "dmg_sha256": "1880a4bac8f52e5ea0ed4f5ed6a6d796f492347a7bb1b0565b6766859839d04a",
+ "dmg_sha256": "39e88c985867ce6ef37deb00d87e1c6669cfbc8b9f8f0589d11a3f32036a5258",
"zip_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis.app.zip",
- "zip_sha256": "16711d3c0544806eefa0ca29b0d2c78b9f159c44e4e526cf05ce9ec1aaf82af9"
+ "zip_sha256": "213fd7563e068f60a1ae2504c6e48171b9f9e3f2fe3c14ecad75ed809fa05d06"
},
"darwin-amd64": {
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis",
- "sha256": "580005bbdaeef92ae6384be7946cef103c45b1150473185bdf70538d77e3b545",
+ "sha256": "f40a711108e78bfa1a944a1d4946549aba32cb5e00ef9035be352810c700807c",
"os": "darwin",
"arch": "amd64",
"dmg_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis.dmg",
- "dmg_sha256": "d80bd24e467886db6fd8486f5e209cb835531b2665bac953267d0fee959dd9c0",
+ "dmg_sha256": "c70fe7feb000eec34c0fe4ef2d05565dd0285c0c4f18a264ecad540d2c0878db",
"zip_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis.app.zip",
- "zip_sha256": "d6e9876ce1a7331f9fd9f8bece86a6bce55a48d874c6e40d22292653029dc486"
+ "zip_sha256": "5b3e3fea5aef4ac962c18a190c1943c7cfd5357ea233abbdec1d26007e1e6eb4"
}
}
}
diff --git a/internal/protocols/hysteria2/sys_windows.go b/internal/protocols/hysteria2/sys_windows.go
index 1a581c4..6b103fd 100644
--- a/internal/protocols/hysteria2/sys_windows.go
+++ b/internal/protocols/hysteria2/sys_windows.go
@@ -8,5 +8,6 @@ import (
)
func applySysProcAttr(cmd *exec.Cmd) {
- cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
+ const createNoWindow = 0x08000000
+ cmd.SysProcAttr = &syscall.SysProcAttr{CreationFlags: createNoWindow}
}
diff --git a/internal/protocols/naive/sys_windows.go b/internal/protocols/naive/sys_windows.go
index 69ece8b..dd771ad 100644
--- a/internal/protocols/naive/sys_windows.go
+++ b/internal/protocols/naive/sys_windows.go
@@ -8,5 +8,7 @@ import (
)
func applySysProcAttr(cmd *exec.Cmd) {
- cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
+ // CREATE_NO_WINDOW — quieter than HideWindow for console child processes.
+ const createNoWindow = 0x08000000
+ cmd.SysProcAttr = &syscall.SysProcAttr{CreationFlags: createNoWindow}
}
diff --git a/internal/sysproxy/windows.go b/internal/sysproxy/windows.go
index 694d87b..484782a 100644
--- a/internal/sysproxy/windows.go
+++ b/internal/sysproxy/windows.go
@@ -143,12 +143,14 @@ func notifyInternetSettingsChanged() error {
func setWinHTTPProxy(httpHostPort string) error {
cmd := exec.Command("netsh", "winhttp", "set", "proxy", httpHostPort,
"bypass-list=localhost;127.*;10.*;192.168.*;")
- cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
+ const createNoWindow = 0x08000000
+ cmd.SysProcAttr = &syscall.SysProcAttr{CreationFlags: createNoWindow}
return cmd.Run()
}
func resetWinHTTPProxy() error {
cmd := exec.Command("netsh", "winhttp", "reset", "proxy")
- cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
+ const createNoWindow = 0x08000000
+ cmd.SysProcAttr = &syscall.SysProcAttr{CreationFlags: createNoWindow}
return cmd.Run()
}
diff --git a/internal/update/update.go b/internal/update/update.go
index 81a3417..04b8acc 100644
--- a/internal/update/update.go
+++ b/internal/update/update.go
@@ -17,7 +17,7 @@ import (
)
// CurrentVersion is the shipped client version.
-const CurrentVersion = "1.6.1"
+const CurrentVersion = "1.7.0"
// DefaultManifestURL is the update feed (hosted in the project git repo).
const DefaultManifestURL = "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/update.json"
diff --git a/internal/update/update_stub.go b/internal/update/update_stub.go
new file mode 100644
index 0000000..76a7181
--- /dev/null
+++ b/internal/update/update_stub.go
@@ -0,0 +1,9 @@
+//go:build !windows
+
+package update
+
+// MaybeFinishUpdate is Windows-only.
+func MaybeFinishUpdate(args []string) bool {
+ _ = args
+ return false
+}
diff --git a/internal/update/update_windows.go b/internal/update/update_windows.go
index 989b2b3..97126f7 100644
--- a/internal/update/update_windows.go
+++ b/internal/update/update_windows.go
@@ -5,46 +5,116 @@ package update
import (
"context"
"fmt"
+ "io"
"os"
"os/exec"
"path/filepath"
+ "strconv"
"syscall"
+ "time"
+
+ "golang.org/x/sys/windows"
)
-// Apply downloads the new exe and schedules replacement after exit (Windows).
+const finishUpdateFlag = "--navis-finish-update"
+
+// Apply downloads the new exe and starts it to replace the running binary after exit.
+// Avoids writing .bat self-replacer scripts (common AV false-positive pattern).
func Apply(ctx context.Context, manifestURL string) (string, error) {
latest, _, _, exe, tmp, err := prepareDownload(ctx, manifestURL)
if err != nil {
return "", err
}
- dir := filepath.Dir(exe)
- bat := filepath.Join(dir, "navis-update.bat")
-
- script := "@echo off\r\n" +
- "setlocal EnableExtensions\r\n" +
- "cd /d \"" + dir + "\"\r\n" +
- "set \"EXE=" + exe + "\"\r\n" +
- "set \"NEW=" + tmp + "\"\r\n" +
- ":wait\r\n" +
- "ping -n 2 127.0.0.1 >nul\r\n" +
- "del /f /q \"%EXE%\" >nul 2>&1\r\n" +
- "if exist \"%EXE%\" goto wait\r\n" +
- "move /y \"%NEW%\" \"%EXE%\" >nul\r\n" +
- "if not exist \"%EXE%\" exit /b 1\r\n" +
- "start \"\" \"%EXE%\"\r\n" +
- "exit /b 0\r\n"
- if err := os.WriteFile(bat, []byte(script), 0o755); err != nil {
- return "", err
+ pending := filepath.Join(filepath.Dir(exe), "Navis-pending.exe")
+ _ = os.Remove(pending)
+ if err := os.Rename(tmp, pending); err != nil {
+ if err2 := copyFile(tmp, pending); err2 != nil {
+ _ = os.Remove(tmp)
+ return "", err2
+ }
+ _ = os.Remove(tmp)
}
+ _ = os.Chmod(pending, 0o755)
- cmd := exec.Command("cmd.exe", "/C", bat)
- cmd.Dir = dir
- cmd.SysProcAttr = &syscall.SysProcAttr{
- HideWindow: true,
- CreationFlags: 0x00000008 | 0x00000200, // DETACHED_PROCESS | CREATE_NEW_PROCESS_GROUP
- }
+ cmd := exec.Command(pending, finishUpdateFlag, strconv.Itoa(os.Getpid()), exe)
+ cmd.Dir = filepath.Dir(exe)
+ cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: false}
if err := cmd.Start(); err != nil {
return "", fmt.Errorf("start updater: %w", err)
}
return latest, nil
}
+
+// MaybeFinishUpdate handles: Navis-pending.exe --navis-finish-update
+// Returns true if this process was the updater and should exit.
+func MaybeFinishUpdate(args []string) bool {
+ if len(args) < 3 || args[0] != finishUpdateFlag {
+ return false
+ }
+ pid, err := strconv.Atoi(args[1])
+ if err != nil || pid <= 0 {
+ return true
+ }
+ target := args[2]
+ self, err := os.Executable()
+ if err != nil {
+ return true
+ }
+ self, _ = filepath.Abs(self)
+ target, _ = filepath.Abs(target)
+
+ waitPIDExit(uint32(pid), 90*time.Second)
+ time.Sleep(500 * time.Millisecond)
+
+ backup := target + ".bak"
+ _ = os.Remove(backup)
+ if err := os.Rename(target, backup); err != nil {
+ // Still locked — wait a bit more.
+ time.Sleep(2 * time.Second)
+ _ = os.Rename(target, backup)
+ }
+ if err := copyFile(self, target); err != nil {
+ _ = os.Rename(backup, target)
+ return true
+ }
+ _ = os.Chmod(target, 0o755)
+ _ = os.Remove(backup)
+ _ = os.Remove(self)
+
+ cmd := exec.Command(target)
+ cmd.Dir = filepath.Dir(target)
+ _ = cmd.Start()
+ return true
+}
+
+func waitPIDExit(pid uint32, timeout time.Duration) {
+ const synchronize = 0x00100000
+ h, err := windows.OpenProcess(synchronize, false, pid)
+ if err != nil {
+ time.Sleep(1500 * time.Millisecond)
+ return
+ }
+ defer windows.CloseHandle(h)
+ ms := uint32(timeout / time.Millisecond)
+ if ms == 0 {
+ ms = 1000
+ }
+ _, _ = windows.WaitForSingleObject(h, ms)
+}
+
+func copyFile(src, dst string) error {
+ in, err := os.Open(src)
+ if err != nil {
+ return err
+ }
+ defer in.Close()
+ out, err := os.OpenFile(dst, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0o755)
+ if err != nil {
+ return err
+ }
+ defer out.Close()
+ if _, err := io.Copy(out, in); err != nil {
+ return err
+ }
+ return out.Close()
+}
diff --git a/server/update.json b/server/update.json
index 5a3f878..67e143c 100644
--- a/server/update.json
+++ b/server/update.json
@@ -1,38 +1,38 @@
{
- "version": "1.6.1",
- "notes": "Фикс URL подписки: кнопка ↻ снова работает, сообщения об ошибке/успехе видны, лучше парсинг base64/Clash",
+ "version": "1.7.0",
+ "notes": "Меньше ложных срабатываний AV: без bat-апдейтера и тихой загрузки cores; Windows manifest; metadata EvilFox",
"platform": "windows-amd64",
"os": "windows",
"arch": "amd64",
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/Navis.exe",
- "sha256": "b836310af1b946c98d5d84787266d79978cb6d2a45e360c9fc5cb3a0a89059e4",
+ "sha256": "8bb8bab990292be66f169dc0a23f0aaff45cf349b6c6b5cfbef763f55cfe0d4d",
"mandatory": false,
"platforms": {
"windows-amd64": {
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/Navis.exe",
- "sha256": "b836310af1b946c98d5d84787266d79978cb6d2a45e360c9fc5cb3a0a89059e4",
+ "sha256": "8bb8bab990292be66f169dc0a23f0aaff45cf349b6c6b5cfbef763f55cfe0d4d",
"os": "windows",
"arch": "amd64"
},
"darwin-arm64": {
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis",
- "sha256": "94a39a127073ee299902026fe0be6f35506663fb20b9d9dde73f8f7732b1c079",
+ "sha256": "3e544461c1ce8ec3b508639cb549a759b773da38517c98c9ca634faaf09a601c",
"os": "darwin",
"arch": "arm64",
"dmg_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis.dmg",
- "dmg_sha256": "1880a4bac8f52e5ea0ed4f5ed6a6d796f492347a7bb1b0565b6766859839d04a",
+ "dmg_sha256": "39e88c985867ce6ef37deb00d87e1c6669cfbc8b9f8f0589d11a3f32036a5258",
"zip_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-arm64/Navis.app.zip",
- "zip_sha256": "16711d3c0544806eefa0ca29b0d2c78b9f159c44e4e526cf05ce9ec1aaf82af9"
+ "zip_sha256": "213fd7563e068f60a1ae2504c6e48171b9f9e3f2fe3c14ecad75ed809fa05d06"
},
"darwin-amd64": {
"url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis",
- "sha256": "580005bbdaeef92ae6384be7946cef103c45b1150473185bdf70538d77e3b545",
+ "sha256": "f40a711108e78bfa1a944a1d4946549aba32cb5e00ef9035be352810c700807c",
"os": "darwin",
"arch": "amd64",
"dmg_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis.dmg",
- "dmg_sha256": "d80bd24e467886db6fd8486f5e209cb835531b2665bac953267d0fee959dd9c0",
+ "dmg_sha256": "c70fe7feb000eec34c0fe4ef2d05565dd0285c0c4f18a264ecad540d2c0878db",
"zip_url": "https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/darwin-amd64/Navis.app.zip",
- "zip_sha256": "d6e9876ce1a7331f9fd9f8bece86a6bce55a48d874c6e40d22292653029dc486"
+ "zip_sha256": "5b3e3fea5aef4ac962c18a190c1943c7cfd5357ea233abbdec1d26007e1e6eb4"
}
}
}
diff --git a/versioninfo.json b/versioninfo.json
index d1240af..7b296dd 100644
--- a/versioninfo.json
+++ b/versioninfo.json
@@ -1,7 +1,7 @@
{
"FixedFileInfo": {
- "FileVersion": { "Major": 1, "Minor": 6, "Patch": 1, "Build": 0 },
- "ProductVersion": { "Major": 1, "Minor": 6, "Patch": 1, "Build": 0 },
+ "FileVersion": { "Major": 1, "Minor": 7, "Patch": 0, "Build": 0 },
+ "ProductVersion": { "Major": 1, "Minor": 7, "Patch": 0, "Build": 0 },
"FileFlagsMask": "3f",
"FileFlags": "00",
"FileOS": "40004",
@@ -9,13 +9,15 @@
"FileSubType": "00"
},
"StringFileInfo": {
- "CompanyName": "Navis",
- "FileDescription": "Navis — NaiveProxy / Hysteria 2 client for Windows and macOS",
- "FileVersion": "1.6.1.0",
+ "CompanyName": "EvilFox",
+ "FileDescription": "Navis VPN client (NaiveProxy / Hysteria 2)",
+ "FileVersion": "1.7.0.0",
"InternalName": "Navis",
+ "LegalCopyright": "Copyright (c) EvilFox",
"OriginalFilename": "Navis.exe",
"ProductName": "Navis",
- "ProductVersion": "1.6.1.0"
+ "ProductVersion": "1.7.0.0",
+ "Comments": "Open-source VPN/proxy client. https://evilfox.win/"
},
"VarFileInfo": {
"Translation": {
@@ -23,5 +25,6 @@
"CharsetID": "04B0"
}
},
- "IconPath": "assets/navis.ico"
+ "IconPath": "assets/navis.ico",
+ "ManifestPath": "assets/app.manifest"
}