diff --git a/CHANGELOG.md b/CHANGELOG.md index f133fa9..c6ea6c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 1.0.10 (Windows only) +* Fix VC runtime detection (detect additional GUID's) + ## 1.0.8 * \#8: Add tooltips to settings * \#36: Add ability to select Linux distribution type if OS is unsupported diff --git a/package.json b/package.json index 373cb7e..780c5ba 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "repertory-ui", - "version": "1.0.8", + "version": "1.0.10", "private": true, "author": "scott.e.graves@protonmail.com", "description": "GUI for Repertory - Repertory allows you to mount Sia and/or SiaPrime blockchain storage solutions via FUSE on Linux/OS X or via WinFSP on Windows.", diff --git a/releases.json b/releases.json index 6b8adbf..0594f29 100644 --- a/releases.json +++ b/releases.json @@ -151,13 +151,10 @@ } }, "win32": { - "1.0.8": { - "sha256": "1dcf2ca95ee9ce1893166e7966e4aaa465735d00476d99414c57d18e7232212f", - "sig": "AzXf0WkuGx4lXoGPgxsj2LDCAHwotKnvZHBFZv1f2A77sNtJaDQAgS3b4Hjg0AiWCRL9HzjJNprBv5lEUwc7AeRLXuj+4AI6Z7PeRaVs2NBgEHlIqldPwjime8bE2NBrkKfdDDdiAzhm3AqxgRzwhZ4sxkb3vNDdKIj4WnH79LsVCEcBgtuWalNvt3Q0i5ppBvu6+Iy/gZuGa7z+Jv2WU+Ijm7WjkmmmTdpcvP1UQTBL2UkriYOxVMIfrjHM0b2ch6RGBKUxS2h26h0xmJ7SzFoZ6lHcHDIxi8fsi7DIO/QDpottJPVgZLRuufSTyXLCbehLRI3dd1IWhQns0OTU11MBAUTRczJTaZ8nrjMesKdwbWqDDGMWOHyl39EuGIaGm3Mbi4iQWI3gz4RmX9kIWf0OSaT73okPvfjWA2Onn8IOs57TDw5fIyKKFjMkxqAPy0O+WonjJ5bd4Q/8HUpVx9M9NoClbztMQUhom2hVPkPiD3jQ8I9YcrmD9phZYkMf5As1G6RBsITsbpRA0bu9426y6K+nNJLPAM0TrW33oOziYV2z5HD1/Z+TsUMcusAPTbatjPLyLZ9kWIUqybPga8iPZW9iqszei2ywKl3EgAP/rZx2fn3qko9PvdpsoV6VBp9FxT2mguoRnkIo3lPGYXssBlfVBz0treGyjDoqcOrtciVLJbal54FTPU5o+Acuffi0Ft2F4qW7d3VglhEeA2i4zzPH2l8R0CuStei8ePMhOpebtByTPrclkvlbcOCg5adF+3/zTH9H261+P/IyrPct1ucvVpa6FlpcKfErWttRmxc9QhqiepyPUonLkHgB4Ur/ft6PzlE/+wD6arA7avSKdZqzeSksFSdnX/41fD8gL5CHfsCdbeqPvPd97CliiMCeGjVngQ5qFbC1+5DHuDopvs0yWcmDAO+nFrcQt3K01VjDYT+5plb263Ba3HKHqkT9N2gH8yWK/DdfT4Y8WAABomcgPeRSg6lAtNFv5RtWbSq9Q4dLFuhGM55EtXPG15zYAZqePCcyWYieP0wNuszcSsVNDScU8gqilwtn1oKO0ISZSYZUbdzI3fDc6SbaJNLwYdT/AlELZy0fAKILmJJN8MUXvcC7we6zyPOqwEf1ESLOb84Zw3+gPtH+Ao9dWHKdHOlyNyRzPvTYrcqSn2Uf3iHOLeoazqEEJ5Bh7jbDgVBkB4XEwijb+BvFV3cBcLdSg1Id3zZF02jkpaN4SMbEmqPbUv393CKRNs47p6ffFKKS5oUEpF6GpZq/wtjmKkdMSIzGVurbHPIaZI8JfLrEu/GAxAMGM7G3O5AiKOf0AH0wexhP5Vh6iE3MLNMA7n8SEQL5i/YUIL6b0tDL/wc=", - "urls": [ - "https://pixeldrain.com/api/file/u_pP3IAk", - "https://bitbucket.org/blockstorage/repertory-ui/downloads/repertory-ui_1.0.8_win.exe" - ] + "1.0.10": { + "sha256": "", + "sig": "", + "urls": [] } } }, @@ -214,7 +211,7 @@ "unavailable" ], "win32": [ - "1.0.8" + "1.0.10" ] } } diff --git a/src/helpers.js b/src/helpers.js index c11e5c1..18ba201 100644 --- a/src/helpers.js +++ b/src/helpers.js @@ -462,46 +462,56 @@ module.exports.getMissingDependencies = dependencies => { }; const Registry = require('winreg'); - for (const dep of dependencies) { - let hive = null; - const hiveName = dep.registry[0].split('\\')[0]; - switch (hiveName) { - case 'HKEY_CLASSES_ROOT': - hive = Registry.HKCR; - break; - case 'HKEY_CURRENT_CONFIG': - hive = Registry.HKCC; - break; - case 'HKEY_CURRENT_USER': - hive = Registry.HKCU; - break; - case 'HKEY_LOCAL_MACHINE': - hive = Registry.HKLM; - break; - case 'HKEY_USERS': - hive = Registry.HKU; - break; - default: - throw Error('Invalid registry hive: ' + hiveName); - } - - const key = dep.registry[0].substr(hiveName.length); - const regKey = new Registry({ - hive: hive, - key: key - }); - regKey.valueExists('DisplayName', (err, exists) => { - if (err || !exists) { - regKey.valueExists('ProductName', (err, exists) => { - if (err || !exists) { - missing.push(dep); - } - resolveIfComplete(); - }); - } else { - resolveIfComplete(); + const checkRegistry = (dep, index) => { + if (index >= dep.registry.length) { + missing.push(dep); + resolveIfComplete(); + } else { + let hive = null; + const hiveName = dep.registry[index].split('\\')[0]; + switch (hiveName) { + case 'HKEY_CLASSES_ROOT': + hive = Registry.HKCR; + break; + case 'HKEY_CURRENT_CONFIG': + hive = Registry.HKCC; + break; + case 'HKEY_CURRENT_USER': + hive = Registry.HKCU; + break; + case 'HKEY_LOCAL_MACHINE': + hive = Registry.HKLM; + break; + case 'HKEY_USERS': + hive = Registry.HKU; + break; + default: + throw Error('Invalid registry hive: ' + hiveName); } - }); + + const key = dep.registry[index].substr(hiveName.length); + const regKey = new Registry({ + hive: hive, + key: key + }); + regKey.valueExists('DisplayName', (err, exists) => { + if (err || !exists) { + regKey.valueExists('ProductName', (err, exists) => { + if (err || !exists) { + checkRegistry(dep, ++index); + } else { + resolveIfComplete(); + } + }); + } else { + resolveIfComplete(); + } + }); + } + }; + + for (const dependency of dependencies) { + checkRegistry(dependency,0); } } else { for (const dep of dependencies) {