SyMenu Forum

SyMenu

 

Gianluca

all messages by user

21/02/2025
Topic:
Very Slow Startup on New Device

Gianluca
Gianluca
Administrator
Hello,
SyMenu loads its own item entries only when you need them.
What you describe it's typical if you created your 450 entries on the menu root.
The root level is always needed so SyMenu has to load it entirely and can be slowed down if you have hundreds of items at that level.
If you organize your menu with subfolders (logical folders) the problem goes away because SyMenu loads only the main level (ideally 10-15 subfolders) and it's very fast.

The SPS Manager can directly create subfolders based on the program category if you activate the Item locators option (https://ugmfree.it/manual#SPSItemLocators)

The local resources use a similar technique: SyMenu discovers the available units (typically C:, D:, E: and so on) but loads their content only when you need it.

The search engine instead needs every item but they are loaded on a background thread so it can take a lot but you don't notice unless you search for an item that is not yet loaded and the same behaviour is for the native items.

Let me know if this is the problem.
21/02/2025
Topic:
AnyDesk 9.0.4 - update error

Gianluca
Gianluca
Administrator
I can't confirm the problem.
Try to check your firewall, probably SyMenu is blocked and you should have the same problem on other programs too.
Or give me other hints.
21/02/2025
Topic:
A little help would be nice

Gianluca
Gianluca
Administrator
Now it's a bit clearer.

I've got a question for you.
If you abandon the original script to rewrite it as a plugin (I imagine you know they are two different things, written with different languages, interacting with SyMenu in very different ways) so as to improve it, why do you need the notification on program installation???

Follow me.
You are asking to be notified whenever a new program is installed.
I imagine you want to use that event to analyze what has been installed to find if there are multiple exe. In that case you want to create a new item that becomes the only launcher. I imagine you think to hide all the other executables already created for that program to prevent any kind of confusion.
It's a huge job, a lot of interaction with SyMenu and a lot of menu structure manipulation.
I doubt you can realize a project so ambitious and not because I think you are not able to do that but because I know how big and complex these activities are under the SyMenu hood.

But what if the moment you analyze the program executable is not the installation but the program launch?
If you write a plugin and not a simple script, you have a lot of powerful tools to use and you'll be able to make a lot of considerations about this launched executable.
For example you can scan the exe folder to recognize similar executables located there inside.
You can even recognize if the launched exe is for the x64 or x86 platform and check the other file you found.
With some smart rules you can even trust the executable names to recognize their architecture.
Or even show everything you found in that folder to the user and leave a blind (for your code) choice to him.
This way the plugin will be instantly available for any program already configured and not only with the newly installed, it operates dynamically, you don't need to create a new item for every program to create the launcher because the launcher will be activated from every SyMenu item, you won't need to think about the cleaning up because when a program is uninstalled a physical item must be deleted too.
Plus creating the plugin the way I suggest it seems simpler to develop, but it's only my two cents.

What is it lacking in SyMenu?
Today the only event available close to the program launch moment is an event that notify the subscriber AFTER a program is launched.
So what it lacks is an event notifying the subscriber BEFORE a program is launched and that can block the launch waiting for the user choice.

Ok... Frankly I don't like this kind of interaction because it opens an awful security breach.
If a third party software can execute anything, maybe even in elevated mode, the users are completely unarmed.

Example:
- the user launch Autorun x86
- the plugin block the execution
- then it checks the folder to search for something else
- since it finds Autorun x86, x64, and CLI, it shows the user a selection between the three
- the user choose Autorun x64
- the plugin download a ransomware and execute it
- the user sees the elevation request by Windows and clicks Ok.
Done.

When that script appeared for the first time on this forum I studied it and it seemed non dangerous at all because it asked the user interaction to define the two exe paths.
So no problem at all.
An automation like the one you are thinking about is really difficult to control.


Anyway I'm open to any further suggestions.
21/02/2025
Topic:
Very Slow Startup on New Device

Gianluca
Gianluca
Administrator
Not at all.
Your subfolders are exactly the same as what SyMenu can create by itself. Maybe my explanation was a bit confusing. Sorry.

From what I'm seeing your configuration is extremely light and should be loaded in the PC as well as in the USB in no time.

So I don't know why you are experiencing this strange delay.
Can I have your configurations? Items and SyMenu config too. If you are willing, you know my email.
22/02/2025
Topic:
A little help would be nice

Gianluca
Gianluca
Administrator
jagg3127 wrote:
I don't want the plugin to run every time you launch an application I want it to not even be able to install anything. All I want it to do is change the shortcuts defined originally just like I had shown. If there is a simpler way of doing this through plugins that would be optimal.

It's not the way a plugin is intended to work. A plugin system is not an open door to do whatever the plugin wants.
The main program offers an interface through which you can interact with it. So it's the main program deciding what a plugin can do, not vice versa.
Ideally every portion of a program can be funneled through a plugin interface but unfortunately for your idea the SyMenu plugin system doesn't offer any method to interact with the item structure.
The SyMenu plugin system is at a germinal status because the needs emerged in the past were very few.
You are asking for a new need but IMHO it's too dangerous to open that door as I explained before. And not because I don't trust you but because once I open that door, it's opened for everyone.

jagg3127 wrote:
What programming language is it written in?

.NET Core


jagg3127 wrote:
I don't even need a script notify on program installation to be honest the plugin could run right after its installed find the folder and change the paths. It would have no ability to download anything besides changing the configuration of your downloads to be automated.

Ok so this is not a plugin but a simple program that is called by the user when he needs it, isn't it?
In this case you can dissociate completely from SyMenu. You can write a program that analyzes the item configuration file (it's a simple plain xml file) and modify it directly. Easy as a pie.


jagg3127 wrote:
Ok now I see what you mean by the plugin needing to run every time they clicked an app ok ok. So depending on the programming language we could have the plugin never ask for Admin and only the app you're running to be that cause if you run it you could probably have the app ask for admin so the plugin would never be able to download stuff. Yeah I see the concerns of security but its still a good idea for my use case even if its a plugin only me and some close friends use then I would still want to know how top make a plugin and which programming language it would be in.

If you are curious and want to practice with it, I'll send you the source code of a test plugin I wrote exactly for this reason.

jagg3127 wrote:
Ok I figured out, after some debugging of the two plugins I had, my issue is that I need to know what csproj file your using because I cannot figure out how to import the Libs directory into the dll. Or just inform me how, I could probably figure out the rest.

So wait for my message.
28/02/2025
Topic:
Batch import crashing

Gianluca
Gianluca
Administrator
Naturally no.
We can work on the bug and fix it.

First thing, execute SyMenu from a CLI with this command:
SyMenu.exe -logger
This enables the file logger so when the program crashes you'll find a log file on the program root folder.

Second thing, don't scan the folders from the root but from a subfolder.
I'm not suggesting this procedure because it's the right one but because I need to know which kind of file crashes the scan.
28/02/2025
Topic:
Batch import crashing

Gianluca
Gianluca
Administrator
I thought of another thing.

You referred to 2.900 exe... but probably the treeview is forced to show you way more than this number if you have not filtered the results in some way. With the default filter you are probably seeing .bat, .jar, .cmd, .lnk files too.

Consider that every single element in that treeview requires a lot of graphical elements at the system level (the parent folder, the text, the connectors, the icons..).
These kinds of elements are called GDI in Windows terms and if a program asks more than 9.999 GDI objects, it is killed by the system.

With the numbers you are working, your GDI request is probably far more than 9.999 objects and this is the reason for which you are experiencing the crash.

There's an interesting thread about this topic in this same forum https://ugmfree.it/forum/messages.aspx?TopicID=494 that teaches you how to check for this problem.

If you are in this situation, the only way to proceed with the batch import is to split your import in several sessions to prevent the GDI overflow.
So, as I advised before, choose a subfolder as a starting point, import, repeat the procedure for the next one.

Sorry for this but this is a Windows limit that comes from the mist of time and has no reason to exist today but here we still are for retro compatibility reasons I imagine.

Let me know if I hit the target.
28/02/2025
Topic:
Translating Control Panel Items in SyMenu

Gianluca
Gianluca
Administrator
Hello BMX2k2,
You are right. There are several areas where SyMenu is not translated.
You found one but there are also some system32 tools such as dxdiag.exe (called DirectX Diagnostic Tool), mmc.exe (called Microsoft Management console), and others.
Then there is the search filter guide used in SPS apps form and others texts here and there.

Since in official languages SyMenu is fully translated why does this strangeness exist?
It's not because of a technical reason but it's because I can't push the translator's work too much.

The translators are dedicated, enthusiastic, extraordinary people but they are human beings with works, families, hobbies. SyMenu is one of their passions and they have nothing in exchange for helping the project so I don't want it to become a nightmare.
The only elements I cited before are more than 100 sentences to translate.
And BTW the lacking translations refer to specialized features that are probably accessed by users who know English.
So I think I'll never ask them to make it translated.


I hope it can be an understandable reason.
28/02/2025
Topic:
Batch import crashing

Gianluca
Gianluca
Administrator
mmlmrx wrote:
You are correct! :-) When I add those filters (*.cmd,*.jar,*.lnk,*.bat) the scan completes without crashing and shows me the results. That will be fine - I only have a handful of apps that launch via .bat files so I can add those manually.

...or you can launch another import filtering .exe this time and including the .bat.

mmlmrx wrote:
The first is that I still see a lot of folders and subfolders listed in the scan results even though there are no .exe files in them. Presumably those folders have some file that I have filtered out, so it knows not to show me the file but still shows the folders?

You are right. The behaviour should be different but implies the addition of an entire folder branch only if something valid is contained there inside. This means the add node function can't work item per item but on a batch of elements. I'll let you imagine the code modification I should make.

mmlmrx wrote:
The second observation is that I have my apps organized into subfolders, but there still are some apps directly at the root folder. So, I will do as you suggested and import one subfolder at a time, but is there a way to scan ONLY the root folder? Changing the "check up to level" value did not seem to have any effect, and the filter mechanism does not appear to work on folder names.

There is no way to scan only up to a certain level. What you are seeing, the check up to level x, is a way to flag the found checkboxes up to the level, not to scan them.

I know the batch import is a bit buggy but every user uses it once in his SyMenu life. And a lot of the new users don't use it at all because the SyMenu way, the suggested way indeed, is through the SPS Manager not the batch import.
27 days ago
Topic:
Problems with installation

Gianluca
Gianluca
Administrator
It's really strange. SyMenu works exactly in scenarios like this.

What is the content of your [SyMenu]\Config folder?

I saw you choose to put SyMenu in C:\Program Files... You are really brave because that folder is restricted for security reasons. So it could be a problem of security (you don't have full access to the SyMenu subfolder for example). My advice: D:\SyMenu (no need to do anything after a reinstallation).
27 days ago
Topic:
Problems with installation

Gianluca
Gianluca
Administrator
Ok even if you have successfully installed SyMenu I don't recommend using that folder the same.
If you want to use it the same, the procedure is easier than what you did.
You can take ownership of the C:\Program Files\SyMenu folder or take "only" full control on it with your user even if MS discourages this kind of action.
16 days ago
Topic:
Pin to Desktop

Gianluca
Gianluca
Administrator
No, it isn't.
I understand what you desire: a thing visible only when the desktop portion where it's placed is visible.
I fear it's not possible because the sense of the pin is to always show the menu, no matter what. And BTW, in my opinion the pin thing is pretty useless... I don't even know why I've implemented it.

Anyway I have a workaround for you.
If you'd have the menu on the desktop level, you should make at least one action to make it visible. I mean you always need to do something like minimize a window or click on the Windows shortcut WIN+M or switch tabs to the desktop. In your note, you have to do a click with the mouse or to press some keys on the keyboard.
So you don't use the SyMenu shortcut to make the contextual menu appear?
It's equally a single action (default CTRL+F3 but it's customizable) and you make the menu appear in a blink of an eye.
Or if you are a mouse type, you can click on the always visible system tray icon and the menu appears the same.
What do you think?
6 days ago
Topic:
Adding other repositories?

Gianluca
Gianluca
Administrator
Thank you for your question, it allows me to delve into SyMenu's history.


At one point, I added a plugin to download apps from PortableApps.com, naively believing that a community promoting openness and freeware would genuinely embrace those principles.
However, the PA community is an unusual case because it's owned by an individual and operates as a private company, despites the license telling us something different. The boss wants the PA apps to be available only via the PA launcher, otherwise, you can fu**k off.
Despite giving credit, backlinks, and visibility to PA.com I was accused of being a thief because I used to waste PA's bandwidth (???WTF???). I was discredited, accusing me of distributing software against their license (???##!!). PA's founder, smiling John, embedded code in every PAF app to block execution if launched through SyMenu. Since the malicious code was in the packer for PAF this sabotage extended to apps like OpenOffice, even though portable OpenOffice is packed and distributed by its own foundation, not by PA.
For these reasons, I decided to move on and remove the plugin.

Meanwhile, SPS suites were evolving. Initially, there were three of them: SyMenu Suite, NirSoft, and Sysinternals. It became soon clear to me that thematic suites, focused on specialized areas, were more practical than publisher-specific suites. And in fact integrating Sysinternals into the main suite proved beneficial. NirSoft still remains separate, but merging it into the main suite is a thing I have to do in the future.

Thematic suites instead open exciting possibilities: a forensic suite, a school tools suite, an office suite, or even a suite dedicated to games. But, managing a single generic suite is already overwhelming, which has kept me from pursuing thematic suites further.

That said, I introduced the concept of custom suites for users, that is probably the thing you want to know.

Custom suites are simple: users can define an online endpoint for their SPS library, similar to SyMenu's endpoint.
Your endpoint might look like:
https://www.mypersonalwebsite.com/getSPSSuite
Once the endpoint is entered in SyMenu, the system queries it to retrieve suite details, including its name, description, download links, and login requirements (if restricted to certain users).

As you can see, with this kind of feature, I have no control over these custom suites.
For example, if someone uses SyMenu to distribute pirated software I can't prevent it. Absurdly if smiling John decides to use SyMenu to distribute PA because SyMenu is way better than PA launcher, I can't prevent it Big Grin Big Grin It'd be hilarious!
However, this lack of control isn’t why the custom suite is still inactive. The real reason is simple: there's been no demand for this feature, despite its potential to push SPS technology further and I need to work with someone to put it in line because it's huge and complex.
5 days ago
Topic:
Adding other repositories?

Gianluca
Gianluca
Administrator
rjtemple wrote:
So in short I would need to:
1) compile programs as .SPS
2) host a site
3) put those .SPS files on the hosted site

Would this be an accurate understanding?


Not exactly. It's easier than this.

1) SPS is not a packer such as PAF or zip/7zip/rar solid archive, and it's neither a setup like InnoSetup or msi.
It's a structured description that tells SyMenu where to download the file, how to unpack it, and where to find the resulting executable. Plus it contains program description, license, and so on.
The burden to create something with PAF, setup, or whatever other system, is that you have to repack the program at every update. With SPS instead you just need to change some strings of text inside the SPS file itself.
You can find a lot of material to understand what a SPS is and naturally you can download the magic SPS Builder from SyMenu itself or from its own page (https://www.ugmfree.it/spsbuilder)

2) Easier. You don't need an entire website but some sort of web service, one endpoint, that returns json information. The json information can be dynamically created or fixed... so in the simpler scenario you need to publish somewhere a plain text file.

3) ... or in any kind of file hosting depending on how you want to distribute your suite.

rjtemple wrote:
Could the site used be something as simple as Dropbox?

The endpoint can be hosted anywhere, even in Dropbox if you link a direct URL and not the dropbox download page.

rjtemple wrote:
There are not many products that I cannot get through SyMenu...

Excuse me but there's a more direct way to have what you need in SyMenu. Probably this is the reason because we don't still have the custom suite feature. You can become an SPS editor for the main SyMenu suite.
The SyMenu suite is open to collaboration from everyone.

So you have to download the SPS Builder, try to understand how it works by consulting some existing SPS, fill your SPS, upload it through the SPS Builder.

When a new SPS from a fresh editor arrives in the system, I'll be notified and review the work, help the new editor to understand how SPS really works, eventually ask for corrections, and afterwards publish his work.

As I told you the custom suite is a feature not activated because it needs a lot of work so today the only way to publish something is through the main suite.

edited by Gianluca on 28/03/2025

UGMFree © 2002-2025
PayPal BTC TON