RunMacro Documentation
Learn RunMacro from basics to advanced.
Everything you need to start and master RunMacro โ from basic commands to advanced automation workflows.

How to create and export an encrypted QMacro package
QMacro export converts a tested workflow into an encrypted package for QMacro Runner with optional inputs and Desktop or Browser defaults. Choose a destination from which existing relative references resolve, then test with the old source unavailable: export performs no dependency preflight and does not guarantee that every missing item was embedded.
Prerequisites
- The workflow must contain at least one command and should be tested in the Desktop or Browser workspace that will be distributed.
- Save an editable
.pmacrosource first as the maintained recovery copy, but saving it does not make its directory the dependency base for current QMacro export. - Choose a
.qmacrodestination from which relative paths resolve, and keep referenced images and child macros reachable. A password-protected child QMacro cannot be repackaged automatically. - Upload / Sync additionally requires a configured Gist ID, GitHub token, and network access.
Supported modes
- Desktop Mode โ Export from the Desktop workspace when the runner should default to real mouse and keyboard control. The active Studio workspace is authoritative for the stamped mode.
- Browser Mode โ Export from the Browser workspace to stamp Browser/CDP as the default, then define provider, profile, viewport, and thread behavior for the runner.
What it does
Export turns the workflow currently open in Studio into a .qmacro file intended for QMacro Runner. Supported command values can be bound to runner inputs, so the value entered at run time replaces the exact marked command field rather than creating an unrelated variable. The export dialog defines package identity, Desktop or Browser defaults, thread and browser behavior, and a manual input form. Every QMacro produced by current RunMacro is encrypted with AES-256-GCM: an empty password uses the application key, while a password derives a separate key. The exporter attempts to embed discovered images, selector data, and submacros, but it does not pass the saved PMacro as the dependency base: relative references resolve from the destination .qmacro directory, and unresolved items can remain external without warning because this export path has no dependency preflight.
When to use it
- Use it to hand off a workflow that operators should launch from QMacro Runner instead of editing command rows in Studio.
- Use it when each run needs operator-supplied accounts, URLs, quantities, folders, files, or line-oriented TXT data.
- Use it when the exporter should attempt to collect image assets, selector data, and nested submacros; destination placement and clean testing are still required because unresolved references may remain external.
- Use it to stamp a workflow name, version, description, and controlled runner defaults before sharing or cloud sync.
When not to use it
- Do not treat QMacro as the only editable source; keep the original
.pmacrowhen the workflow will continue to evolve. - Do not use the no-password mode when access must be limited to people who possess a separate secret.
- Do not treat the package as publisher authentication. Current exports are encrypted and integrity-checked but unsigned.
- Do not treat export success as proof of self-containment; a child macro or image that cannot be resolved may remain an external reference without a warning.
Configuration steps
- Open or build the workflow in Studio, switch to the intended Desktop or Browser workspace, and complete a representative test run.
- Save an editable
.pmacrocopy with Editable PMacro project (*.pmacro). If the workflow is unsaved or dirty, choose Save .pmacro first, Export QMacro anyway, or Cancel; saving does not change the export dependency base. - For a run form, right-click a supported command row, choose Mark as QMacro input, and set its display label, type, default, and TXT behavior when applicable.
- Choose Export as QMacro..., then select the
.qmacrofilename and a destination from which existing relative dependencies resolve. That filename seeds the package name for this export. - On Information, review Workflow name, Version, and Workflow description.
- On Protection, leave both fields empty for app-key encryption, or enter and confirm a password of at least six characters to gate opening.
- On Run configuration, set defaults and operator edit permissions for mode, threads, browser/profile, CDP, viewport, and the visible local-profile preset.
- On Inputs, keep or remove marked bindings, add manual rows where needed, configure types and select choices, and use Preview form.
- Select Save QMacro configuration; this path performs no dependency preflight. Upload/sync or defer as appropriate, but open the finished file in QMacro Runner with the old source unavailable to expose external references.
Every option explained
Expected result
The result is a .qmacro file that current RunMacro always encrypts and QMacro Runner can open with its stamped identity, form, and configuration. Workflow logic is encrypted; images or child macros are in the payload only when the exporter resolves and embeds them. Password packages prompt, while app-key packages open silently. Legacy unprotected QMacros that contain macro.json remain load-compatible.
Real example
Package a password-protected Browser workflow driven by TXT accounts
- Switch Studio to Browser Mode and test navigation and web actions with one sample profile.
- Right-click the account-entry command, bind it as TXT Lines, choose Sequential, and point the default at harmless sample data.
- Choose Export as QMacro..., select Browser settings, use a small thread count, and allow provider changes only when operators need them.
- Set a password, save the package, open it in Runner, choose the real TXT source, and import the approved profile list.
- Run a small batch and review the Browser profile table, JSON report, and Browser result CSV before handing it to operations.
Ship a nested browser workflow with portable assets
- Verify that every child PMacro and Find Image asset works in the source project, then identify their relative references.
- Choose a QMacro destination from which those references still resolve; saving the parent PMacro does not supply its source directory to export.
- Bind the target URL, file, and folder inputs needed by recipients without placing secrets in defaults.
- Choose Export as QMacro...; the exporter attempts to embed resolved children, images, and selectors but gives no missing-dependency preflight.
- Rename or move the old source tree, open the QMacro in Runner, and exercise every branch. If one fails, correct placement or paths and export again rather than assuming self-containment.
Limitations and failure cases
- QMacro is a run package, not a replacement for the maintained PMacro source and its edit history.
- No-password export uses an embedded application key. It encrypts the file but any compatible RunMacro installation can open it, so it is not access control.
- Passwords must contain at least six characters, have no recovery path in the open flow, and should be delivered separately from the package.
- The manifest currently records
signed: false. AES-GCM detects payload tampering but does not authenticate a publisher identity. - Public metadata remains readable so Runner can build the identity, input form, and run configuration; workflow logic and embedded assets are the encrypted portion.
- A binding can target only the supported primary value of a recognized command. Other fields need workflow variables or source edits.
- Runner validates every enabled input as having a value; the current export UI does not expose an optional-input switch.
- Select rows require choices, and a TXT Lines source must exist and contain at least one nonblank line when execution begins.
- QMacro export has no dependency preflight and does not pass the source PMacro as
dependency_base_path. Relative references resolve from the QMacro destination; unresolved items can silently retain external paths. A password-protected child QMacro also cannot be repackaged. - The active Studio workspace overrides stale mode metadata, so authors must switch to the intended workspace before export.
- Anti-detect providers still depend on their local application or API, credentials, service plan, and applicable license access.
- Cloud upload is a separate optional step; network or credential failure does not remove the successfully exported local package.
Tips & common mistakes
Verification details
ui/main_window.pyui/qmacro_metadata_dialog.pyui/qmacro_mark_input_dialog.pycore/qmacro_protection.pystorage/json_store.pytests/test_qmacro_export_dialog.py
RunMacro