Floorp-Projects / Floorp

All of source code of version 10 or later of Floorp Browser, the most Advanced and Fastest Firefox derivative šŸ¦Š
https://floorp.app
Other
5.98k stars 168 forks source link

Portable version(s)? #37

Closed Rusenche closed 1 year ago

Rusenche commented 2 years ago

I have a question... Is there a portable version planned at all?!

I'm only looking for portable versions of the browsers! For this reason, the Brave browser is out of my sight, since the developers flatly refused to make a portable version! There is nothing more convenient for users than a portable version of any browser!

surapunoyousei commented 2 years ago

Hmm...

Your question is difficult for us.

Although the portable version of Floorp can specify the profile writing inside the application, it is difficult to release due to the problem that the registry value is written.

Although it is possible to compromise and release this.

surapunoyousei commented 2 years ago

In fact, the Tor browser also writes registry values ā€‹ā€‹when you run them.

regularentropy commented 2 years ago

I believe that there is a way to create a semi-portable version using the following steps:

  1. Extract the Floorp installer, and create .bat file in the root of it.
  2. Write the following inside the .bat file
    @echo off
    start core\floorp.exe -Profile ā€œprofile_name_hereā€
    exit
    1. Launch this bat file.

It will create a new profile near the core folder, which will be used in Floorp.

PS: I'm uncertain if this can be considered a portable version.

surapunoyousei commented 2 years ago

I prepared the same in NIM. .bat because the icon changes.

The problem is that it writes the registry value

Rusenche commented 2 years ago

Since Ungoogled chromium has been made fully portable, it is possible that other browsers will be fully portable as well.

Bat files are not a good idea for permanent use.

The idea is that the user's profile is in its own folder. If the folder is located in "D:\Ungoogled chromium" partition... That's what I mean. The user profile should be created inside the program directory itself, not in "C:\Users\AppData\Roaming"...

surapunoyousei commented 2 years ago

We can't afford to spend twice as much on the build because we are individual developers.

Even if you don't use Bat, you need to encourage Floorp to start with the portable version. For that purpose

You may need something like RunFloorp.exe. It is possible to create a user profile directly under the program directory.

surapunoyousei commented 2 years ago

@Rusenche

I have a question for you.

Do you want to use the portable version so that you can use the same profile on any PC? Or is it because it leaves no trace of anything?

Rusenche commented 2 years ago

Realistically and objectively, the answer is - a bit of both! The convenience is ideal when the profile is portable - it can be applied to a completely different computer. Another convenience is - in the event of an OS (Windows) crash and a total need to reinstall - nothing is lost from the user profile if it is outside of "C:\Users\AppData\Roaming"...

Just to add - I don't use any syncing apps! I decide what I need, where I need it and when I need it, I don't need a third party online intermediary company to remember/synchronize my passwords/profile! As well as the user himself should have access to export the saved passwords from the browser to a file, and not be monopolized, as if the user has no brain to do it himself and someone else should do it for him.

I think you as a developer can see the users point of view.

surapunoyousei commented 2 years ago

If you want a portable version that can be used anywhere without syncing, you can have it ready right away.

Consider.

lostzombie commented 2 years ago

I'll just leave this here https://github.com/adonais/libportable Original firefox work fine with full regwrite hook, just this code not so relevant.

Moreover, if you determine whether another process instance is running with a different path, then by adding the --new-instance key you can comfortably work with several browser copies with different profiles

surapunoyousei commented 2 years ago

I'll just leave this here

https://github.com/adonais/libportable

Original firefox work fine with full regwrite hook, just this code not so relevant.

Moreover, if you determine whether another process instance is running with a different path, then by adding the --new-instance key you can comfortably work with several browser copies with different profiles

What is this like?

lostzombie commented 2 years ago

Pre-Built binaries of libportable for Floorp https://github.com/lostzombie/libportable/releases/tag/1.0.3.0 Portable Floorp example https://www.upload.ee/files/14549635/FloorpPortable.7z.html No registry write, no push events in windows events log, can't read some regitry keys, profile in same folder Only some errors in browser console

surapunoyousei commented 2 years ago

Pre-Built binaries of libportable for Floorp https://github.com/lostzombie/libportable/releases/tag/1.0.3.0 Portable Floorp example https://www.upload.ee/files/14549635/FloorpPortable.7z.html No registry write, no push events in windows events log, can't read some regitry keys, profile in same folder Only some errors in browser console

did you create it? Any details on how to make one?

lostzombie commented 2 years ago

did you create it? Any details on how to make one?

You are familiar with the concept of hooks or detours? I'm using original code of adonais/libportable add some functionality, and build with nmake, but now when I test, something is wrong with second launch of Floorp, because of some differences with a firefox and profile path

lostzombie commented 2 years ago

Now I fix that https://www.upload.ee/files/14549698/FloorpPortableFix.7z.html How that work:

  1. setdll64.exe patching import table of mozglue.dll
  2. now floorp.exe load portable64.dll in memory every time when loading mozglue.dll
  3. portable64.dll catch some WINAPI calls and sends substitution value
  4. floorp.exe can't find original path of appdata\roaming, appadata\local, appdata\locallow, he thinking all that path is /profile
  5. profile/Floorp/Profiles.ini have the same relative path ../ to /profile
  6. any calls like RegCreateKeyExW return ERROR_SUCCESS whithout nothing etc.
lostzombie commented 2 years ago

In example Iceweasel going pre-built with dependencies of portable64.dll in xul.dll https://sourceforge.net/projects/libportable/files/Iceweasel/Stable/105.x/x86_64/ without patching (injecting) in mozglue.dll

benzBrake commented 2 years ago

Manually patch is inconvenient to upgrade floorp. Waiting for portable builds. For my needs, half-protable version is enough. Actually, I don't know the meaning of full portable version. So I compiled a RunFloop.exe(Chinese only, no time to implement multi language) https://github.com/benzBrake/RunFirefox/releases.

tqgx commented 1 year ago

Hello, dear developer. I'd like to try to give you a basic Portable knowledge, but I'm not a developer and have no current development experience.

The first thing you have to understand is that the so-called Portable software is classified as Real Portable and Fake Portable. After extending the topic, there are virtualization technologies, and scripting technologies.

Typical case: This is a Fake Portable registry that is still there after installing software that is just compressed. Use PortableApps to wrap files. Not only does this not solve the problem, it is still a Fake Portable, because it works by automatically adding the registry whenever the software is turned on and removing the registry when the software is turned off.

PortableApps is a typical case of scripting. Almost all the Cracker or Repacks to make Portable devices on the market are packaged with similar scripting Portable.

Real Portable is a virtualization technology that is completely separated from the system. No registry is added or removed. Everything is in a folder, or an.exe file The best examples: Turbo Studio and Vmware's Thinapp

tqgx commented 1 year ago

In addition, the first thing you should consider is how to make a browser Portable with virtualization technology. If you finish all of this. What we have to think about is, can we port the extension? A bookmark? And all kinds of functional storage?

tqgx commented 1 year ago

I believe that there is a way to create a semi-portable version using the following steps:

  1. Extract the Floorp installer, and create .bat file in the root of it.
  2. Write the following inside the .bat file
@echo off
start core\floorp.exe -Profile ā€œprofile_name_hereā€
exit
  1. Launch this bat file.

It will create a new profile near the core folder, which will be used in Floorp.

PS: I'm uncertain if this can be considered a portable version.

No, but I don't use Linux myself.

But I see that your process is to create a Profile folder. This folder is reserved for bookmarks & extensions, and user.js and about:config parameters. But on Windows, it's still through the registry. You must manually restart each of the extensions before they can be used.

tqgx commented 1 year ago

@surapunoyousei

@Rusenche

I have a question for you.

Do you want to use the portable version so that you can use the same profile on any PC? Or is it because it leaves no trace of anything?

On Chromium, the most valuable reference is Cent Browser, whose Portable is completely true portability I strongly encourage you to try it out so you can see what a Portable browser really is and how it will affect your development ļ¼ˆCent Browser Portable)

http://www.centbrowser.com/history.html

surapunoyousei commented 1 year ago

@surapunoyousei

@Rusenche I have a question for you. Do you want to use the portable version so that you can use the same profile on any PC? Or is it because it leaves no trace of anything?

On Chromium, the most valuable reference is Cent Browser, whose Portable is completely true portability I strongly encourage you to try it out so you can see what a Portable browser really is and how it will affect your development ļ¼ˆCent Browser Portable)

http://www.centbrowser.com/history.html

TY for your infomation.

But, There is a big difference between Chromium and Firefox.

Windows reg writing is big issue.

tqgx commented 1 year ago

@surapunoyousei

@Rusenche I have a question for you. Do you want to use the portable version so that you can use the same profile on any PC? Or is it because it leaves no trace of anything?

On Chromium, the most valuable reference is Cent Browser, whose Portable is completely true portability I strongly encourage you to try it out so you can see what a Portable browser really is and how it will affect your development ļ¼ˆCent Browser Portable) http://www.centbrowser.com/history.html

TY for your infomation.

But, There is a big difference between Chromium and Firefox.

Windows reg writing is big issue.

A little reminder. While developers are focused on the Portable software project. You must also be aware that any files you publish are safe Here's a trick. Please. Every time the developer publishes a new version of the browser upload. The first time please send content updated what. And with sha-256 text, confirm the file is valid and safe. The second time is to upload the file to add. This ensures that when people call up the first history release, they know it's yours.

creeper-0910 commented 1 year ago

Portable version will be released with Floorp 10.9.0! https://github.com/Floorp-Projects/Floorp-Portable