7 Commits

Author SHA1 Message Date
mmvanheusden
1053c7b114 minor fix 2022-07-22 20:48:37 +02:00
mmvanheusden
510d80c58a 2.0.2 2022-07-22 20:20:30 +02:00
mmvanheusden
894197e75e Fix the working directory problem for every platform 2022-07-22 20:18:35 +02:00
mmvanheusden
eca48e2495 Add a notice thing to the youtube tuorial 2022-07-21 09:47:30 +02:00
mmvanheusden
2bd8dc7c41 2.0.1 2022-07-09 09:30:23 +02:00
mmvanheusden
b8eb915788 Add a hacky fix for Windows portable builds
Signed-off-by: mmvanheusden <50550545+mmvanheusden@users.noreply.github.com>
2022-07-09 09:26:40 +02:00
mmvanheusden
5c0fe6fc9a fix badge 2022-07-08 22:05:54 +02:00
5 changed files with 104 additions and 85 deletions

View File

@@ -5,7 +5,7 @@
<img alt="GitHub all releases" src="https://img.shields.io/github/downloads/mmvanheusden/SteamDepotDownloaderGUI/total?color=orange&label=downloads">
<img alt="GitHub last commit" src="https://img.shields.io/github/last-commit/mmvanheusden/SteamDepotDownloaderGUI?color=crimson">
<img alt="Visitor Count" src="https://visitor-badge.glitch.me/badge?page_id=mmvanheusden.SteamDepotDownloaderGUI">
<a href="https://www.codefactor.io/repository/github/mmvanheusden/steamdepotdownloadergui/overview/rewrite"><img src="https://www.codefactor.io/repository/github/mmvanheusden/steamdepotdownloadergui/badge/rewrite" alt="CodeFactor" /></a>
<a href="https://www.codefactor.io/repository/github/mmvanheusden/steamdepotdownloadergui/overview/rewrite"><img src="https://www.codefactor.io/repository/github/mmvanheusden/steamdepotdownloadergui/badge/master" alt="CodeFactor" /></a>
</p>
<p align="center">
<img alt="Screenshot" src="screenshot.png" />
@@ -23,7 +23,7 @@ from [GitHub](https://github.com/mmvanheusden/SteamDepotDownloaderGUI/releases/l
Enter everything you normally would in the SteamDepotDownloader console.
There is a video tutorial available [here](https://www.youtube.com/watch?v=dQw4w9WgXcQ).
There is a video tutorial available [here](https://www.youtube.com/watch?v=dQw4w9WgXcQ). (not done yet)
## Contributing
@@ -34,4 +34,4 @@ Pull requests are welcome. For major changes, please open an issue first to disc
Please make sure to keep code consistent and cross-platform compatible.
![License](license.png)
![License](license.png)

View File

@@ -1,4 +1,12 @@
const {checkDotnet, download, createCommand, runCommand, removeDir, removeFile, unzip} = require("./utils")
const {
checkDotnet,
download,
createCommand,
runCommand,
removeDir,
removeFile,
unzip
} = require("./utils")
function submitForm() {
checkDotnet().then(async function (result) {
@@ -6,6 +14,7 @@ function submitForm() {
console.error("dotnet not found in PATH")
document.getElementById("dotnetwarning").hidden = false
} else {
console.info("dotnet found in PATH")
// Remove the old depotdownloader directory

128
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "steamdepotdownloadergui",
"version": "2.0.0",
"version": "2.0.2",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "steamdepotdownloadergui",
"version": "2.0.0",
"version": "2.0.2",
"license": "WTFPL",
"dependencies": {
"follow-redirects": "^1.15.1"
@@ -296,9 +296,9 @@
"dev": true
},
"node_modules/@types/node": {
"version": "16.11.43",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.43.tgz",
"integrity": "sha512-GqWykok+3uocgfAJM8imbozrqLnPyTrpFlrryURQlw1EesPUCx5XxTiucWDSFF9/NUEXDuD4bnvHm8xfVGWTpQ==",
"version": "16.11.45",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.45.tgz",
"integrity": "sha512-3rKg/L5x0rofKuuUt5zlXzOnKyIHXmIu5R8A0TuNDMF2062/AOIDBciFIjToLEJ/9F9DzkHNot+BpNsMI1OLdQ==",
"dev": true
},
"node_modules/@types/plist": {
@@ -313,9 +313,9 @@
}
},
"node_modules/@types/verror": {
"version": "1.10.5",
"resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz",
"integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==",
"version": "1.10.6",
"resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz",
"integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==",
"dev": true,
"optional": true
},
@@ -341,9 +341,9 @@
"dev": true
},
"node_modules/acorn": {
"version": "8.7.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
"integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
"integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -966,12 +966,15 @@
}
},
"node_modules/clone-response": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
"integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
"integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
"dev": true,
"dependencies": {
"mimic-response": "^1.0.0"
},
"funding": {
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/color-convert": {
@@ -1380,9 +1383,9 @@
}
},
"node_modules/electron": {
"version": "19.0.8",
"resolved": "https://registry.npmjs.org/electron/-/electron-19.0.8.tgz",
"integrity": "sha512-OWK3P/NbDFfBUv+wbYv1/OV4jehY5DQPT7n1maQJfN9hsnrWTMktXS/bmS05eSUAjNAzHmKPKfiKH2c1Yr7nGw==",
"version": "19.0.9",
"resolved": "https://registry.npmjs.org/electron/-/electron-19.0.9.tgz",
"integrity": "sha512-ooEwrv8Y7NSzdhKcl6kPCYecnzcg5nFWuS5ryG+VFH3MMBR8zXh9nW2wLsZrBz6OGUxXrcc5BKBC7dA8C6RhGQ==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -1629,9 +1632,9 @@
}
},
"node_modules/eslint": {
"version": "8.19.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz",
"integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==",
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz",
"integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==",
"dev": true,
"dependencies": {
"@eslint/eslintrc": "^1.3.0",
@@ -2134,9 +2137,9 @@
}
},
"node_modules/globals": {
"version": "13.16.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz",
"integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==",
"version": "13.17.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
"integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -2962,27 +2965,18 @@
}
},
"node_modules/plist": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz",
"integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz",
"integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==",
"dev": true,
"dependencies": {
"base64-js": "^1.5.1",
"xmlbuilder": "^9.0.7"
"xmlbuilder": "^15.1.1"
},
"engines": {
"node": ">=6"
}
},
"node_modules/plist/node_modules/xmlbuilder": {
"version": "9.0.7",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
"integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==",
"dev": true,
"engines": {
"node": ">=4.0"
}
},
"node_modules/prelude-ls": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
@@ -3844,7 +3838,6 @@
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
"integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
"dev": true,
"optional": true,
"engines": {
"node": ">=8.0"
}
@@ -4124,9 +4117,9 @@
"dev": true
},
"@types/node": {
"version": "16.11.43",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.43.tgz",
"integrity": "sha512-GqWykok+3uocgfAJM8imbozrqLnPyTrpFlrryURQlw1EesPUCx5XxTiucWDSFF9/NUEXDuD4bnvHm8xfVGWTpQ==",
"version": "16.11.45",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.45.tgz",
"integrity": "sha512-3rKg/L5x0rofKuuUt5zlXzOnKyIHXmIu5R8A0TuNDMF2062/AOIDBciFIjToLEJ/9F9DzkHNot+BpNsMI1OLdQ==",
"dev": true
},
"@types/plist": {
@@ -4141,9 +4134,9 @@
}
},
"@types/verror": {
"version": "1.10.5",
"resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.5.tgz",
"integrity": "sha512-9UjMCHK5GPgQRoNbqdLIAvAy0EInuiqbW0PBMtVP6B5B2HQJlvoJHM+KodPZMEjOa5VkSc+5LH7xy+cUzQdmHw==",
"version": "1.10.6",
"resolved": "https://registry.npmjs.org/@types/verror/-/verror-1.10.6.tgz",
"integrity": "sha512-NNm+gdePAX1VGvPcGZCDKQZKYSiAWigKhKaz5KF94hG6f2s8de9Ow5+7AbXoeKxL8gavZfk4UquSAygOF2duEQ==",
"dev": true,
"optional": true
},
@@ -4169,9 +4162,9 @@
"dev": true
},
"acorn": {
"version": "8.7.1",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.1.tgz",
"integrity": "sha512-Xx54uLJQZ19lKygFXOWsscKUbsBZW0CPykPhVQdhIeIwrbPmJzqeASDInc8nKBnp/JT6igTs82qPXz069H8I/A==",
"version": "8.8.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz",
"integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==",
"dev": true
},
"acorn-jsx": {
@@ -4644,9 +4637,9 @@
}
},
"clone-response": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz",
"integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz",
"integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==",
"dev": true,
"requires": {
"mimic-response": "^1.0.0"
@@ -4969,9 +4962,9 @@
}
},
"electron": {
"version": "19.0.8",
"resolved": "https://registry.npmjs.org/electron/-/electron-19.0.8.tgz",
"integrity": "sha512-OWK3P/NbDFfBUv+wbYv1/OV4jehY5DQPT7n1maQJfN9hsnrWTMktXS/bmS05eSUAjNAzHmKPKfiKH2c1Yr7nGw==",
"version": "19.0.9",
"resolved": "https://registry.npmjs.org/electron/-/electron-19.0.9.tgz",
"integrity": "sha512-ooEwrv8Y7NSzdhKcl6kPCYecnzcg5nFWuS5ryG+VFH3MMBR8zXh9nW2wLsZrBz6OGUxXrcc5BKBC7dA8C6RhGQ==",
"dev": true,
"requires": {
"@electron/get": "^1.14.1",
@@ -5166,9 +5159,9 @@
"dev": true
},
"eslint": {
"version": "8.19.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.19.0.tgz",
"integrity": "sha512-SXOPj3x9VKvPe81TjjUJCYlV4oJjQw68Uek+AM0X4p+33dj2HY5bpTZOgnQHcG2eAm1mtCU9uNMnJi7exU/kYw==",
"version": "8.20.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.20.0.tgz",
"integrity": "sha512-d4ixhz5SKCa1D6SCPrivP7yYVi7nyD6A4vs6HIAul9ujBzcEmZVM3/0NN/yu5nKhmO1wjp5xQ46iRfmDGlOviA==",
"dev": true,
"requires": {
"@eslint/eslintrc": "^1.3.0",
@@ -5562,9 +5555,9 @@
}
},
"globals": {
"version": "13.16.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.16.0.tgz",
"integrity": "sha512-A1lrQfpNF+McdPOnnFqY3kSN0AFTy485bTi1bkLk4mVPODIUEcSfhHgRqA+QdXPksrSTTztYXx37NFV+GpGk3Q==",
"version": "13.17.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.17.0.tgz",
"integrity": "sha512-1C+6nQRb1GwGMKm2dH/E7enFAMxGTmGI7/dEdhy/DNelv85w9B72t3uc5frtMNXIbzrarJJ/lTCjcaZwbLJmyw==",
"dev": true,
"requires": {
"type-fest": "^0.20.2"
@@ -6181,21 +6174,13 @@
"optional": true
},
"plist": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.5.tgz",
"integrity": "sha512-83vX4eYdQp3vP9SxuYgEM/G/pJQqLUz/V/xzPrzruLs7fz7jxGQ1msZ/mg1nwZxUSuOp4sb+/bEIbRrbzZRxDA==",
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/plist/-/plist-3.0.6.tgz",
"integrity": "sha512-WiIVYyrp8TD4w8yCvyeIr+lkmrGRd5u0VbRnU+tP/aRLxP/YadJUYOMZJ/6hIa3oUyVCsycXvtNRgd5XBJIbiA==",
"dev": true,
"requires": {
"base64-js": "^1.5.1",
"xmlbuilder": "^9.0.7"
},
"dependencies": {
"xmlbuilder": {
"version": "9.0.7",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-9.0.7.tgz",
"integrity": "sha512-7YXTQc3P2l9+0rjaUbLwMKRhtmwg1M1eDf6nag7urC7pIPYLD9W/jmzQ4ptRSUbodw5S0jfoGTflLemQibSpeQ==",
"dev": true
}
"xmlbuilder": "^15.1.1"
}
},
"prelude-ls": {
@@ -6881,8 +6866,7 @@
"version": "15.1.1",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-15.1.1.tgz",
"integrity": "sha512-yMqGBqtXyeN1e3TGYvgNgDVZ3j84W4cwkOXQswghol6APgZWaff9lnbvN7MHYJOiXsvGPXtjTYJEiC9J2wv9Eg==",
"dev": true,
"optional": true
"dev": true
},
"y18n": {
"version": "5.0.8",

View File

@@ -1,13 +1,16 @@
{
"name": "steamdepotdownloadergui",
"version": "2.0.0",
"version": "2.0.2",
"description": "DepotDownloader Electron frontend",
"main": "main.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "electron .",
"build": "electron-builder -c electron-builder.yml -wl -p never",
"buildall": "electron-builder -c electron-builder.yml -mwl -p never"
"buildall": "electron-builder -c electron-builder.yml -mwl -p never",
"buildlinux": "electron-builder -c electron-builder.yml -l -p never",
"buildwin": "electron-builder -c electron-builder.yml -w -p never",
"buildmacos": "electron-builder -c electron-builder.yml -m -p never"
},
"repository": {
"type": "git",

View File

@@ -2,6 +2,8 @@
* Checks if dotnet is installed in the system path
* @returns {Promise<unknown>} A promise that resolves to true if dotnet is installed, false otherwise
*/
function checkDotnet() {
return new Promise((resolve) => {
if (process.platform.toString().includes("win")) {
@@ -38,7 +40,8 @@ function download(url) {
return new Promise((resolve) => {
const {https} = require("follow-redirects")
const fs = require("fs")
const file = fs.createWriteStream(url.split("/").pop().toString())
const path = require("path")
const file = fs.createWriteStream(platformpath() + path.sep + url.split("/").pop())
https.get(url, function (response) {
response.pipe(file)
file.on("finish", function () {
@@ -57,7 +60,8 @@ function download(url) {
function removeFile(file) {
return new Promise((resolve) => {
const fs = require("fs")
fs.unlink(file, function (err) {
const path = require("path")
fs.unlink(platformpath() + path.sep + file, function (err) {
if (err) {
console.error(err)
}
@@ -71,10 +75,11 @@ function removeFile(file) {
* @param dir The directory to remove
* @returns {Promise<unknown>} A promise that resolves when the directory is removed (or fails)
*/
function removeDir(dir) {
function removeDir(dir,) {
return new Promise((resolve) => {
const fs = require("fs")
fs.rm(dir, {recursive: true, force: true}, function (err) {
const path = require("path")
fs.rm(platformpath() + path.sep + dir, {recursive: true, force: true}, function (err) {
if (err) {
console.error(err)
}
@@ -91,9 +96,11 @@ function removeDir(dir) {
*/
function unzip(file, target) {
const {exec} = require("child_process")
const path = require("path")
return new Promise((resolve) => {
if (process.platform.toString().includes("win")) {
const command = "powershell.exe -Command Expand-Archive -Path " + __dirname + "/" + file + " -Destination " + target
const command = "powershell.exe -Command Expand-Archive -Path " + platformpath() + path.sep + file + " -Destination " + platformpath() + path.sep + target
exec(command, function (error, stdout, stderr) {
if (error) {
console.error("Unzipping failed with error: " + error)
@@ -126,6 +133,9 @@ function unzip(file, target) {
* @returns {string} The final command to run
*/
const createCommand = () => {
// Import path so \ can be put in a string
const path = require("path")
// The values inputted by the user in the form
let username = document.forms["theform"]["username"].value
let password = document.forms["theform"]["password"].value
@@ -138,7 +148,7 @@ const createCommand = () => {
if (osdropdown.options[osdropdown.selectedIndex].text.includes("Gnome")) {
return `gnome-terminal -e 'bash -c "dotnet ./depotdownloader/DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ./games/${appid}/ -max-servers 50 -max-downloads 16";bash'`
} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Windows")) {
return `start cmd.exe /k dotnet ./depotdownloader/DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ./games/${appid}/ -max-servers 50 -max-downloads 16`
return `start cmd.exe /k dotnet ${platformpath()}${path.sep}depotdownloader${path.sep}DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${platformpath()}${path.sep}games${path.sep}${appid}/ -max-servers 50 -max-downloads 16`
} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("macOS")) {
return `osascript -c 'tell application "Terminal" to do script 'dotnet ./depotdownloader/DepotDownloader.dll -username ${username} -password ${password} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ./games/${appid}/ -max-servers 50 -max-downloads 16'`
} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Konsole")) {
@@ -173,4 +183,17 @@ function runCommand(command) {
})
}
module.exports = {checkDotnet, download, createCommand, runCommand, removeDir, removeFile, unzip}
const platformpath = () => {
if ((__dirname.includes("AppData") || __dirname.includes("Temp")) && process.platform.toString().includes("win")) {
// Windows portable exe
return process.env.PORTABLE_EXECUTABLE_DIR
} else if (__dirname.includes("/tmp/") && process.platform.toString().includes("linux")) {
// Linux AppImage
return process.cwd()
} else {
// .zip binary
return __dirname
}
}
module.exports = {checkDotnet, download, createCommand, runCommand, removeDir, removeFile, unzip, platformpath}