From cbc777e065c6bb7c46899d9353954977c3ee9143 Mon Sep 17 00:00:00 2001 From: pcodedynamics Date: Tue, 29 Sep 2026 22:16:35 +0700 Subject: [PATCH] feat: add Microsoft Store downloads and unified store cards --- README.md | 1 + public/llms.txt | 11 +- scripts/check_seo.py | 11 + src/components/DesktopPlatform.astro | 77 ++++- src/components/HomeExperience.astro | 340 +++++++++++++++++-- src/components/MicrosoftStoreButton.astro | 5 + src/components/StoreDownloadButton.astro | 122 +++++++ src/components/layout/Footer.astro | 5 + src/content/blog/cai-funput-windows-10-11.md | 99 +++--- src/content/blog/funput-la-gi.md | 3 +- src/lib/constants.ts | 1 + src/lib/desktop.ts | 30 +- src/lib/platforms.ts | 10 +- src/lib/seo.ts | 14 +- 14 files changed, 628 insertions(+), 101 deletions(-) create mode 100644 src/components/MicrosoftStoreButton.astro create mode 100644 src/components/StoreDownloadButton.astro diff --git a/README.md b/README.md index c85dd53..5ebab8a 100644 --- a/README.md +++ b/README.md @@ -68,6 +68,7 @@ Then open [http://localhost:8080](http://localhost:8080). - **Main repository:** [github.com/Funput/Funput](https://github.com/Funput/Funput) - **Docs:** [docs.funput.app](https://docs.funput.app) +- **Windows (Microsoft Store):** [Funput on Microsoft Store](https://apps.microsoft.com/store/detail/9NR3WL5PD4ZS) - **Releases:** [github.com/Funput/Funput/releases](https://github.com/Funput/Funput/releases) ## Contributing diff --git a/public/llms.txt b/public/llms.txt index b16c3d2..0f108b1 100644 --- a/public/llms.txt +++ b/public/llms.txt @@ -4,7 +4,7 @@ ## Summary -Funput (Funput IME) is an open-source Vietnamese input method. It lets people type Vietnamese with Telex or VNI on iOS, Android, macOS, Windows, and Linux. Desktop builds are available from GitHub Releases; iOS is on the App Store and Android is on Google Play. +Funput (Funput IME) is an open-source Vietnamese input method. It lets people type Vietnamese with Telex or VNI on iOS, Android, macOS, Windows, and Linux. Windows is available on Microsoft Store; desktop builds are also available from GitHub Releases. iOS is on the App Store and Android is on Google Play. ## Platforms @@ -13,7 +13,7 @@ Funput runs on: - iOS — Vietnamese keyboard for iPhone and iPad; requires iOS/iPadOS 18.6+; available on the App Store - Android — Vietnamese keyboard for phones and tablets; requires Android 8.0 (API 26)+; available on Google Play - macOS — native input method; requires macOS 26 (Tahoe)+; ready to download -- Windows — native input method; requires Windows 10 version 1809+ or Windows 11; ready to download +- Windows — native input method; requires Windows 10 version 1809+ or Windows 11; available on Microsoft Store (ID 9NR3WL5PD4ZS), with a portable build also on GitHub - Linux — native input method (Fcitx5 and IBus); install guide: https://docs.funput.app/docs/install/linux/ ## Features @@ -28,14 +28,14 @@ Funput runs on: ## Official app pages - [Funput for macOS](https://funput.app/macos/): Vietnamese input method for macOS 26+, Apple Silicon and Intel; .pkg or .app.zip. -- [Funput for Windows](https://funput.app/windows/): Vietnamese input method for Windows 10 version 1809+ and Windows 11; portable x86-64 .exe. +- [Funput for Windows](https://funput.app/windows/): Vietnamese input method for Windows 10 version 1809+ and Windows 11; install and update through Microsoft Store, with an optional portable x86-64 .exe. - [Funput for Linux](https://funput.app/linux/): Vietnamese input method for Fcitx5 and IBus; Ubuntu, Debian, Fedora, openSUSE and Arch on x86-64. - [Funput for iOS](https://funput.app/ios/): Vietnamese keyboard for iPhone and iPad; App Store ID 6788829996. - [Funput for Android](https://funput.app/android/): Vietnamese keyboard for phones and tablets; Google Play package app.funput.funput. - [Introducing Funput](https://funput.app/blog/funput-la-gi/): Vietnamese introduction to Funput, Telex/VNI, supported devices and official downloads. - [Telex, VNI and advanced Telex](https://funput.app/blog/telex-vni-va-telex-nang-cao/): Vietnamese typing guide with key mappings, examples and Funput advanced Telex shortcuts. - [Set up Funput on iPhone and iPad](https://funput.app/blog/cach-bat-ban-phim-funput-iphone-ipad/): Illustrated keyboard setup, Full Access explanation and troubleshooting. -- [Install Funput on Windows](https://funput.app/blog/cai-funput-windows-10-11/): Windows 10/11 portable setup, typing methods, system tray, troubleshooting and updates. +- [Install Funput on Windows](https://funput.app/blog/cai-funput-windows-10-11/): Windows 10/11 Microsoft Store installation, typing methods, system tray, troubleshooting, Store updates and optional portable setup. - [Blog](https://funput.app/blog/): Published updates from Funput. - [Move from Windows to Linux](https://funput.app/blog/chuyen-windows-sang-linux-go-tieng-viet/): Keep familiar Telex/VNI typing with Funput, configure Fcitx5 or IBus and verify everyday workflows. - [A modern Vietnamese input method for Linux](https://funput.app/blog/bo-go-tieng-viet-linux-hien-dai/): Funput features, package updates, maintenance evaluation and practical migration checks. @@ -50,7 +50,8 @@ Funput runs on: - Website: https://funput.app - Privacy: https://funput.app/privacy/ - Documentation: https://docs.funput.app/ -- Download (desktop): https://github.com/Funput/Funput/releases +- Microsoft Store (Windows): https://apps.microsoft.com/store/detail/9NR3WL5PD4ZS +- Download (desktop / portable): https://github.com/Funput/Funput/releases - App Store (iOS): https://apps.apple.com/vn/app/id6788829996 - Google Play (Android): https://play.google.com/store/apps/details?id=app.funput.funput - Source: https://github.com/Funput/Funput diff --git a/scripts/check_seo.py b/scripts/check_seo.py index acd9642..243203f 100644 --- a/scripts/check_seo.py +++ b/scripts/check_seo.py @@ -138,6 +138,17 @@ def handle_endtag(self, tag): assert home_app == app, f"App identity differs across pages: {platform}" assert f"/{platform}/" in pages["/"].links assert f"{SITE}/{platform}/" in (DIST / "llms.txt").read_text() +windows_store = "https://apps.microsoft.com/store/detail/9NR3WL5PD4ZS" +windows_page = pages["/windows/"] +windows_app = next(node for node in windows_page.schemas if node.get("@id") == f"{SITE}/windows/#app") +assert windows_app["downloadUrl"] == windows_app["installUrl"] == windows_store +assert windows_app["offers"]["url"] == windows_store +assert windows_app["identifier"] == "9NR3WL5PD4ZS" +assert windows_store in windows_app["sameAs"] +assert "Microsoft Store" in windows_page.meta["description"] +for route in ("/", "/windows/", "/blog/cai-funput-windows-10-11/", "/blog/funput-la-gi/"): + assert windows_store in pages[route].links, f"Missing Microsoft Store link: {route}" +assert windows_store in (DIST / "llms.txt").read_text() for platform in ("macos", "windows", "linux", "ios", "android"): page = pages[f"/{platform}/"] app_id = f"{SITE}/{platform}/#app" diff --git a/src/components/DesktopPlatform.astro b/src/components/DesktopPlatform.astro index 1cfc1c2..c21d304 100644 --- a/src/components/DesktopPlatform.astro +++ b/src/components/DesktopPlatform.astro @@ -1,6 +1,7 @@ --- import BaseLayout from '../layouts/BaseLayout.astro'; import PlatformLinks from './PlatformLinks.astro'; +import MicrosoftStoreButton from './MicrosoftStoreButton.astro'; import { PLATFORMS } from '../lib/platforms'; import { DESKTOP } from '../lib/desktop'; import { platformPageJsonLd } from '../lib/seo'; @@ -27,6 +28,11 @@ const docs = `${links.INSTALL_DOCS_URL}${id}/`;

FUNPUT / {platform.name}

+ {id === 'windows' && ( +

+ Đã có trên Microsoft Store +

+ )}

{content.headline}
@@ -34,10 +40,19 @@ const docs = `${links.INSTALL_DOCS_URL}${id}/`; Bộ gõ tiếng Việt cho {platform.name}

{content.lead}

- - {platform.ctaLabel} - - + {id === 'windows' ? ( + + ) : ( + + {platform.ctaLabel} + + + )}

Miễn phí · Mã nguồn mở · Telex & VNI

@@ -53,7 +68,11 @@ const docs = `${links.INSTALL_DOCS_URL}${id}/`; alt={platform.screenshotAlt} fetchpriority="high" /> -
Thiết kế riêng cho {platform.name}. Quen ngay từ lần gõ đầu.
+
+ {id === 'windows' + ? 'Thiết kế riêng cho Windows. Tải miễn phí trên Microsoft Store.' + : `Thiết kế riêng cho ${platform.name}. Quen ngay từ lần gõ đầu.`} +
@@ -81,6 +100,11 @@ const docs = `${links.INSTALL_DOCS_URL}${id}/`; Gõ vui mỗi ngày. Hướng dẫn cài đặt {platform.name} ↗ + {id === 'windows' && ( + + )}
    {content.steps.map(([title, body]) => ( @@ -104,6 +128,11 @@ const docs = `${links.INSTALL_DOCS_URL}${id}/`; ))}

    Funput là bộ gõ tiếng Việt miễn phí, phát hành theo giấy phép MIT.{' '} + {id === 'windows' && ( + <> + Tải trên Microsoft Store,{' '} + + )} Các bản phát hành,{' '} xem mã nguồn hoặc đọc{' '} chính sách quyền riêng tư. @@ -120,6 +149,42 @@ const docs = `${links.INSTALL_DOCS_URL}${id}/`; diff --git a/src/components/layout/Footer.astro b/src/components/layout/Footer.astro index 383b54c..83aca79 100644 --- a/src/components/layout/Footer.astro +++ b/src/components/layout/Footer.astro @@ -25,6 +25,11 @@ import { FUNPUT_CONSTANTS as links } from '../../lib/constants';

  1. Windows
  2. +
  3. + + Microsoft Store + +
  4. Linux
  5. diff --git a/src/content/blog/cai-funput-windows-10-11.md b/src/content/blog/cai-funput-windows-10-11.md index 4aac7df..fa56477 100644 --- a/src/content/blog/cai-funput-windows-10-11.md +++ b/src/content/blog/cai-funput-windows-10-11.md @@ -1,8 +1,9 @@ --- title: 'Cách cài Funput trên Windows 10 và 11' seoTitle: 'Cách cài Funput trên Windows 10, Windows 11 và gõ tiếng Việt' -description: 'Hướng dẫn tải Funput cho Windows, chạy bản .exe portable, chọn Telex, VNI hoặc Telex+ và xử lý khi chưa gõ được tiếng Việt. Có hướng dẫn cập nhật và khởi động cùng máy.' +description: 'Cài Funput miễn phí từ Microsoft Store trên Windows 10 và 11, chọn Telex, VNI hoặc Telex+. Hướng dẫn cập nhật qua Store và dùng bản portable khi cần.' pubDate: 2026-09-27T07:30:00Z +updatedDate: 2026-09-29 draft: false tags: - huong-dan @@ -10,9 +11,9 @@ tags: - cai-dat --- -Bạn muốn dùng Funput để gõ tiếng Việt trên Windows? Bản Windows được phát hành dưới dạng **một tệp `.exe` portable**: tải về, đặt vào thư mục bạn muốn giữ ứng dụng và mở lên. Bạn không cần thêm nguồn nhập như trên Mac, cũng không cần tìm bộ cài MSI. +**Funput đã có trên [Microsoft Store](https://apps.microsoft.com/store/detail/9NR3WL5PD4ZS).** Bạn có thể cài miễn phí trên Windows 10 và 11, mở từ menu Start và nhận bản cập nhật qua Store. -Bài này hướng dẫn từ lúc chọn tệp tải đến khi gõ được câu đầu tiên, cùng những điều cần biết về khay hệ thống, cập nhật và các trường hợp chưa gõ được dấu. +Bài này hướng dẫn từ lúc cài ứng dụng đến khi gõ được câu tiếng Việt đầu tiên, cùng những điều cần biết về khay hệ thống và cập nhật. Nếu cần dùng bản `.exe` portable, phần cuối bài có hướng dẫn riêng. ## Kiểm tra máy trước khi tải @@ -20,43 +21,21 @@ Funput hỗ trợ **Windows 10 từ phiên bản 1809 (build 17763) trở lên** Bạn có thể nhấn `Windows + R`, nhập `winver` rồi nhấn Enter để xem phiên bản Windows. Bản Funput này không yêu cầu cài thêm .NET hay WebView2. -Xem [trang Funput cho Windows](/windows/) để biết yêu cầu hệ thống và đường dẫn tải chính thức. Hướng dẫn dưới đây dành cho bản portable được mô tả trong [tài liệu cài đặt Windows của Funput](https://docs.funput.app/docs/install/windows/). +Xem [trang Funput cho Windows](/windows/) để biết yêu cầu hệ thống và đường dẫn tải chính thức. Bạn cũng có thể đọc [tài liệu cài đặt Windows của Funput](https://docs.funput.app/docs/install/windows/) để xem chi tiết từng cách cài. -## Bước 1: Tải đúng bản Funput cho Windows +## Bước 1: Cài Funput từ Microsoft Store -Mở [GitHub Releases chính thức của Funput](https://github.com/Funput/Funput/releases). Trong phần tệp đính kèm của bản phát hành, chọn **`Funput-.exe`**, trong đó `` là số phiên bản. - -Tệp `.exe.sha256` đi kèm dùng để kiểm tra tính toàn vẹn, không phải ứng dụng. Các tệp “Source code” là mã nguồn, không phải bản chạy dành cho người dùng Windows. - -Nếu muốn kiểm tra tệp vừa tải, mở PowerShell tại thư mục chứa tệp và chạy: - -```powershell -Get-FileHash .\Funput-*.exe -Algorithm SHA256 -``` +Mở [trang Funput chính thức trên Microsoft Store](https://apps.microsoft.com/store/detail/9NR3WL5PD4ZS). Chọn **Nhận / Get** hoặc **Cài đặt / Install** theo ngôn ngữ hiển thị. Nếu trình duyệt đề nghị mở ứng dụng Microsoft Store, tiếp tục trong Store để hoàn tất cài đặt. -So sánh giá trị `Hash` với nội dung tệp `.sha256` của đúng bản phát hành. Nếu không khớp, tải lại trước khi chạy. Checksum giúp phát hiện tệp sai hoặc hỏng; bạn vẫn cần lấy cả ứng dụng và checksum từ nguồn chính thức. +Bạn không cần tải tệp `.exe`, tạo thư mục riêng hoặc tự thay tệp ứng dụng khi dùng bản Store. -## Bước 2: Đặt ứng dụng vào thư mục cố định +## Bước 2: Mở Funput -Bạn có thể tạo thư mục **`%LOCALAPPDATA%\Programs\Funput\`** rồi chuyển tệp vừa tải vào đó. Để mở vị trí này, nhập `%LOCALAPPDATA%\Programs` vào thanh địa chỉ File Explorer; tạo thư mục `Programs` hoặc `Funput` nếu chưa có. +Sau khi cài xong, chọn **Mở / Open** trong Store hoặc tìm **Funput** trong menu Start. Làm theo hướng dẫn thiết lập lần đầu để chọn kiểu gõ. Biểu tượng Funput xuất hiện ở **khay hệ thống**, gần đồng hồ trên thanh tác vụ. -Một thư mục ổn định giúp bạn dễ tìm ứng dụng và tránh xóa nhầm khi dọn Downloads. Funput thường lưu `settings.json` cạnh tệp chạy khi thư mục đó cho phép ghi, nên hãy giữ cả thư mục thay vì chỉ giữ riêng tệp `.exe`. - -Nếu thư mục chứa ứng dụng chỉ đọc, cấu hình có thể được lưu dự phòng trong **`%APPDATA%\Funput\settings.json`**. Với nhu cầu thông thường, vị trí trong `%LOCALAPPDATA%` giúp ứng dụng lưu thiết lập bằng quyền tài khoản hiện tại. +Nếu đang dùng bản portable hoặc một bộ gõ tiếng Việt khác, hãy thoát bộ gõ đang chạy trước khi mở bản mới để tránh hai ứng dụng cùng xử lý phím. -## Bước 3: Mở Funput lần đầu - -Nhấp đúp tệp `.exe`. Lần đầu chạy, Funput hiển thị hướng dẫn thiết lập để bạn chọn kiểu gõ. Biểu tượng Funput xuất hiện ở **khay hệ thống**, khu vực gần đồng hồ trên thanh tác vụ. - -Có một chi tiết dễ khiến bạn bối rối: tệp **`Funput-.exe` sẽ được thay bằng `Funput.exe` trong cùng thư mục** ở lần chạy đầu. Ứng dụng khởi động lại từ tên cố định này và dọn tệp có số phiên bản. Đây là hành vi phục vụ khởi động cùng Windows và cập nhật. Từ lần sau, mở `Funput.exe`. - -### Nếu Windows hiện SmartScreen - -Theo tài liệu Funput hiện tại, bản Windows chưa ký Authenticode nên có thể gặp cảnh báo SmartScreen. Hãy kiểm tra nguồn tải và checksum trước khi quyết định chạy. Nếu đó là tệp bạn chủ động tải từ GitHub Releases chính thức và đã kiểm tra, hộp thoại có thể có lựa chọn **More info → Run anyway**. - -Không cần tắt SmartScreen hoặc phần mềm bảo vệ toàn hệ thống để dùng Funput. Nếu máy do công ty quản lý và chính sách không cho phép chạy, hãy liên hệ quản trị viên thay vì tìm cách vượt chính sách. - -## Bước 4: Chọn kiểu gõ và thử tiếng Việt +## Bước 3: Chọn kiểu gõ và thử tiếng Việt Nhấp trái biểu tượng Funput ở khay hệ thống để mở **Control Center**, bật chế độ tiếng Việt và chọn **Telex**, **Telex+** hoặc **VNI**. Bạn cũng có thể nhấp phải biểu tượng, chọn **Cài đặt…** rồi mở **Cách gõ**. @@ -82,10 +61,10 @@ Phím tắt chuyển tiếng Việt/tiếng Anh mặc định là **Ctrl + phím Bạn không cần giữ cửa sổ Cài đặt mở để gõ. Funput chạy nền ở khay hệ thống: - **Nhấp trái:** mở hoặc đóng Control Center để đổi nhanh chế độ và kiểu gõ. -- **Nhấp phải:** mở menu Cài đặt, Chuyển mã, Kiểm tra cập nhật hoặc Thoát. +- **Nhấp phải:** mở menu Cài đặt, Chuyển mã hoặc Thoát. Bản portable có thêm mục Kiểm tra cập nhật; bản Store cập nhật qua Microsoft Store. - **Không thấy biểu tượng:** mở vùng biểu tượng ẩn bằng mũi tên trên thanh tác vụ. -Nếu muốn Funput sẵn sàng mỗi lần bật máy, mở **Cài đặt → Tổng quan → Khởi động cùng Windows**. Nếu sau này chuyển `Funput.exe` sang thư mục khác, tắt rồi bật lại tùy chọn này để ứng dụng ghi nhận đường dẫn mới. +Nếu muốn Funput sẵn sàng mỗi lần bật máy, mở **Cài đặt → Tổng quan → Khởi động cùng Windows**. Với bản Store, nếu Windows đã tắt quyền khởi động, hãy kiểm tra **Settings → Apps → Startup**. Với bản portable, nếu chuyển `Funput.exe` sang thư mục khác, tắt rồi bật lại tùy chọn trong Funput để ghi nhận đường dẫn mới. ## Đã mở Funput nhưng chưa gõ được tiếng Việt? @@ -97,11 +76,11 @@ Nếu đang mở một bộ gõ tiếng Việt khác, hãy tạm thoát bộ gõ ### Không thấy cửa sổ hoặc biểu tượng Funput -Kiểm tra vùng biểu tượng ẩn gần đồng hồ. Có thể ứng dụng vẫn đang chạy nhưng Windows đã ẩn biểu tượng. Nếu mở `Funput.exe` lần nữa mà cửa sổ Cài đặt xuất hiện, đó cũng là dấu hiệu Funput đã chạy sẵn. +Kiểm tra vùng biểu tượng ẩn gần đồng hồ. Có thể ứng dụng vẫn đang chạy nhưng Windows đã ẩn biểu tượng. Nếu mở Funput từ menu Start (hoặc `Funput.exe` của bản portable) lần nữa mà cửa sổ Cài đặt xuất hiện, đó cũng là dấu hiệu Funput đã chạy sẵn. ### Gõ được trong Notepad nhưng không được ở ứng dụng quản trị -Windows hạn chế ứng dụng quyền thường đưa phím vào cửa sổ đang chạy với quyền Administrator. Nếu ứng dụng đích không cần quyền quản trị, hãy mở nó ở quyền thường. Khi thực sự cần gõ trong cửa sổ quản trị, tài liệu Funput hướng dẫn thoát Funput rồi mở `Funput.exe` bằng **Run as administrator**. Không cần chạy với quyền cao cho công việc thông thường. +Windows hạn chế ứng dụng quyền thường đưa phím vào cửa sổ đang chạy với quyền Administrator. Nếu ứng dụng đích không cần quyền quản trị, hãy mở nó ở quyền thường. Khi thực sự cần gõ trong cửa sổ quản trị, hãy xem [giới hạn quyền trên Windows](https://docs.funput.app/docs/install/windows/#known-limitations). Với bản portable, bạn có thể thoát rồi mở `Funput.exe` bằng **Run as administrator**. Không cần chạy với quyền cao cho công việc thông thường. ### Giao diện Windows 10 khác ảnh Windows 11 @@ -109,12 +88,50 @@ Cửa sổ Cài đặt trên Windows 10 dùng nền đục, còn hiệu ứng Mi ## Cập nhật và giữ lại cấu hình -Để tìm bản mới, nhấp phải biểu tượng Funput → **Kiểm tra cập nhật…**, hoặc mở **Cài đặt → Giới thiệu**. Funput hiện **không tự kiểm tra cập nhật nền**, nên bạn cần chủ động chọn mục này. +**Bản Microsoft Store:** mở Microsoft Store và kiểm tra bản cập nhật Funput trong phần quản lý ứng dụng / Thư viện. Bản này do Store quản lý cập nhật; bạn không cần tải hay thay `.exe` thủ công. Trong **Cài đặt → Giới thiệu**, Funput hiển thị “Cập nhật qua Microsoft Store”. + +**Bản portable:** chọn **Kiểm tra cập nhật…** từ menu khay hệ thống hoặc **Cài đặt → Giới thiệu**. Bản portable không tự kiểm tra cập nhật nền. Nếu cập nhật thủ công, tải `.exe` mới từ GitHub Releases, thoát Funput rồi đặt tệp mới cùng thư mục với `Funput.exe` và chạy tệp mới. + +Trước khi chuyển từ bản portable sang bản Store, chuyển máy hoặc gỡ ứng dụng, dùng **Cài đặt → Dữ liệu → Xuất cấu hình** nếu muốn giữ các thiết lập. Sau khi mở bản mới, nhập lại cấu hình từ mục Dữ liệu. + +## Tùy chọn: dùng bản portable + +Nếu cần một tệp chạy để mang theo hoặc không dùng Microsoft Store, bản portable vẫn có trên GitHub Releases. Các bước về thư mục, đổi tên tệp và SmartScreen dưới đây **chỉ dành cho bản portable**. -Nếu cập nhật thủ công, tải bản `.exe` mới từ GitHub Releases, thoát Funput rồi đặt tệp mới vào cùng thư mục với `Funput.exe` hiện tại và chạy tệp mới. Ứng dụng sẽ thay bản chạy và dọn tệp có số phiên bản theo hướng dẫn chính thức. +### Tải bản portable từ GitHub -Trước khi chuyển máy hoặc dọn thư mục ứng dụng, dùng **Cài đặt → Dữ liệu → Xuất cấu hình** nếu muốn giữ các thiết lập. Vì cấu hình thường nằm cùng ứng dụng, xóa cả thư mục có thể xóa luôn thiết lập của bạn. +Mở [GitHub Releases chính thức của Funput](https://github.com/Funput/Funput/releases). Trong phần tệp đính kèm của bản phát hành, chọn **`Funput-.exe`**, trong đó `` là số phiên bản. + +Tệp `.exe.sha256` đi kèm dùng để kiểm tra tính toàn vẹn, không phải ứng dụng. Các tệp “Source code” là mã nguồn, không phải bản chạy dành cho người dùng Windows. + +Nếu muốn kiểm tra tệp vừa tải, mở PowerShell tại thư mục chứa tệp và chạy: + +```powershell +Get-FileHash .\Funput-*.exe -Algorithm SHA256 +``` + +So sánh giá trị `Hash` với nội dung tệp `.sha256` của đúng bản phát hành. Nếu không khớp, tải lại trước khi chạy. Checksum giúp phát hiện tệp sai hoặc hỏng; bạn vẫn cần lấy cả ứng dụng và checksum từ nguồn chính thức. + +### Đặt ứng dụng vào thư mục cố định + +Bạn có thể tạo thư mục **`%LOCALAPPDATA%\Programs\Funput\`** rồi chuyển tệp vừa tải vào đó. Để mở vị trí này, nhập `%LOCALAPPDATA%\Programs` vào thanh địa chỉ File Explorer; tạo thư mục `Programs` hoặc `Funput` nếu chưa có. + +Một thư mục ổn định giúp bạn dễ tìm ứng dụng và tránh xóa nhầm khi dọn Downloads. Funput thường lưu `settings.json` cạnh tệp chạy khi thư mục đó cho phép ghi, nên hãy giữ cả thư mục thay vì chỉ giữ riêng tệp `.exe`. + +Nếu thư mục chứa ứng dụng chỉ đọc, cấu hình có thể được lưu dự phòng trong **`%APPDATA%\Funput\settings.json`**. Với nhu cầu thông thường, vị trí trong `%LOCALAPPDATA%` giúp ứng dụng lưu thiết lập bằng quyền tài khoản hiện tại. + +### Mở bản portable lần đầu + +Nhấp đúp tệp `.exe`. Lần đầu chạy, Funput hiển thị hướng dẫn thiết lập để bạn chọn kiểu gõ. Biểu tượng Funput xuất hiện ở **khay hệ thống**, khu vực gần đồng hồ trên thanh tác vụ. + +Có một chi tiết dễ khiến bạn bối rối: tệp **`Funput-.exe` sẽ được thay bằng `Funput.exe` trong cùng thư mục** ở lần chạy đầu. Ứng dụng khởi động lại từ tên cố định này và dọn tệp có số phiên bản. Đây là hành vi phục vụ khởi động cùng Windows và cập nhật. Từ lần sau, mở `Funput.exe`. + +### Nếu bản portable hiện SmartScreen + +Bản portable tải từ GitHub có thể gặp cảnh báo SmartScreen. Hãy kiểm tra nguồn tải và checksum trước khi quyết định chạy. Nếu đó là tệp bạn chủ động tải từ GitHub Releases chính thức và đã kiểm tra, hộp thoại có thể có lựa chọn **More info → Run anyway**. + +Không cần tắt SmartScreen hoặc phần mềm bảo vệ toàn hệ thống để dùng Funput. Nếu máy do công ty quản lý và chính sách không cho phép chạy, hãy liên hệ quản trị viên thay vì tìm cách vượt chính sách. Bạn đã hoàn tất khi mở được Funput, chọn đúng kiểu gõ và nhập được câu tiếng Việt trong ứng dụng thường dùng. Nếu cần trợ giúp, gửi phiên bản Windows, phiên bản Funput và các bước tái hiện bằng nội dung mẫu qua [GitHub Issues](https://github.com/Funput/Funput/issues). -**[Tải Funput cho Windows](/windows/)** · [Tìm hiểu Funput](/blog/funput-la-gi/) · [Cài bàn phím Funput trên iPhone và iPad](/blog/cach-bat-ban-phim-funput-iphone-ipad/) +**[Tải Funput trên Microsoft Store](https://apps.microsoft.com/store/detail/9NR3WL5PD4ZS)** · [Funput cho Windows](/windows/) · [Tìm hiểu Funput](/blog/funput-la-gi/) · [Cài bàn phím Funput trên iPhone và iPad](/blog/cach-bat-ban-phim-funput-iphone-ipad/) diff --git a/src/content/blog/funput-la-gi.md b/src/content/blog/funput-la-gi.md index 296d1af..b3dad08 100644 --- a/src/content/blog/funput-la-gi.md +++ b/src/content/blog/funput-la-gi.md @@ -3,6 +3,7 @@ title: 'Xin chào, Funput — Gõ tiếng Việt trên mọi thiết bị' seoTitle: 'Funput là gì? Bộ gõ tiếng Việt cho Windows, macOS, Linux, iOS và Android' description: 'Làm quen với Funput: bộ gõ tiếng Việt miễn phí, mã nguồn mở, hỗ trợ Telex và VNI trên năm nền tảng. Chọn bản phù hợp và bắt đầu gõ.' pubDate: 2026-09-27 +updatedDate: 2026-09-29 draft: false tags: - funput @@ -63,7 +64,7 @@ Bảng dưới đây giúp bạn chọn đúng phiên bản. Mỗi liên kết d | iPhone, iPad | iOS hoặc iPadOS 18.6 trở lên | [Funput cho iOS](/ios/) | | Android | Android 8.0 (API 26) trở lên | [Funput cho Android](/android/) | -Trên macOS, gói `.pkg` cần quyền admin; bản `.app.zip` có thể cài cho tài khoản hiện tại theo hướng dẫn. Bản Windows là tệp `.exe` portable. Với Linux, hãy đọc hướng dẫn theo bản phân phối và phiên desktop trước khi chọn Fcitx5 hoặc IBus. +Trên macOS, gói `.pkg` cần quyền admin; bản `.app.zip` có thể cài cho tài khoản hiện tại theo hướng dẫn. Bản Windows đã có trên [Microsoft Store](https://apps.microsoft.com/store/detail/9NR3WL5PD4ZS), với cài đặt và cập nhật qua Store. Bạn cũng có thể chọn bản `.exe` portable trên GitHub. Với Linux, hãy đọc hướng dẫn theo bản phân phối và phiên desktop trước khi chọn Fcitx5 hoặc IBus. Ứng dụng iPhone và iPad được phân phối qua [App Store](https://apps.apple.com/vn/app/id6788829996). Bản Android có trên [Google Play](https://play.google.com/store/apps/details?id=app.funput.funput). Nếu đang đọc bằng máy tính, bạn có thể mở trang iOS hoặc Android trên website rồi quét mã QR bằng điện thoại. diff --git a/src/lib/constants.ts b/src/lib/constants.ts index 06e3a43..c082a5a 100644 --- a/src/lib/constants.ts +++ b/src/lib/constants.ts @@ -7,6 +7,7 @@ export const FUNPUT_CONSTANTS = { FACEBOOK_URL: 'https://www.facebook.com/FunputIME', CONTACT_EMAIL: 'hello@funput.app', RELEASES_URL: 'https://github.com/Funput/Funput/releases', + WINDOWS_STORE_URL: 'https://apps.microsoft.com/store/detail/9NR3WL5PD4ZS', IOS_APP_STORE_URL: 'https://apps.apple.com/vn/app/id6788829996', ANDROID_PLAY_STORE_URL: 'https://play.google.com/store/apps/details?id=app.funput.funput', OG_IMAGE_PATH: '/og-image.webp', diff --git a/src/lib/desktop.ts b/src/lib/desktop.ts index 088d3e7..fd37724 100644 --- a/src/lib/desktop.ts +++ b/src/lib/desktop.ts @@ -49,19 +49,19 @@ export const DESKTOP = { ], }, windows: { - title: 'Funput cho Windows 10 & 11 — Bộ gõ tiếng Việt miễn phí', + title: 'Funput cho Windows 10 & 11 — Tải trên Microsoft Store', description: - 'Tải Funput cho Windows 10 và Windows 11. Bộ gõ tiếng Việt Telex, VNI miễn phí, mã nguồn mở, bản .exe portable cho x86-64. Hỗ trợ Windows 10 từ phiên bản 1809.', + 'Tải Funput miễn phí trên Microsoft Store cho Windows 10 và Windows 11. Bộ gõ tiếng Việt Telex, Telex+ và VNI, mã nguồn mở. Cài đặt và cập nhật qua Store.', headline: 'Mở lên.', accent: 'Gõ tiếng Việt.', - lead: 'Từ dòng tin nhắn đến trang tài liệu. Funput mang Telex và VNI đến Windows, gọn trong một ứng dụng ở khay hệ thống.', + lead: 'Từ dòng tin nhắn đến trang tài liệu. Telex và VNI quen tay, trong một ứng dụng gọn nhẹ. Nay đã có trên Microsoft Store, để bắt đầu càng dễ dàng.', os: 'Windows 10 phiên bản 1809 trở lên · Windows 11', requirements: - 'Bản x86-64, một tệp .exe portable. Windows on ARM chạy qua mô phỏng; chưa có bản ARM riêng.', + 'Bản x86-64, cài từ Microsoft Store. Windows on ARM chạy qua mô phỏng; chưa có bản ARM riêng. Bản portable vẫn có trên GitHub.', features: [ [ - 'Một tệp, bắt đầu ngay', - 'Bản .exe portable hoạt động từ khay hệ thống. Không cần thêm nguồn nhập vào Windows.', + 'Cài dễ. Cập nhật gọn.', + 'Tải Funput từ Microsoft Store và nhận bản cập nhật qua Store. Không cần tự tìm tệp cài đặt.', ], [ 'Kiểu gõ quen tay', @@ -74,12 +74,12 @@ export const DESKTOP = { ], steps: [ [ - 'Tải Funput.exe', - 'Mở GitHub Releases và chọn tệp .exe dành cho Windows. Lưu vào thư mục bạn muốn giữ ứng dụng.', + 'Cài từ Microsoft Store', + 'Mở trang Funput trên Microsoft Store, chọn Nhận hoặc Cài đặt và chờ hoàn tất.', ], [ 'Mở ứng dụng', - 'Chạy Funput.exe. Funput xuất hiện ở khay hệ thống để bạn mở cài đặt và điều khiển bộ gõ.', + 'Mở Funput từ menu Start. Biểu tượng ở khay hệ thống giúp bạn mở cài đặt và điều khiển bộ gõ.', ], [ 'Chọn kiểu gõ', @@ -92,8 +92,16 @@ export const DESKTOP = { 'Funput hỗ trợ Windows 10 từ phiên bản 1809 (build 17763) và Windows 11. Bản phát hành dành cho x86-64.', ], [ - 'Có cần cài đặt bằng MSI không?', - 'Không. Bản Windows hiện được phát hành dưới dạng .exe portable, chưa có bộ cài MSI.', + 'Funput đã có trên Microsoft Store chưa?', + 'Có. Funput đã có trên Microsoft Store. Bạn có thể cài miễn phí qua nút tải trên trang này, rồi mở ứng dụng từ menu Start.', + ], + [ + 'Cập nhật bản Microsoft Store thế nào?', + 'Microsoft Store quản lý bản cập nhật của bản cài từ Store. Mở Store để kiểm tra và tải bản cập nhật Funput; không cần thay tệp .exe thủ công.', + ], + [ + 'Tôi vẫn dùng bản portable được không?', + 'Có. Bản .exe portable vẫn được cung cấp trên GitHub Releases. Xem hướng dẫn cài Windows để chọn cách phù hợp; nên thoát bản đang chạy trước khi mở bản khác.', ], ], }, diff --git a/src/lib/platforms.ts b/src/lib/platforms.ts index 72e8303..2487d13 100644 --- a/src/lib/platforms.ts +++ b/src/lib/platforms.ts @@ -43,21 +43,21 @@ export const PLATFORMS: Platform[] = [ { id: 'windows', name: 'Windows', - blurb: 'Nhẹ, ít tốn tài nguyên — mở lên là gõ tiếng Việt ngay.', + blurb: 'Đã có trên Microsoft Store. Cài dễ dàng, mở lên là gõ tiếng Việt ngay.', bullets: [ 'Cần Windows 10 phiên bản 1809 trở lên · Windows 11', - 'Dùng ít RAM', + 'Cài đặt và cập nhật qua Microsoft Store', 'Giao diện làm riêng cho Windows', ], - badge: 'Sẵn sàng', + badge: 'Microsoft Store', iconSrc: '/windows.svg', iconAlt: 'Windows', screenshotSrc: '/brand/screenshots/windows.png', screenshotAlt: 'Giao diện Funput trên Windows', screenshotWidth: 960, screenshotHeight: 756, - ctaLabel: 'Xem bản Windows trên GitHub', - ctaHref: FUNPUT_CONSTANTS.RELEASES_URL, + ctaLabel: 'Tải trên Microsoft Store', + ctaHref: FUNPUT_CONSTANTS.WINDOWS_STORE_URL, }, { id: 'linux', diff --git a/src/lib/seo.ts b/src/lib/seo.ts index ca01186..cff8732 100644 --- a/src/lib/seo.ts +++ b/src/lib/seo.ts @@ -3,7 +3,7 @@ import { PLATFORMS, type PlatformId } from './platforms'; import { DESKTOP } from './desktop'; export const DEFAULT_DESCRIPTION = - 'Funput là bộ gõ tiếng Việt miễn phí, mã nguồn mở. Gõ Telex và VNI trên iPhone, iPad, Android, macOS, Windows và Linux. Tải từ App Store, Google Play hoặc GitHub.'; + 'Funput là bộ gõ tiếng Việt miễn phí, mã nguồn mở cho điện thoại và máy tính. Gõ Telex, VNI. Tải từ Microsoft Store, App Store, Google Play hoặc GitHub.'; export const HOME_TITLE = 'Funput — Bộ gõ tiếng Việt cho iOS, Android, macOS, Windows và Linux'; /** Page URLs match Astro's directory output and sitemap. Asset URLs are left intact. */ @@ -128,8 +128,9 @@ export function platformAppJsonLd(id: PlatformId) { applicationSubCategory: 'Vietnamese input method', operatingSystem: content.os, softwareRequirements: content.requirements, - downloadUrl: links.RELEASES_URL, - installUrl: `${links.INSTALL_DOCS_URL}${id}/`, + downloadUrl: id === 'windows' ? links.WINDOWS_STORE_URL : links.RELEASES_URL, + installUrl: id === 'windows' ? links.WINDOWS_STORE_URL : `${links.INSTALL_DOCS_URL}${id}/`, + ...(id === 'windows' ? { identifier: '9NR3WL5PD4ZS', sameAs: [links.WINDOWS_STORE_URL] } : {}), softwareHelp: { '@type': 'WebPage', url: `${links.INSTALL_DOCS_URL}${id}/` }, image: absoluteUrl('/brand/logo.png'), screenshot: absoluteUrl(platform.screenshotSrc), @@ -137,7 +138,12 @@ export function platformAppJsonLd(id: PlatformId) { isAccessibleForFree: true, license: links.LICENSE_URL, publisher: { '@id': organizationId }, - offers: { '@type': 'Offer', price: '0', priceCurrency: 'USD', url: links.RELEASES_URL }, + offers: { + '@type': 'Offer', + price: '0', + priceCurrency: 'USD', + url: id === 'windows' ? links.WINDOWS_STORE_URL : links.RELEASES_URL, + }, }; } export function homeJsonLd() {