You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
@@ -274,6 +281,23 @@ The `Method` attribute controls when a FILE element is processed:
274
281
| (none) | During install only |
275
282
|`install`| During install (explicit) |
276
283
|`remove`| During plugin removal only |
284
+
|`update`| During plugin update (v6) |
285
+
286
+
### Update Method
287
+
288
+
To support plugin upgrades cleanly, you can provide a file block specifically for update actions. Use `Method="update"` to remove stale files or pre-clean path before reinstall:
289
+
290
+
```xml
291
+
<FILERun="/bin/bash"Method="update">
292
+
<INLINE>
293
+
# remove old unpacked content and avoid stale legacy leftovers
294
+
rm -rf /usr/local/emhttp/plugins/&name;
295
+
rm -rf /boot/config/plugins/&name;
296
+
</INLINE>
297
+
</FILE>
298
+
```
299
+
300
+
`Method="update"` is run only when plugin manager performs an update, not on first install.
277
301
278
302
### Install-Only Script
279
303
@@ -409,6 +433,70 @@ echo ""
409
433
</PLUGIN>
410
434
```
411
435
436
+
## Dynamix tabs and plugin menu behavior
437
+
438
+
For Dynamix-based UIs, a plugin can expose tabs and settings entries as follows:
439
+
440
+
- Parent page should be a menu container with `Tabs="true"`.
441
+
- Child pages use `Menu="ParentName:1"`, `Menu="ParentName:2"` to control order.
442
+
- Page icons appear as 16x16 in `/usr/local/emhttp/plugins/&name;/icons/<lowercase-title-without-spaces>.png`.
443
+
-`Icon="XXX"` in the page header defines the page icon (48x48 or font-awesome token). For tabbed visuals, verify both `images` and `icons` entries.
444
+
445
+
Example:
446
+
447
+
```xml
448
+
Menu="OtherSettings"
449
+
Type="xmenu"
450
+
Title="APC UPS"
451
+
Icon="apcupsd.png"
452
+
Tabs="true"
453
+
---
454
+
<?php
455
+
// page content
456
+
?>
457
+
```
458
+
459
+
Child tab page example:
460
+
461
+
```xml
462
+
Menu="APC UPS:1"
463
+
Title="Status"
464
+
---
465
+
<?php
466
+
// status content
467
+
?>
468
+
```
469
+
470
+
git is used by the icon link on the main Plugins page:
471
+
472
+
- Plugin manager uses the plugin name and `.page` file matching this name to provide click behavior.
473
+
- If `.page` isn’t present or not matched, the icon may be non-clickable or pointer goes to a blank route.
474
+
475
+
## Unraid event hook versions
476
+
477
+
Unraid event handler paths may differ by versions:
478
+
479
+
- older integration in v6 used `disks_mounted`, `unmounting_disks` for disk life cycle
480
+
- 6.6+ and beyond prefer `started`, `stopping_svcs` for services startup/shutdown relative to Docker/VMs
481
+
482
+
Place event scripts in `/etc/rc.d/` appropriately, and avoid depending on only one set when targeting both v5/v6.
483
+
484
+
## Running background services from plugin install
485
+
486
+
If a plugin starts long-running background processes during installation, the install UI may hang waiting for completion. Use techniques to detach processes safely:
If your plugin installs shared dependencies like `perl`, `python`, or `java` packages into `/boot/packages`, avoid removing dependency files during `remove` unless you are sure no other plugin still needs them.
514
+
515
+
- Prefer leaving shared packages in place by default and relying on plugin manager / user cleanup for flash space.
516
+
- Provide documentation in the plugin README on how to reclaim package files if needed.
517
+
518
+
### 3. Keep plugin registration clean
519
+
520
+
`/var/log/plugins` contains plugin manager references to installed plugins (symlinks). Do not manipulate this directory directly — use installer scripts and plugin manager actions.
521
+
522
+
### 4. Use Entities for Maintenance
424
523
425
524
Define version, URLs, and paths as entities so you only update them in one place.
426
525
@@ -469,17 +568,40 @@ If your plugin requires specific Unraid features:
469
568
<PLUGIN ... min="6.9.0">
470
569
```
471
570
472
-
### 6. Optional Community Applications requirements (CA)
0 commit comments