Skip to content
master
Switch branches/tags
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Enso Open-Source

A feature-rich descendant of Enso Community Edition (Microsoft Windows only).

This is a development page. Please visit the main site at: https://gchristensen.github.io/enso-portable/

Digitally signing Python binary to make Enso work properly with elevated processes

Prerequisites

Signing Python

  1. Install Enso to C:\Program Files\Enso

NOTE: installing Enso to Program Fies is experimental and is not tested thoroughly.

  1. Launch Visual Studio Developer Command Prompt as Administrator.
  2. Change the current directory to where you want to store the copy of the certificate file (appcert.cer).
  3. Execute the following command to create a self-issued digital certificate:

makecert -r -pe -n "CN=Application Certificate - For Use on This Machine Only" -ss PrivateCertStore appcert.cer

  1. Import the certificate to the trusted root store with the following command:

certmgr.exe -add appcert.cer -s -r localMachine root

NOTE: if you are signing on a virtual machine, you also need to import the certificate you have created to the real machine. If you have no Visual Studio installed, launch the Certificate Manager (certmgr.msc), open and select Trusted Root Certificate Authorities/Certificates, and choose Actions -> All Tasks -> Import... menu item.

  1. Issue the command below to sign the Python binary:

SignTool sign /v /s PrivateCertStore /n "Application Certificate - For Use on This Machine Only" "C:\Program Files\Enso\python\pythonu.exe"

NOTE: pythonu.exe is a Python binary with the application manifest option UIAccess set to ture. Because Enso is a modeless application, it needs this option to get input when elevated processes are in the foreground. This version of Python is launched only if it is properly signed and Enso is installed at C:\Program Files\Enso.

Bringing the source snapshot back to life

Enso source snapshot does not contain a Python interpreter and can not be run as is. If you have Python installed at your system, you may launch Enso by executing the following command at the repository root:

python enso/scripts/run_enso.py -l INFO

You need to place a Python interpreter (with all required dependencies preinstalled) under /enso/python to use /enso/debug.bat, /enso/run-enso.exe or /enso/enso-portable.exe.

Required dependencies

Building platform code

Follow the platform build instructions and use the makefile (compatible with Mingw or Mingw-w64 mingw32-make) to build and copy binaries to the proper destination.

The original source code

The original source code of Enso Community Edition could be found here: https://launchpad.net/enso/community-enso (you can download the original source without installing bazaar by using this link).

Mediaprobes

Mediaprobes allow to create commands that automatically pass items found in filesystem (or listed in a dictionary) to the specified program. Let's assume that you have a directory named 'd:/tv-shows', which contains subdirectories: 'columbo', 'the octopus' and 'inspector gadget'. Let's create a command named 'show' that has the names of all subdirectories under 'd:/tv-shows' as arguments (the argument will be named "series") and opens the given directory (or file) in Media Player Classic.

# place the following into command editor

from enso.user import mediaprobe

cmd_show = mediaprobe.directory_probe("series", "d:/tv-shows", "<absolute path to MPC-HC>")

That's all. The command will have the following additional arguments:

what - lists available arguments.
next - open the next show in the player.
prev - open the previous show in the player.
all - pass 'd:/tv-shows' to the player.

It is possible to create probe commands based on a dictionary:

what_to_watch = {"formula 1": "<a link to my favorite formula 1 stream>",
                 "formula e": "<a link to my favorite formula e stream>"}
cmd_watch = mediaprobe.dictionary_probe("stream", what_to_watch, "<absolute path to my network player>")

If player does not accept directories (as, for example, ACD See does), it is possible to pass a first file in the directory specified at a dictionary:

what_to_stare_at = {'nature': 'd:/images/nature',
                    'cosmos': 'd:/images/cosmos'}

# if player is not specified, the command will use the default system application 
# associated with the encountered file type
cmd_stare = mediaprobe.findfirst_probe("at", what_to_stare_at)

Of course, you may construct dictionaries in various ways.

Change log

full changelog

22.06.2021 (v.0.7.0)
  • Migrated to x86_64 platform, which allows to bypass some shortcut-related operating system bugs inherent to 32-bit applications on 64-bit Windows. v0.6.1 is the last 32-bit version of the application.
  • Updated Enso Retreat to version 0.6.
  • Enso now can properly work with elevated processes when digitally signed. See the readme file for more details.

Contributors