apps icon indicating copy to clipboard operation
apps copied to clipboard

Notepad++ Can't Install Plugin

Open archit9169 opened this issue 4 years ago • 4 comments

Okay, so turns out that we cannot modify the files inside the implementation dir at all. And some apps like notepad++ requires that to install plugins. Is it possible to allow junctions to be created to specific locations so that we can utilize plugins with harming the core functionality of implementations?

archit9169 avatar Aug 14 '20 18:08 archit9169

In the specific case of Notepad++ I've found a solution: 0install/apps@6c3fccdda516732fc59872bb85d061b401dd5cf7

Allowing junction links to be created inside implementation directories could be problematic when implementation caches are shared between users. One user's junction links wouldn't work for another.

bastianeicher avatar Aug 14 '20 22:08 bastianeicher

That's right i forgot about that. I have been so focused on local usages that i forgot about other users. And will this solution works with other apps, if some apps requires installation of additional files in their root dir or something similar?

Edit: I just updated the app and tried installing plugins, however it showed the same error as before. Do i need to do something else? I have not yet tried importing plugins instead of installing them.

archit9169 avatar Aug 15 '20 13:08 archit9169

Sorry for the long delay.

Turns out I was too quick in my claim of a fix. Notepad++ has dropped support for allowAppDataPlugins.xml in recent versions.

Haven't found a nice solution for Notepad++ plugins with 0install yet.

bastianeicher avatar Aug 25 '20 13:08 bastianeicher

The other package manager that i use (scoop) have implemented persistent directories. All the data that is created after installation like plugins in case of notepad++ are stored in another directory. After each update a junction is created to link persistent directory to the one present inside application. I think a similar concept can be applied here.

  1. Cache the implementation.
  2. Link the junction.
  3. Create manifest and/or xbit files? [Make exception for junction links]
  4. Close the directory from being edited?

Besides junction are more or less objects so i think it can be handled very easily. Or maybe use symbolic links? It might required some research before it can be implemented and will require additional fields in feed.xml file. But this is the most basic and generalized way this can be achieved. And it works for every application that requires this type of feature?

User Specific Apps: implementation :- %appdata%/0install/implementation/ persistent data :- %appdata%/0install/persist-or-something-else/

User Shared Apps: implementation :- C:/programdata/0install/implementation/ persistent data :- %appdata%/0install/persist-or-something-else/

User Shared Apps+Data: implementation :- C:/programdata/0install/implementation/ persistent data :- C:/programdata/0install/persist-or-something-else/

Junctions can be relative too so i think if %userdata% is used then maybe it will work for different users? Like i said it might require some research but scoop is using similar concept too for global apps [apps that are shared b/w users]

archit9169 avatar Aug 28 '20 19:08 archit9169