mirror of
https://github.com/QuasarApp/CQtDeployer.git
synced 2025-04-26 09:44:33 +00:00
153 lines
5.1 KiB
JavaScript
153 lines
5.1 KiB
JavaScript
const VERSION = "1.5"
|
|
|
|
function Component()
|
|
{
|
|
generateTr();
|
|
}
|
|
|
|
function generateTr() {
|
|
component.setValue("DisplayName", qsTr("CQtDeployer " + VERSION ));
|
|
component.setValue("Description", qsTr("This package contains CQtDeployer version " + VERSION));
|
|
}
|
|
|
|
Component.prototype.createOperations = function() {
|
|
// // call default implementation to actually install README.txt!
|
|
component.createOperations();
|
|
systemIntegration();
|
|
|
|
}
|
|
|
|
function stripPath(path, separator) {
|
|
const array = path.split(separator);
|
|
|
|
let newPath = [];
|
|
|
|
array.forEach(function (item) {
|
|
if (!newPath.includes(item)) {
|
|
newPath.push(item);
|
|
}
|
|
});
|
|
|
|
return newPath.join(separator);
|
|
}
|
|
|
|
function stripWinPath(path) {
|
|
return stripPath(path, ';');
|
|
}
|
|
|
|
function stripUnixPath(path) {
|
|
return stripPath(path, ':');
|
|
}
|
|
|
|
function extractFileName(path) {
|
|
const fullName = path.substring(path.lastIndexOf('/') + 1);
|
|
|
|
const index = fullName.lastIndexOf('.');
|
|
if (index >= 0) {
|
|
return fullName.substring(0, index)
|
|
}
|
|
|
|
return fullName;
|
|
}
|
|
|
|
function generateShortCutCmd(cmd, icon) {
|
|
if (systemInfo.kernelType === "winnt") {
|
|
|
|
console.log("create icons!!! on Windows");
|
|
component.addOperation("CreateShortcut",
|
|
"@TargetDir@/" + cmd,
|
|
"@DesktopDir@/" + extractFileName(cmd) + ".lnk");
|
|
|
|
}
|
|
|
|
|
|
if (systemInfo.kernelType === "linux") {
|
|
console.log("create icons!!! on LINUX");
|
|
const name = extractFileName(cmd);
|
|
component.addOperation("CreateDesktopEntry",
|
|
"@HomeDir@/.local/share/applications/" + name + ".desktop",
|
|
"Version=@Version@\n
|
|
Type=Application\n
|
|
Terminal=true\n
|
|
Exec=@TargetDir@/" + cmd + ".sh\n
|
|
Name=" + name + "\n
|
|
Icon=@TargetDir@/" + icon + "\n
|
|
Name[en_US]=" + name);
|
|
|
|
console.log("create icons!!! on LINUX done");
|
|
}
|
|
}
|
|
|
|
function systemIntegration() {
|
|
targetDir = installer.value("TargetDir", "");
|
|
homeDir = installer.value("HomeDir", "");
|
|
|
|
console.log("install component")
|
|
console.log("targetDir " + targetDir)
|
|
console.log("hometDir " + homeDir)
|
|
|
|
if (systemInfo.kernelType === "winnt") {
|
|
|
|
component.addOperation('Execute', ["SETX", "cqtdeployer", targetDir + "\\" + VERSION + "\\cqtdeployer.bat"],
|
|
"UNDOEXECUTE", ["SETX", "cqtdeployer", ""])
|
|
component.addOperation('Execute', ["SETX", "cqtDir", targetDir + "\\" + VERSION + "\\"],
|
|
"UNDOEXECUTE", ["SETX", "cqtDir", ""])
|
|
|
|
|
|
let PATH = installer.environmentVariable("PATH");
|
|
const cqtDir = installer.environmentVariable("cqtDir");
|
|
|
|
console.log("path befor strip : " + PATH);
|
|
|
|
if (!PATH.includes(cqtDir) && cqtDir.length) {
|
|
PATH = stripWinPath(PATH);
|
|
console.log("path after strip : " + PATH);
|
|
|
|
component.addOperation('Execute', ["SETX", "PATH", PATH + ";%cqtDir%"])
|
|
}
|
|
|
|
} else {
|
|
|
|
if (!installer.fileExists(homeDir + "/.local/bin")) {
|
|
|
|
component.addOperation('Execute', ["mkdir", "-p", homeDir + "/.local/bin"])
|
|
|
|
QMessageBox["warning"](qsTr("install in system"), qsTr("Installer"),
|
|
qsTr("The \"~/local/bin\" folder was not initialized, you may need to reboot to work correctly!"),
|
|
QMessageBox.Ok);
|
|
|
|
const ansver = installer.execute('cat', [homeDir + "/.profile"]);
|
|
let result;
|
|
if (ansver.length >= 2) {
|
|
result = ansver[0];
|
|
}
|
|
|
|
if (!result.includes("/.local/bin")) {
|
|
|
|
const script = '\n# set PATH so it includes users private bin if it exists (generated by cqtdeployer installer) \n' +
|
|
'if [ -d "$HOME/.local/bin" ] ; then \n' +
|
|
' PATH="$HOME/.local/bin:$PATH" \n' +
|
|
'fi \n';
|
|
|
|
component.addOperation('AppendFile', [homeDir + "/.profile", script])
|
|
}
|
|
|
|
}
|
|
component.addOperation('Execute', ["ln", "-sf", targetDir + "/" + VERSION + "/cqtdeployer.sh",
|
|
homeDir + "/.local/bin/cqtdeployer"],
|
|
"UNDOEXECUTE", ["rm", "-f", homeDir + "/.local/bin/cqtdeployer"] )
|
|
|
|
component.addOperation('Execute', ["ln", "-sf", targetDir + "/" + VERSION + "/cqt.sh",
|
|
homeDir + "/.local/bin/cqt"],
|
|
"UNDOEXECUTE", ["rm", "-f", homeDir + "/.local/bin/cqt"] )
|
|
|
|
component.addOperation('Execute', ["ln", "-sf", targetDir + "/" + VERSION + "/cqt.sh",
|
|
homeDir + "/.local/bin/cqtdeployer.cqt"],
|
|
"UNDOEXECUTE", ["rm", "-f", homeDir + "/.local/bin/cqtdeployer.cqt"] )
|
|
|
|
generateShortCutCmd(VERSION + "/cqtdeployer", VERSION + "/icon.png");
|
|
|
|
}
|
|
|
|
}
|