This chapter describes several issues relevant to delivery with LispWorks for Windows.
Applications that you build with LispWorks for Windows require the Microsoft Visual Studio run time library msvcr80.dll
, so you must ensure it is available on target machines. It is part of Windows Vista and later version, but for earlier Windows operating systems you should use the Microsoft redistributable mentioned below.
At the time of writing, the redistributable vcredist_x86.exe
for use with for LispWorks (32-bit) applications is freely available at:
The redistributable vcredist_x64.exe
for use with LispWorks (64-bit) applications is freely available at:
Run the redistributable from your application's installer, or tell your users to run it directly themselves before running your application.
LispWorks for Windows is supplied with an embedded application manifest. This default manifest tells the Operating System:
msvcr80.dll
to use, and:
You can change the manifest in your delivered image by passing the keyword argument :manifest-file to deliver. The value must be the name of a file that is a legal application manifest, which is is used as the manifest. The manifest must contain at least the "dependency" element for Microsoft.VC80.CRT
(without it, your application will fail to start with error messages "Failed to find msvcr80.dll" or "The application configuration is incorrect"). If the manifest does not contain the "dependency" element for Microsoft.Windows.common-controls
your application will use Common Controls 5, and therefore will not be a "Themed" application.
The value of :manifest-file can also be the special value :no-common-controls-6
, in which case a default manifest without the element for Common Controls is used.
The default manifests that LispWorks uses are provided by way of documentation in the lib/8-0-0-0/config
directory. If desired, you can base your application manifests as supplied via :manifest-file on these files:
32-bit LispWorks | 64-bit LispWorks | |
---|---|---|
With Common Controls 6 |
|
|
Without Common Controls 6 |
|
|
Note: the above only applies when LispWorks is an executable. If LispWorks is a DLL, then it will be themed if the executable that loads it contains the Common Controls 6 manifest.
A graphical Windows application does not usually have a console (or "DOS window").
You can achieve this by supplying the keyword argument :console :input
when delivering your application.
Output to *terminal-io* from an application without a console will not ordinarily be visible to the user, so debugging messages should be written to a log file.
Log files are recommended for any complex application as they make it easier for you to get information back from your users.
You can use dbg:log-bug-form for logging errors. See the LispWorks® User Guide and Reference Manual for details.
To create an association between your LispWorks for Windows application and files with a specified type (file extension), create a DDE server in Lisp and register the file types in Windows.
There is an example of this (for the LispWorks IDE) in:
(example-edit-file "dde/lispworks-ide")
but the technique is the same for any file extension.
If your application uses capi:editor-pane or its subclasses, your should consider the input style. The editor in the delivered application can emulate Emacs or Microsoft Windows style editing. The deliver keyword :editor-style controls which emulation is used.
If your library foo
is a Windows ActiveX control (that is, it uses capi:ole-control-component and capi:define-ole-control-component) you may choose to specify file "foo.ocx"
as the file argument to deliver. The file type defaults to "dll"
.
The file extension does not alter functionality - the system simply loads the file referenced in the Windows registry.
This example in the LispWorks library illustrates delivering an application that can be run as a Windows Service:
(example-edit-file "delivery/ntservice/README.txt")
Delivery User Guide - 01 Dec 2021 19:35:04