Docs: RemoteExecuteScript.exe



  • These are a bit sloppy notes on what exactly "RemoteExecuteScript.exe" does:

    • Let <CWD> be the RemoteExecuteScript.exe's parent dir.
    • Accepts --silent command line switch which has the effect:
      -- No output at all.
      -- Even no error messages.
      -- Afterwards, silent gets propagated to "FastExecuteScript.exe".
    • Out of current interest:
      -- Also accepts --remote.
      -- And --script, --server, --username, --password for use with --remote.
      -- Script can become "invalid" if it's remote but no script or no server specified.
    • Currently reasons for valid==false can be only related to --remote.
    • For non-remote scripts all generated files are placed into:
      <AppsDir> = <CWD>/appslocal
    • Looks if "<CWD>/project.xml" exists.
    • If not, terminates.
    • Reads "EngineVersion" element from "<CWD>/project.xml".
    • If "EngineVersion" cannot be read then terminates.
    • Generates a SID directory in the format:
      <SidDir> = SID<sha256x>
      where <sha256x> is first 8 characters of SHA256 hash of the entire "project.xml". On Windows the hash can be generated using:
      certutil -hashfile project.xml SHA256
      PowerShell snippet to extract only the hash string and get rid of the rest of the output:
      $(CertUtil -hashfile project.xml SHA256)[1] -replace " ",""
    • Directory for "FastExecuteScript.exe":
      <FullSidDir> = <AppsDir>/<ScriptName>/<SidDir>/engine
      where <ScriptName> is empty for unnamed local scripts.
    • If <FullSidDir> does not exist then proceeds to installation.
    • If it exists then runs "FastExecuteScript.exe" with the CWD set to <FullSidDir>.

    Installation:

    • Checks if this engine distribution package exists:
      <CWD>/engines/<EngineVersion>/engine.zip
    • If not, downloads package from the web server.
    • Deletes recursively entire temporary dir, if any:
      <TmpRootDir> = <AppsDir>/<ScriptName>/temp
    • Temporary directory for engine installation to be:
      <TmpDir> = <TmpRootDir>/engine
    • Unzips either newly downloaded or previously existing engine distro into <TmpDir>.
    • Checks if there is a previous installation which means there's some <SIDxxx> directory in <AppsDir> dir. If there are multiple such dirs, a single random one is taken as the previous installation dir:
      <PrevDir> = <AppsDir>/<ScriptName>/<SIDxxx>
    • Checks if there are any untracked files in the previous installation's subdir:
      <PrevDir>/engine
      Untracked files are those files not registered in:
      <PrevDir>/engine/filelist.txt
    • Copies all untracked files from <CWD> and all of its subdirs into <TmpDir> with directory structure prevented.
    • Saves all file names from the engine distro (obtained as file list from the archiver) to "filelist.txt" and:
      -- Adds file list file itself ("filelist.txt").
      -- Addes "project.xml".
      -- ! Does not add any untracked files, i.e. they remain untracked.
    • Copies "project.xml" from <CWD> to <TmpDir>.
    • Renames <TmpDir> dir to <SidDir>.
    • Deletes <PrevDir>.
    • In the end, runs "FastExecuteScript.exe" from the new <SidDir> dir with the CWD set to <FullSidDir>.

    I'll try to keep this up to date and in line with my current knowledge.


Log in to reply
 

Looks like your connection to Bablosoft was lost, please wait while we try to reconnect.