Skip to content
AtlasDocs
Sign inGet started
Updated Aug 04, 2026

Packaging for Windows

Three bindings, three packaging paths. Each one ties back to a working build script in the respective Console Example.

C++ (Visual Studio)

  1. 1

    Copy the SDK into your project

    Drop Atlas.h and Atlas Auth.lib into a vendor/atlas/ folder (or anywhere in your tree).

  2. 2

    Wire Visual Studio

    Project properties, Release | x64:

    • C/C++ → General → Additional Include Directories - add the folder holding Atlas.h.
    • Linker → General → Additional Library Directories - same folder.
    • Linker → Input → Additional Dependencies - add Atlas Auth.lib;. The filename contains a space; include it as-is.
  3. 3

    Set the API key

    Inline in Atlas.h, or override from your own code before Startup().

    C++
    #include <Atlas.h>
    #include <iostream>
    int main() {
    Atlas::API_KEY = "YOUR_API_KEY";
    Atlas::Startup();
    std::string key = prompt_user_for_license();
    if (!Atlas::License::Login(key)) {
    std::cerr << Atlas::Data::GetErrorMessage();
    return 1;
    }
    run_my_application(); // authenticated
    return 0;
    }
  4. 4

    Build, then run without the debugger

    Ctrl + Shift + B to build. Ctrl + F5 to run - not F5. The SDK refuses to run with a debugger attached.

JavaScript (Node + pkg)

  1. 1

    Install the package

    Installs the binding, Atlas.dll and koffi - the only runtime dependency, a C ABI binding for Node with prebuilt x64 Windows binaries. No node-gyp, no build step.

    Terminal
    npm install @atlassecurity/auth
  2. 2

    Or vendor the SDK

    Drop the SDK folder into vendor/atlas/ and require it by path: require('./vendor/atlas/Atlas SDK/src'). Atlas.dll sits in the SDK folder, one level above src/.

    Text
    myapp/
    ├── vendor/atlas/Atlas SDK/
    │ ├── Atlas.dll
    │ ├── package.json
    │ └── src/index.js
    └── index.js
  3. 3

    Require it and call Startup()

    The DLL is loaded once at require() time - the binding probes process.resourcesPath (Electron), dirname(process.execPath), and finally __dirname/.. in that order. ATLAS_DLL_PATH wins. Under pkg the bundled DLL is extracted to a temp file at launch.

    JavaScript
    const atlas = require('@atlassecurity/auth');
    atlas.API_KEY = process.env.ATLAS_KEY;
    atlas.Startup();
    const key = promptUserForLicense();
    if (!atlas.License.Login(key)) {
    console.log(atlas.Data.GetErrorMessage());
    process.exit(1);
    }
    runMyApplication(); // authenticated
  4. 4

    Package with @yao-pkg/pkg

    The Console Example runs pkg . --targets node22-win-x64 and emits a single .exe. Its pkg.assets list bundles the binding and Atlas.dll into it; at launch the DLL is extracted to a temp file.

    Terminal
    npm run build:exe
    # -> - Builds/Atlas Auth Example (JS).exe

Python (PyInstaller)

  1. 1

    pip install the wheel (or vendor it)

    Install atlas-auth from PyPI or vendor it into your project. On 1.0.3 and earlier a pip install puts Atlas.dll at sys.prefix while the binding looked beside site-packages - update, or see Troubleshooting. pyproject.toml declares the package name atlas-auth, Python >=3.9, x64.

    Terminal
    # From PyPI:
    $ pip install atlas-auth
    # Or vendor it - Python looks beside the atlas/ package:
    myapp/
    ├── atlas/ ← the Python package
    ├── Atlas.dll ← the runtime sidecar
    └── main.py
  2. 2

    Set the API key and call Startup()

    The DLL is loaded once at import atlas time. The probe order: ATLAS_DLL_PATH env var, then beside sys.executable, then beside the package.

    Python
    import atlas, sys, os
    atlas.API_KEY = os.environ["ATLAS_KEY"]
    atlas.Startup()
    key = input("License: ")
    if not atlas.License.Login(key):
    print(atlas.Data.GetErrorMessage())
    sys.exit(1)
    run_my_application() # authenticated
  3. 3

    Package with PyInstaller

    The build_exe.spec in the Python Console Example bundles Atlas.dll as a binary so the DLL ends up inside the .exe. One file, no sidecar.

    Terminal
    $ build_exe.bat
    # -> Atlas Auth Example (Python).exe, written to the --distpath set in build_exe.bat

After you ship

Drop your final .exe into Dashboard → Settings → Builds (Add hash) - the dashboard computes the SHA-256 for you. See Executable Hash Whitelist for what to whitelist in each binding.

Was this page useful?