Fix VirtViewer detection on Windows + manual path override
VirtViewer's installer folder name includes the version number (e.g. "VirtViewer v11.0-256"), so the previous hardcoded path never matched a real install. Now scans Program Files for any VirtViewer* folder, and adds a Settings dialog (Windows only) to pick the remote-viewer.exe path manually as a fallback.
This commit is contained in:
@@ -6,6 +6,9 @@ const emptyEl = document.getElementById('emptyState');
|
||||
const errorEl = document.getElementById('error');
|
||||
const noticeEl = document.getElementById('notice');
|
||||
const refreshBtn = document.getElementById('refreshBtn');
|
||||
const settingsBtn = document.getElementById('settingsBtn');
|
||||
const settingsOverlay = document.getElementById('settingsOverlay');
|
||||
const viewerPathDisplay = document.getElementById('viewerPathDisplay');
|
||||
|
||||
document.getElementById('logoutBtn').addEventListener('click', async () => {
|
||||
await api.proxmox.logout();
|
||||
@@ -13,6 +16,42 @@ document.getElementById('logoutBtn').addEventListener('click', async () => {
|
||||
|
||||
refreshBtn.addEventListener('click', () => loadVMs());
|
||||
|
||||
// ── Settings (Windows only — VirtViewer's install folder name carries the
|
||||
// version number, so auto-detection can miss non-standard installs) ──
|
||||
|
||||
initSettings();
|
||||
|
||||
async function initSettings() {
|
||||
const platform = await api.settings.platform();
|
||||
if (platform !== 'win32') return;
|
||||
|
||||
settingsBtn.classList.remove('hidden');
|
||||
settingsBtn.addEventListener('click', openSettings);
|
||||
document.getElementById('closeSettingsBtn').addEventListener('click', closeSettings);
|
||||
document.getElementById('browseViewerBtn').addEventListener('click', async () => {
|
||||
const chosen = await api.settings.browseViewerPath();
|
||||
if (chosen) await refreshViewerPathDisplay();
|
||||
});
|
||||
document.getElementById('resetViewerBtn').addEventListener('click', async () => {
|
||||
await api.settings.clearViewerPath();
|
||||
await refreshViewerPathDisplay();
|
||||
});
|
||||
}
|
||||
|
||||
async function openSettings() {
|
||||
await refreshViewerPathDisplay();
|
||||
settingsOverlay.classList.remove('hidden');
|
||||
}
|
||||
|
||||
function closeSettings() {
|
||||
settingsOverlay.classList.add('hidden');
|
||||
}
|
||||
|
||||
async function refreshViewerPathDisplay() {
|
||||
const viewerPath = await api.settings.getViewerPath();
|
||||
viewerPathDisplay.textContent = viewerPath || 'automatisch erkannt';
|
||||
}
|
||||
|
||||
// ── Load on mount ─────────────────────────────────────────
|
||||
|
||||
async function loadVMs() {
|
||||
|
||||
Reference in New Issue
Block a user