mirror of
https://github.com/quine-global/hyper.git
synced 2026-01-17 05:58:41 -09:00
Fix Windows context menu (#1831)
System context menu refactoring. Fix problems when update/uninstall Hyper.
This commit is contained in:
parent
edd8667801
commit
55345ebe25
1 changed files with 53 additions and 25 deletions
|
|
@ -8,42 +8,70 @@ const regParts = [
|
||||||
{name: 'Icon', value: `${appPath}`}
|
{name: 'Icon', value: `${appPath}`}
|
||||||
];
|
];
|
||||||
|
|
||||||
function isRegistered(callback) {
|
function addValues(hyperKey, commandKey, callback) {
|
||||||
new Registry({
|
hyperKey.set(regParts[1].name, Registry.REG_SZ, regParts[1].value, err => {
|
||||||
hive: 'HKCU',
|
if (err) {
|
||||||
key: `${regKey}\\${regParts[0].key}`
|
console.error(err.message);
|
||||||
}).get(regParts[0].name, (err, entry) => {
|
}
|
||||||
callback(!err && entry && entry.value === regParts[0].value);
|
hyperKey.set(regParts[2].name, Registry.REG_SZ, regParts[2].value, err => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err.message);
|
||||||
|
}
|
||||||
|
commandKey.set(regParts[0].name, Registry.REG_SZ, regParts[0].value, err => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err.message);
|
||||||
|
}
|
||||||
|
callback();
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
exports.add = function (callback) {
|
exports.add = function (callback) {
|
||||||
isRegistered(registered => {
|
const hyperKey = new Registry({hive: 'HKCU', key: regKey});
|
||||||
if (!registered) {
|
const commandKey = new Registry({hive: 'HKCU', key: `${regKey}\\${regParts[0].key}`});
|
||||||
const regPromises = [];
|
|
||||||
regParts.forEach(part => {
|
hyperKey.keyExists((err, exists) => {
|
||||||
const reg = new Registry({hive: 'HKCU', key: part.key ? `${regKey}\\${part.key}` : regKey});
|
if (err) {
|
||||||
reg.create(() => {
|
console.error(err.message);
|
||||||
regPromises.push(new Promise((resolve, reject) => {
|
}
|
||||||
reg.set(part.name, Registry.REG_SZ, part.value, err => {
|
if (exists) {
|
||||||
if (err === null) {
|
commandKey.keyExists((err, exists) => {
|
||||||
resolve(true);
|
if (err) {
|
||||||
} else {
|
console.error(err.message);
|
||||||
return reject(err);
|
}
|
||||||
}
|
if (exists) {
|
||||||
});
|
addValues(hyperKey, commandKey, callback);
|
||||||
}));
|
} else {
|
||||||
|
commandKey.create(err => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err.message);
|
||||||
|
}
|
||||||
|
addValues(hyperKey, commandKey, callback);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
hyperKey.create(err => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err.message);
|
||||||
|
}
|
||||||
|
commandKey.create(err => {
|
||||||
|
if (err) {
|
||||||
|
console.error(err.message);
|
||||||
|
}
|
||||||
|
addValues(hyperKey, commandKey, callback);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
Promise.all(regPromises).then(() => callback());
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
exports.remove = function (callback) {
|
exports.remove = function (callback) {
|
||||||
isRegistered(registered => {
|
new Registry({hive: 'HKCU', key: regKey}).destroy(err => {
|
||||||
if (registered) {
|
if (err) {
|
||||||
new Registry({hive: 'HKCU', key: regKey}).destroy(() => callback());
|
console.error(err.message);
|
||||||
}
|
}
|
||||||
|
callback();
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue