std::set RiderPathLocator::collect_all_paths()

in godot-editor-plugin/addons/rider-plugin/cpp/src/rider_path_locator_windows.cpp [195:230]


std::set<InstallInfo, InstallInfoLess> RiderPathLocator::collect_all_paths() {
    std::set<InstallInfo, InstallInfoLess> s;

    // Registry: Uninstall keys
    const wchar_t *uninstall = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
    const wchar_t *uninstall_wow = L"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall";
    for (auto &i : collect_paths_from_uninstall_registry(HKEY_CURRENT_USER, uninstall)) s.insert(i);
    for (auto &i : collect_paths_from_uninstall_registry(HKEY_LOCAL_MACHINE, uninstall)) s.insert(i);
    for (auto &i : collect_paths_from_uninstall_registry(HKEY_CURRENT_USER, uninstall_wow)) s.insert(i);
    for (auto &i : collect_paths_from_uninstall_registry(HKEY_LOCAL_MACHINE, uninstall_wow)) s.insert(i);

    // Registry: JetBrains Rider keys
    const wchar_t *rider_key = L"SOFTWARE\\JetBrains\\Rider";
    const wchar_t *rider_key_wow = L"SOFTWARE\\WOW6432Node\\JetBrains\\Rider";
    for (auto &i : collect_dotultimate_paths_from_registry(HKEY_CURRENT_USER, rider_key)) s.insert(i);
    for (auto &i : collect_dotultimate_paths_from_registry(HKEY_LOCAL_MACHINE, rider_key)) s.insert(i);
    for (auto &i : collect_dotultimate_paths_from_registry(HKEY_CURRENT_USER, rider_key_wow)) s.insert(i);
    for (auto &i : collect_dotultimate_paths_from_registry(HKEY_LOCAL_MACHINE, rider_key_wow)) s.insert(i);

    // Toolbox: env location
    for (auto &i : get_install_infos_from_toolbox(get_toolbox_path_from_env(), "rider64.exe")) s.insert(i);

    // Toolbox: registry default values
    const wchar_t *tb1 = L"Software\\JetBrains\\Toolbox\\";
    const wchar_t *tb2 = L"Software\\JetBrains s.r.o.\\JetBrainsToolbox\\";
    std::string tb;
    tb = get_toolbox_path_from_registry(HKEY_CURRENT_USER, tb1); if (!tb.empty()) for (auto &i : get_install_infos_from_toolbox(tb, "rider64.exe")) s.insert(i);
    tb = get_toolbox_path_from_registry(HKEY_LOCAL_MACHINE, tb1); if (!tb.empty()) for (auto &i : get_install_infos_from_toolbox(tb, "rider64.exe")) s.insert(i);
    tb = get_toolbox_path_from_registry(HKEY_CURRENT_USER, tb2); if (!tb.empty()) for (auto &i : get_install_infos_from_toolbox(tb, "rider64.exe")) s.insert(i);
    tb = get_toolbox_path_from_registry(HKEY_LOCAL_MACHINE, tb2); if (!tb.empty()) for (auto &i : get_install_infos_from_toolbox(tb, "rider64.exe")) s.insert(i);

    // Resource file, if any (currently noop)
    for (auto &i : get_install_infos_from_resource_file()) s.insert(i);

    return s;
}