mirror of
https://github.com/microsoft/PowerToys.git
synced 2026-04-07 11:46:30 +02:00
Update how plugin locates profile path
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Data.SQLite;
|
using System.Data.SQLite;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
@@ -61,17 +61,52 @@ namespace Wox.Plugin.BrowserBookmark
|
|||||||
using (var sReader = new StreamReader(profileIni)) {
|
using (var sReader = new StreamReader(profileIni)) {
|
||||||
ini = sReader.ReadToEnd();
|
ini = sReader.ReadToEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Current profiles.ini structure example as of Firefox version 69.0.1
|
||||||
|
|
||||||
|
[Install736426B0AF4A39CB]
|
||||||
|
Default=Profiles/7789f565.default-release <== this is the default profile this plugin will get the bookmarks from. When opened Firefox will load the default profile
|
||||||
|
Locked=1
|
||||||
|
|
||||||
|
[Profile2]
|
||||||
|
Name=newblahprofile
|
||||||
|
IsRelative=0
|
||||||
|
Path=C:\t6h2yuq8.newblahprofile <== Note this is a custom location path for the profile user can set, we need to cater for this in code.
|
||||||
|
|
||||||
|
[Profile1]
|
||||||
|
Name=default
|
||||||
|
IsRelative=1
|
||||||
|
Path=Profiles/cydum7q4.default
|
||||||
|
Default=1
|
||||||
|
|
||||||
|
[Profile0]
|
||||||
|
Name=default-release
|
||||||
|
IsRelative=1
|
||||||
|
Path=Profiles/7789f565.default-release
|
||||||
|
|
||||||
|
[General]
|
||||||
|
StartWithLastProfile=1
|
||||||
|
Version=2
|
||||||
|
*/
|
||||||
|
|
||||||
var lines = ini.Split(new string[] { "\r\n" }, StringSplitOptions.None).ToList();
|
var lines = ini.Split(new string[] { "\r\n" }, StringSplitOptions.None).ToList();
|
||||||
|
|
||||||
var index = lines.IndexOf("Default=1");
|
var defaultProfileFolderNameRaw = lines.Where(x => x.Contains("Default=") && x != "Default=1").FirstOrDefault() ?? string.Empty;
|
||||||
if (index > 3) {
|
|
||||||
var relative = lines[index - 2].Split('=')[1];
|
if (string.IsNullOrEmpty(defaultProfileFolderNameRaw))
|
||||||
var profiePath = lines[index - 1].Split('=')[1];
|
return string.Empty;
|
||||||
return relative == "0"
|
|
||||||
? profiePath + @"\places.sqlite"
|
var defaultProfileFolderName = defaultProfileFolderNameRaw.Split('=').Last();
|
||||||
: Path.Combine(profileFolderPath, profiePath) + @"\places.sqlite";
|
|
||||||
}
|
var indexOfDefaultProfileAtttributePath = lines.IndexOf("Path="+ defaultProfileFolderName);
|
||||||
return string.Empty;
|
|
||||||
|
// Seen in the example above, the IsRelative attribute is always above the Path attribute
|
||||||
|
var relativeAttribute = lines[indexOfDefaultProfileAtttributePath - 1];
|
||||||
|
|
||||||
|
return relativeAttribute == "0" // See above, the profile is located in a custom location, path is not relative, so IsRelative=0
|
||||||
|
? defaultProfileFolderName + @"\places.sqlite"
|
||||||
|
: Path.Combine(profileFolderPath, defaultProfileFolderName) + @"\places.sqlite";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user