# Folder Structres

System Folder

Workspace Folder

DynamicNodes is working with two basic directories: The system directory for DynamicNodes runtime, which is usally the installation directory of DynamicNodes, and the the workspace directory, which is usally localted in the folders of the user profile.

## System Folder

The sysetm directory of DynamicNodes after the installation with a setup program is typically located in `%ProgramFiles%\DynamicNodes`. DynamicNodes usally does not need write permissions for that directory.

- assemblies
  That directory contains the program libraries of the DynamicNodes system.
  - ApplicationCoreShell.dll
    A PowerShell host for the integration in WindowsForms applications like the development environment of DynamicNodes.
  - DataTypesAndTools.dll
    Basic data types for DynamicNodes programming.
  - DNCore.dll
    The core of DynamicNodes including the runtime environment.
  - DNExtCockpit.dll
    An extension of the core with support for user controls in a cockpit view port.
  - DNExtGui.dll
    An extension of the core with support for extending the graphical editor via PowerShell scripts.
  - DNExtObjects.dll
    An extension for development environment with better support for low-level .NET programming.
  - DNExtRemoting.dll
    An extension of the core for remote control and remote monitoring of the DynamicNodes runtime.
  - DNExtShell.dll
    The integration of the PowerShell (ApplicationCoreShell) in DynamicNodes.
  - DNTesting.dll
    A test environment for node types.
  - DNVisual.dll
    An extension of the core system for visual representation and interaction of the graph.
  - ...
- gui
  In this directory the PowerShell based editor extensions are registered.
- help
  This directory contains the content for application help and the node reference documentation.
  - design
    This directory contains some design resources like style-sheets or pictures.
  - nodes
    This directory contains the node reference documentation.
    - content.xml
      This file is the index for all node documentation files.
    - DynamicNode.Core.htm
      This is a description file of a node type group.
    - DynamicNode.Core.Nodes.NFlag.xml
      This is the description file for a node type.
    - ...
- media
  This directory contains images and other multimedia resources required by the development environment of DynamicNodes.
- modules
  This directory contains the library for the system modules of DynamicNodes. A module is a DynamicNodes graph which is prepared for re-use as a sub graph.
- nodelibs
  This directory contains the node library included in the DynamicNodes system.
  To prevent DynamicNodes from browsing this directory for node libraries, you need to run `DNConsole.exe` or `DNWinApp.exe` with the command line argument `-nosyslibs` or `-nosl`.
  - NLibCockpit.dll
    A node library with user controls for the cockpit.
  - NLibDefault.dll
    The default node library with general purpose node types.
  - NLibExamples.dll
    An example node library with example nodes for the node development. The source code of this library is available for the user.
  - NLibImageProcessing.dll
    A node library for image processing.
  - NLibObjects.dll
    A node library with node types for low-level .NET programming. Including e.g. generic node types for method calls.
  - NLibShell.dll
    A node library with node types for the execution of PowerShell commands.
  - ...
- scripts
  This directory contains PowerShell scripts. Amoing others there are scripts for the extension of the graphical editor. These extension scripts need to be registered in the `gui` directory.
  - boot.ps1
    The boot script for DynamicNodes, which is executed during the start of the DynamicNodes runtime.
  - DynamicNodes.format.ps1xml
    This file contains the formatting rules for DynamicNodes objects in the PowerShell.
  - DynamicNodes.types.ps1xml
    This file contains DynamicNodes specific definitions for the extended type system of the PowerShell.
  - ...
- styles
  This directory contains the design profiles for the graphical editor.
- templates
  This directory contains the library for system templates.
- xml
  This directory contains resources for processing XML.
  - schema
    This directory contains XML schema files for validation of DynamicNodes specific XML data.
- DNConsole.exe
  This program is a command line tool for the execution of DynamicNodes graphs without the graphical development environment.
- DNConsole.exe.config
  The configuration file for DNConsole.exe.
- DNStarter.exe
  A windows application for the comfortable execution of DynamicNodes graphs without the graphical development environment.
- DNStarter.exe.config
  The configuration file for DNStarter.exe.
- DNWinApp.exe
  The graphical development environment with help system and test environment for node types.
- DNWinApp.exe.config
  The configuration file for DNWinApp.exe. In this file the verbosity level for logging can be specified.

## Workspace Folder

The workspace directory is used by DynamicNodes to store user settings, log files, and projects. DynamicNodes requires write permissions for the workspace directory.

If no changed shall be made on a system during the execution of DynamicNodes, it can be run with the command line argument `-noworkspace` or `-nows`, respectivly, to start DynamicNodes without a workspace directory. However, DynamicNodes is than not able to store user settings or log files.

- logs
  This driectory is used by DynamicNodes to store log files if it is startet with the command line argument `-log`.
- nodelibs
  In this directory user specific node libraries can be installed.
  If you want to prevent DynamicNodes from browsing this directory for node libraries,, you need to run `DNConsole.exe` or `DNWinApp.exe` with the command line argument `-noworkspacelibs` or `-nowsl`.
- projects
  This is the default folder to save graph files (*.dyn) or projects, respectively.
  - modules
    This directory contains the user specific module library. A module is a graph file prepared to be loaded as a sub graph.
  - templates
    This directory contains the user specific project templates.
  - ...
- settings
  This directory is used by DynamicNodes to store user settings. To reset the user settings of the development environment, you can delete this directory. DynamicNodes will re-create it during the next start.