electron-builder create .dmg on windows - macos

I want to create my electron app installer for windows, mac and linux however currectly it's only creating .exe file:
and some win-unpacked directory and some other files which I don't even know why I need because .exe file is installing my app and creating desktop shortcut and I don't even need those extra files to get app to work.
In other word - when I just copy .exe and run on other machine then it's succesfully installing therefore why I even need those other files?
So it's working correctly with windows but it does not create any files that I could run on macOS and linux like .dmg.
This is my package.json
{
"name": "screenrecorder",
"version": "1.0.0",
"description": "Electron application to record screen",
"main": "./src/js/main/index.js",
"scripts": {
"start": "electron ./src/js/main/index.js",
"compile:sass": "node-sass src/style/scss/main.scss src/style/css/output.css -w",
"build": "electron-builder"
},
"repository": {
"type": "git",
"url": "https://github.com/d0peCode/screenRecorder"
},
"build": {
"appId": "screenrecorder",
"mac": {
"category": "your.app.category.type",
"target": "dmg"
}
},
"author": "Borys Tyminski",
"license": "ISC",
"homepage": "https://github.com/d0peCode/screenRecorder#readme",
"dependencies": {
"angular": "^1.6.5",
"angular-route": "^1.6.5"
},
"devDependencies": {
"electron": "^6.0.2",
"electron-builder": "^21.2.0",
"node-sass": "^4.9.2"
}
}
And this is my log from terminal after running npm run build
C:\Users\Borys\Documents\work\screenRecorder\desktop>npm run build
screenrecorder#1.0.0 build >C:\Users\Borys\Documents\work\screenRecorder\desktop
electron-builder
• electron-builder version=21.2.0 os=10.0.18362
• loaded configuration file=package.json ("build" field)
• writing effective config file=dist\builder-effective-config.yaml
• packaging platform=win32 arch=x64 electron=6.0.6 appOutDir=dist\win-unpacked
• default Electron icon is used reason=application icon is not set
• building target=nsis file=dist\screenrecorder Setup 1.0.0.exe archs=x64 oneClick=true perMachine=false
• building block map blockMapFile=dist\screenrecorder Setup 1.0.0.exe.blockmap
Why it doesn't create macOS installer? And what are steps to make it do so?

You can not build macOS executables with Electron on Windows as it requires the Apple SDK and XCode tools. Linux works but you need to specify the format and architecture in your build configuration.
For example to build a Linux executable in AppImage format for ARMv7l CPUs you can use this configuration:
linux: {
target: {
target: 'appimage',
arch: ['armv7l']
}
}
The full documentation on Linux build options is available here.

Related

Cannot debug Rust in Visual Studio Code?

I am trying to debug a Rust program in VS Code, but I get an error:
After clicking OK, VS Code opens "settings.json":
I have these extensions installed:
My program is a simple "hello world" app.
Unfortunately VS Code can't debug Rust out of the box :( But no need to worry, just few steps of configuration will do the work :)
Steps
Install C/C++ extension if you are on windows and CodeLLDB if on OS X/Linux
Click Debug -> Add Configuration, a launch.json file should open, you need to change the program name here manually
{
"version": "0.2.0",
"configurations": [
{
"name": "(Windows) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceRoot}/target/debug/foo.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceRoot}",
"environment": [],
"externalConsole": true
},
{
"name": "(OSX) Launch",
"type": "lldb",
"request": "launch",
"program": "${workspaceRoot}/target/debug/foo",
"args": [],
"cwd": "${workspaceRoot}",
}
]
}
Make sure Allow setting breakpoints in any file is checkend under File -> Preferences -> Settings
For detailed steps and more you can refer the article I used to answer this
Credits- Forrest Smith
From your screenshots, you're on Windows, so here's how to proceed. This assumes you already took care of the basics:
VsCode has the recommended rust-analyzer extension installed.
Your project folder was initialized with cargo init. (Your project's folder name must be the same as the name of your package in Cargo.toml.)
You can cargo run from within your project directory and it works.
As indicated by various locations on the 'Net, you need to install another VsCode extension to make it so you can debug. Since you're on Windows, you want to use the MS C++ DevTools extension for VsCode, instead of the CodeLLDB one.
Next, you need a "launch" configuration setup. Select VsCode's Run >>> Add Configuration... menu item. Choose the C/C++: (Windows) launch option in the drop-down. You'll now have a launch.json file with a single configuration object.
You'll need to change the program property to "${workspaceFolder}/target/debug/${workspaceFolderBasename}.exe"; this depends on your package name being the same as the project folder's name. (I also changed the cwd property to "${workspaceFolder}", though I'm not sure it matters.) To be clearer, here's the configuration I have presently in my launch.json file (the preLaunchTask property is for later):
{
"name": "(Windows) Launch",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}/target/debug/${workspaceFolderBasename}.exe",
"preLaunchTask": "rust: cargo build",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"console": "externalTerminal"
}
At this point, as long as you've already built your project at least once, you can hit F5 and debug.
If you want F5 to also save your changes and rebuild your project before debugging, then you also have to add a build task and configure it to run before debugging starts.
To do that, add the build task by opening the Show All Commands box (either F1 or Ctrl+Shift+p) and choosing Tasks: Configure Task. Select rust: cargo build. It'll create a tasks.json file next to your launch.json; the defaults are all you need. My file looks like this:
{
"version": "2.0.0",
"tasks": [
{
"type": "cargo",
"command": "build",
"problemMatcher": [
"$rustc"
],
"group": "build",
"label": "rust: cargo build"
}
]
}
Then, to hook everything up, you just need to manually add the preLaunchTask property to your launch configuration with a value equal to the label in your task. E.g. "preLaunchTask": "rust: cargo build",, like what I have in my example launch.json up above.
At this point, whenever you press F5, VsCode will save your work, rebuild your project, then start debugging it.
Visual Studio Code is a general editor, but it can be configured to debug rust code.
Step 1.
Assuming that Visual Code, rust and cargo are installed, the first step is to enable the required extensions:
rust-analyzer
CodeLLDB
These only need to be installed one.
Step 2
The second step is to create the rust code. I have a folder called Rust, in which I keep the rust code. Changing to that folder, I use cargo new hello_world to create a new rust project.
Step 3
The third step is to change the folder for the project. There are two plausible options, but only one of them will work.
I changed to my Rust folder, and then I can edit the source code by following ``hello_world - src`.
To debug the code, it is necessary to create a launch.json file, using Run - Add configuration... However, the file isn't correct, with <your program> where the correct name should be. This is the wrong approach.
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug",
"program": "${workspaceFolder}/<your program>",
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
The documentation is a bid thin at this point. The correct approach is to pick a different folder, the top level of the project hello_world. The Cargo.toml file is available.
Now, when Run - Add configuration... is used, and the option of LLDB is selected -
the Cargo.toml file can be picked up -
and then the Cargo.toml file is used to correctly build the launch.json file -
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug executable 'hello_world'",
"cargo": {
"args": [
"build",
"--bin=hello_world",
"--package=hello_world"
],
"filter": {
"name": "hello_world",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in executable 'hello_world'",
"cargo": {
"args": [
"test",
"--no-run",
"--bin=hello_world",
"--package=hello_world"
],
"filter": {
"name": "hello_world",
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
Now, both Run - Start debugging and Run - Run without Debugging both work properly.

How can i see my flutter app output in both Android and IOS simulator simultaneously?

I am using the android studio to develop flutter application, I want to know is there any way I can see my app output in both android and ios simulator also I can perform hot reload on both simulator?
To debug multiple devices concurrently you should set up a launch config for each device that has the deviceId fieldset (this is the same ID you'd pass to flutter run -d xxx). Open the launch config by clicking Debug -> Open Configurations. Add a compound config at the bottom that will launch both (or more) configurations at the same time:
{
"version": "0.2.0",
"configurations": [
{
"name": "Current Device",
"request": "launch",
"type": "dart"
},
{
"name": "Android",
"request": "launch",
"type": "dart",
"deviceId": "android"
},
{
"name": "iPhone",
"request": "launch",
"type": "dart",
"deviceId": "iphone"
},
],
"compounds": [
{
"name": "All Devices",
"configurations": ["Android", "iPhone"],
}
]
}
Selecting the compound config on the Debug side bar and clicking Debug -> Start Debugging (or Start Without Debugging) will launched debug sessions for each device at the same time.
Yes, there is a way to do that First install android and ios simulator and one by one Flutter run after that when both simulators are running. you can Hot reload from here.
and if you are looking for running both simultaneously then just then select all available devices and run your command. flutter run
Finally, I found a command to run an app in both Ios and Android simulator.
write below command in a terminal where your app is located
flutter run -d all
You can press r keyword in terminal to do hot reload.

How can I build an existing Windows-only Visual Studio project from Bash using WSL

I have an existing C++ project that I've configured and built in Visual Studio. This project's only target is Windows, no other platforms. I'm using Bash in WSL to launch the executable.
I prefer to develop in Visual Code (not Visual Studio). I prefer to build and launch applications through Bash (strong Linux background).
Right now, my development workflow is:
Edit code in VS Code
Switch to Visual studio and click the build button
Switch to Bash and execute the built program
Since I only keep Visual Studio open for building, I would much prefer to build by command line through Bash.
My naive approach was to use an open source tool to convert the Visual Studio project file into a CMake file. Then cmake & make from Bash, but I stopped when I started encountering errors looking for windows.h (maybe I just need to add some windows include paths to my include_path).
I'm not sure what the best way to go about this would be. Any suggestions would be appreciated!
If the project is entirely C++, there should be no reason to leave WSL. Building and launching the application can be easily handled right there!
You can absolutely build by the command line in bash by using
g++ -o <outputfile> <inputfiles>
However, the easiest way to run the program is to create a build configuration in Visual Code. You will need 2 files: launch.json and tasks.json
To create the launch file, hit F1 (or open your command pallet) and select Tasks: Configure Default Build Task. It should look something like this.
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "g++ build active file",
"command": "/usr/bin/g++",
"args": [
"-g",
"${file}", //input files
"-o",
"${fileDirname}/a.out" //output file
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
To create launch.json, go to the 'debug' tab and select 'create a launch.json file'. It should look something like this
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "g++ build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/a.out", //output file
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
"preLaunchTask": "g++ build active file",
"miDebuggerPath": "/usr/bin/gdb"
}
]
}
with both of these files in place, all you have to do is hit the run button like in Visual Studio.
MSBuild.exe is provided with my installation of Microsoft Visual Studio. From within WSL bash, I can invoke MSBuild.exe and give the .sln file of my project as the first and only argument.
The compilation output is written to the terminal.

vscode launch.json debug and open specific url

Given the following auto-generated Visual Studio Code launch.json config:
I'd like this to launch the browser to localhost:5000/swagger when I debug, but I've tried half a dozen different things and nothing works. It just opens to localhost:5000. What am I missing here? There's no general documentation (that I could find) on all of the attributes available aside from hitting Ctrl+space to see a list, which doesn't help much.
I left out my failed attempts at getting this to work how I want...
{
"name": "Launch Demo.Api",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceRoot}/Demo.Api/bin/Debug/netcoreapp2.1/Demo.Api.dll",
"args": [],
"cwd": "${workspaceRoot}/Demo.Api",
"stopAtEntry": false,
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}",
"windows": {
"command": "cmd.exe",
"args": "/C start ${auto-detect-url}"
},
"osx": {
"command": "open"
},
"linux": {
"command": "xdg-open"
}
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
}
this one also works for me on VSCode 1.39.2
// Enable launching a web browser when ASP.NET Core starts. For more information: https://aka.ms/VSCode-CS-LaunchJson-WebBrowser
"serverReadyAction": {
"action": "openExternally",
"pattern": "\\bNow listening on:\\s+(https?://\\S+)",
"uriFormat": "%s/swagger"
},
This one works for me:
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}",
"windows": {
"command": "cmd.exe",
"args": "/C start ${auto-detect-url}/swagger"
}
}
I tried the following and it seems to work
"launchBrowser": {
"enabled": true,
"args": "${auto-detect-url}/swagger",
An alternative would be using VSCode 1.48 (July 2020), which adds a Debug: Open Link command:
A new Debug: Open Link command has been added to quickly debug any URL.
Previously, to debug a browser, you had to install the Debugger for Chrome extension and write a launch.json config file to debug a page.
This command allows you to debug any URL without needing additional launch configurations.
Theme: Earthsong
If you have a URL selected in your active editor, it will open that automatically.
Otherwise, VS Code will prompt you to enter a URL, pre-filling with the URL in your clipboard, if any.
You can adjust the debug configuration used in this command via the debug.javascript.debugByLinkOptions setting.
That last setting can be used for specifying the right certificate
By default we'll use a different user data dir per workspace.
You can use a "stable" directory by adding something like to your user settings:
"debug.javascript.debugByLinkOptions": {
"userDataDir": "C:/Users/user/my-user-data-dur"
}
This will then allow any flags or settings you have to stick. I'm not sure which flags you need to fiddle with to make Chrome happy, but that config should let you set them in a way that won't be reset.
And VSCode 1.50 (Sept. 2020) will improve that feature:
Adding a button to launch it directly from the Run and debug tab (instead of having to open the Palette).
Currently the Run and debug tab only proposes to create a launch.json file, or to use Node.js Debug Terminal, but now it would be simpler to propose the Open link feature directly.
It would also be great if, when the URL is filled, it is automatically saved in .vscode/settings.json, to avoid to have to fill it again every time.
See commit dc22997 as a result.
If you are debugging node project this worked for me.
launch.json in my front-end app (Angular)
{
"version": "0.2.0",
"configurations": [
{
"name": "Launch via npm",
"type": "node",
"request": "launch",
"cwd": "${workspaceFolder}",
"runtimeExecutable": "npm",
"runtimeArgs": [ "run-script", "start" ],
"console": "externalTerminal"
}
]
}
package.json that contains the npm scripts
In my case since I was debugging Angular using ng serve I had to specify the --open=true argument so the browser would launch
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve --ssl --ssl-cert %APPDATA%\\ASP.NET\\https\\%npm_package_name%.pem --ssl-key %APPDATA%\\ASP.NET\\https\\%npm_package_name%.key --open=true",
"build": "ng build",
"watch": "ng build --watch --configuration development",
"test": "ng test",
"prestart": "node aspnetcore-https"
},
So i had this issue trying to run a C# API on Linux and this is the solution that worked for me
in .vsocde/launch.json add this in the configuration property
"launchBrowser": {
"enabled": true,
// change this to your OS name, linux, osx or windows
// you also need to change the command since xdg-open only works on linux
"linux": {
"command": "xdg-open",
"args": "${auto-detect-url}/swagger/index.html"
}
}

How to run a file of google ranking in node.js

I am newbie to Node.js and I have downloaded the google ranking from github. When i try to run a file example.js, its giving me the error "Cannot find module 'jscrape'".
I even tried to install the jscrape module but its giving me error.
I found dependencies in package.json file as follows
{
"author": "Ben Buckman <ben#newleafdigital.com> (http://newleafdigital.com/)",
"name": "google-ranking",
"description": "Fetch the Google search ranking for a phrase",
"version": "0.0.1",
"homepage": "https://github.com/newleafdigital/nodejs-google-ranking",
"repository": {
"url": "git#github.com:newleafdigital/nodejs-google-ranking.git"
},
"main": "google-ranking.js",
"dependencies": {
"jscrape": "0.0.4",
"async": "~0.1.22"
},
"devDependencies": {},
"optionalDependencies": {},
"engines": {
"node": "*"
}
"scripts": {
"preinstall": "npm install jscrape"
}
}
As i am very new to node.js, Can anyone please help me in doing this.
I'd recommend visiting the actual page http://nodejs.org/ as this provides a lot of information on downloading, installing and general how to use. Along with a vast amount of documentation.
Also I am sure jScrape is a piece of software built to be used by Node. With this kind of software (Other examples include WebSockets.IO, Express) they have to be downloaded and installed using Node.

Resources