Files
7aa98d43cf Refact/plugin removal leftovers (#15864)
* fix(flutter): dispose the settings PageController and order dispose() correctly

`dispose()` began with `super.dispose()`, so the mixin chain marked the State
defunct before the WidgetsBindingObserver registration and the periodic timer
were released. The `PageController` was never disposed at all: `Get.delete`
only runs `onDelete()` for a `GetLifeCycleBase`, and a plain `ChangeNotifier`
is not one, so every open/close of the Settings tab leaked one controller with
its listener still attached.

Also guard `switch2page` on the `Rx<SettingsTabKey>` registration it actually
reads rather than only the `PageController` — now that both are really
deleted, a partial teardown would throw into the catch and silently open the
wrong tab — and re-check `mounted` after the await in the `_videoConnTimer`
tick, which `Timer::cancel` cannot stop once the body has started.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* refact: finish the plugin-framework removal sweep

#15854 removed the feature but stopped short of its leftovers:

- `Uninstall`, `Enable`, `Disable`, `Options` and `Please install plugins`
  were consumed only by the deleted `flutter/lib/plugin/**`; drop them from
  template.rs and the 50 locale files (250 dead entries). `Update` and
  `Install` stay, still used by desktop_home_page.dart.
- The server no longer sends `PrvOnFailedPlugin`, and the client no longer
  offers to install plugins when privacy mode fails to turn on.
- Drop the MSI `F_Client_Plugins` / `F_Server_Plugins` localization strings;
  no `.wxs` references them.
- `_DisplayMenu`'s constructor became a pure pass-through once `pluginItem`
  was removed, and the cfg inside `handle_input` repeats the one on the
  function itself.
- Normalize `src/lang/sl.rs` to 0644, the only executable file under src/.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

* fix(client): handle legacy privacy mode plugin failures

Signed-off-by: fufesou <linlong1266@gmail.com>

---------

Signed-off-by: fufesou <linlong1266@gmail.com>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: fufesou <linlong1266@gmail.com>
2026-08-14 18:52:03 +08:00
..
2024-04-25 22:35:51 +08:00
2026-06-18 22:37:15 +08:00
2026-06-30 11:02:28 +08:00

RustDesk msi project

Use Visual Studio 2022 to compile this project.

This project is mainly derived from https://github.com/MediaPortal/MediaPortal-2.git .

Steps

  1. python preprocess.py, see python preprocess.py -h for help.
  2. Build the .sln solution.

Run msiexec /i package.msi /l*v install.log to record the log.

Usage

  1. Put the custom dialog bitmaps in "Resources" directory. The supported bitmaps are ['WixUIBannerBmp', 'WixUIDialogBmp', 'WixUIExclamationIco', 'WixUIInfoIco', 'WixUINewIco', 'WixUIUpIco'].

Knowledge

properties

wix-toolset-set-custom-action-run-only-on-uninstall

Property Name Install Uninstall Change Repair Upgrade
Installed False True True True True
REINSTALL False False False True False
UPGRADINGPRODUCTCODE False False False False True
REMOVE False True False False True

TODOs

  1. Start menu. Uninstall
  2. custom options
  3. Custom client.
    1. firewall and tcp allow. Outgoing
    2. Show license ?
    3. Do create service. Outgoing.

Refs

  1. windows-installer-portal
  2. wxs
  3. wxs github