The Big NW.js Roundup - News & Tips

  • Do not run it every tick, it will kill performance.

    Yeah it was just for testing purposes.

    I'll try the workaround for the overlay not refreshing, but I already have objects moving on and out of screen (namely one tiledbackgound looping infinitely), so I'm not expecting too much ^^

    I will see if that works and come back to share the results.

  • > Do not run it every tick, it will kill performance.

    Yeah it was just for testing purposes.

    I'll try the workaround for the overlay not refreshing, but I already have objects moving on and out of screen (namely one tiledbackgound looping infinitely), so I'm not expecting too much ^^

    I will see if that works and come back to share the results.

    Make sure you have the right chromium args as well. If nothing else works, you'd have up upload something for me to test with the given NWjs version.

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • Hey there, is there a way to disable the Alt+Space windows menu?

  • Hey there, is there a way to disable the Alt+Space windows menu?

    I know which menu you mean and I could reproduce in both windowed and even fullscreen mode. I'm currently not aware of a way to disable it but I'm sure it's technically possible.

    I've asked in their Google Group for NWjs related questions.

    (Topic: groups.google.com/forum )

  • Guys, I thought I'd share with you the best signing and notarizing method for MacOS, since it's now the only way to distribute your apps on Mac.

    I found it right here https://github.com/nwjs/nw.js/issues/7117#issuecomment-581738908.

    You have to create a NWsign.sh file that contains this code :

    #!/usr/bin/env node
    
    const APP = "path/to/your/app.app";
    const IDENTITY = "identity of Developer ID cert";
    
    /****************************************************************************/
    
    console.log("### finding things to sign");
    
    const fs = require('fs');
    const child_process = require('child_process');
    
    const items = [];
    
    const frameworksDir = `${APP}/Contents/Frameworks/nwjs Framework.framework`;
    
    let currentVersionDir;
    for (const dir of fs.readdirSync(`${frameworksDir}/Versions`)) {
     if (fs.statSync(`${frameworksDir}/Versions/${dir}`).isDirectory) {
     currentVersionDir = `${frameworksDir}/Versions/${dir}`;
     break;
     }
    }
    if (!currentVersionDir) {
     console.error(`couldn't find "${frameworksDir}/Versions/[version]"`);
     process.exit(1);
    }
    for (const file of fs.readdirSync(`${currentVersionDir}`)) {
     if (file.endsWith('.dylib')) {
     items.push(`${currentVersionDir}/${file}`);
     }
    }
    for (const file of fs.readdirSync(`${currentVersionDir}/Helpers`)) {
     if (/^[a-z0-9_]*$/.test(file) || file.endsWith('.app')) {
     items.push(`${currentVersionDir}/Helpers/${file}`);
     }
    }
    for (const file of fs.readdirSync(`${currentVersionDir}/Libraries`)) {
     if (file.endsWith('.dylib')) {
     items.push(`${currentVersionDir}/Libraries/${file}`);
     }
    }
    for (const file of fs.readdirSync(`${currentVersionDir}/XPCServices`)) {
     if (file.endsWith('.xpc')) {
     items.push(`${currentVersionDir}/XPCServices/${file}`);
     }
    }
    items.push(frameworksDir);
    
    /****************************************************************************/
    
    console.log("");
    console.log("### signing");
    
    function exec(cmd) {
     console.log(cmd);
     const result = child_process.spawnSync(cmd, {shell: true, stdio: 'inherit'});
     if (result.status !== 0) {
     console.log(`Command failed with status ${result.status}`);
     if (result.error) console.log(result.error);
     process.exit(1);
     }
    }
    
    for (const item of items) {
     exec(`codesign --verbose --force --deep --strict --options runtime --timestamp --sign "${IDENTITY}" --entitlements neededToRun.entitlements "${item}"`);
    }
    
    exec(`codesign --verbose --force --deep --strict --options runtime --timestamp --sign "${IDENTITY}" --entitlements neededToRun.entitlements "${APP}"`);
    
    /****************************************************************************/
    
    console.log("");
    console.log("### verifying signature");
    
    exec(`codesign --verify -vvvv "${APP}"`);

    You just have to change the two first const

    1. with your app's path

    2. with the Developer ID Application of your developer.apple.com account. (you have to have this certificate installed in your mac keychain.)

    Then create another file :

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
     <dict>
     <key>com.apple.security.automation.apple-events</key>
     <true/>
     <key>com.apple.security.cs.allow-dyld-environment-variables</key>
     <true/>
     <key>com.apple.security.cs.allow-jit</key>
     <true/>
     <key>com.apple.security.cs.allow-unsigned-executable-memory</key>
     <true/>
     <key>com.apple.security.cs.disable-executable-page-protection</key>
     <true/>
     <key>com.apple.security.cs.disable-library-validation</key>
     <true/>
     </dict>
    </plist>

    Place it in the same folder and name it "neededToRun.entitlements"

    Once it's ready, go in the terminal and launch the NWsign.sh command.

    And VOILÀ your app is now signed and ready to notarize.

    If you need further help (on notarization for example), feel free to ask.

    Cheers guys !

  • The percentage of MacOS users on steam is so low ... in my opinion it's not worth publishing a MacOS version and taking the trouble.

    But of course thanks for the information, it sure works for many users.

  • The percentage of MacOS users on steam is so low ... in my opinion it's not worth publishing a MacOS version and taking the trouble.

    Who's talking about Steam ? NWJS is not only steam oriented, it concerns anybody wishing to distribute apps on Mac, Linux and Windows.

    And even if the user base is low, this thread helped me a lot in the early days of building desktop apps, that's why I want to contribute in any way possible.

  • Guys, I thought I'd share with you the best signing and notarizing method for MacOS, since it's now the only way to distribute your apps on Mac. ...

    Thanks a lot of providing this info!

    I feel like this would be better off as a tutorial. It would reach a lot more people and you'd have several options to simplify it even further. I'll link to it if you decide to create it.

    No updates for the "Alt+Space context menu", "Icon low quality again" and "Steam Overlay rendering above window bar" issues. Will try to keep everyone posted.

  • Thanks a lot of providing this info!

    I feel like this would be better off as a tutorial. It would reach a lot more people and you'd have several options to simplify it even further. I'll link to it if you decide to create it.

    Hi TheRealDannyyy

    I wish I had time to create a complete tutorial, but it'll be complicated, especially considering the time I lost to figure how to do this. Moreover, Apple's constant attempts to complicate their authorizations could make this procedure quickly obsolete.

    Nonetheless, I will consider doing this once the task list is complete.

  • No updates for the "Alt+Space context menu", "Icon low quality again" and "Steam Overlay rendering above window bar" issues. Will try to keep everyone posted.

    Thank you, that issue can be a bit annoying since many games use Alt and Space as default buttons, and pressing them together can happen.

  • > The percentage of MacOS users on steam is so low ... in my opinion it's not worth publishing a MacOS version and taking the trouble.

    Who's talking about Steam ? NWJS is not only steam oriented, it concerns anybody wishing to distribute apps on Mac, Linux and Windows.

    And even if the user base is low, this thread helped me a lot in the early days of building desktop apps, that's why I want to contribute in any way possible.

    Well ... I'm talking about Steam myself.

    Your motives seem good to me.

    I only said my opinion about publishing a version of a macOS game on Steam.

  • Thank you, that issue can be a bit annoying since many games use Alt and Space as default buttons, and pressing them together can happen.

    I think the problem is that this context menu is deeply integrated into the whole build process of Windows applications itself. If the question board leads nowhere, I could try to create an issue and request that it's at least disabled in full screen mode.

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)