newObjects ActiveX Pack1 The AXPack1 Family

newObjects ActiveX Pack 1 family is a set of components designed to use each other and thus offer wide range of functionality in many areas. The core element of the family is newObjects ActiveX Pack1 which can be used alone, without any of the other members of the family. The other members of the family use certain features provided by the core DLL and sometimes (optionally) features from other DLL-s of the family.

The area covered by AXPack1 family is huge - file access, utility routines and objects, script hosting, thread management (including running scripts in threads), composite objects (writing COM classes in script), Networking TCP/IP, IRDA, Bluetooth, SQL Database engine and interface to it and so on. And except part of the cryptography functions AXPack1 family is freeware! 

The AXPack1 comes also with a minimal scripting host application (newObjects Micro Script Host) which is simpler than Windows Scripting Host but in contrast is available for all the Windows platforms and provides exactly the same functionality on each of them (Desktop, Pocket PC, Smartphone and every other display based Windows CE device).

AXPack1 family version: 2.5.0
The particular DLL versions in this version of the AXPack1 Family are listed in the table below.
Note: The AXPack1 family version characterizes the family edition and is also the version of the core DLL. The versions of the other DLL are maintained on their own. The list below shows the version for each DLL included in the documented release.

Where to start

These are links to the different areas of the AXPack1 family documentation. To help you find the part you need the same links are provided in two different layouts - by category and by dll. Note that the same link may appear in more than one category because the related object/set of objects may fall in more than one category..

AXPack1 by category AXPack1 by DLL
Storages and Files - File system, OLE files, core API for abstract streams and storages, binary data tools.

Objects: SFMain, SFStream, SFStorage, SFFileStream, SFDirStorage, SFRecord, SFFilter, SFField, SFDrive, SFInfo, SFBinaryData, SFShellLink

NetStreams - TCP/IP (v4/v6) networking and IRDA support.

Objects: NSMain, SocketStream, SocketAddress, IRDADeviceInfo, SockOpt, SocketSelectHelper

Advanced COM - Advanced COM tools and misc. helpers

Objects: Pack1Creator, ComScriptThread, COMApartment, COMThread.

Composite objects - Set of objects to enable development of custom COM objects in script.

Objects: VaryDisp, VaryDispCreator, VaryDispCtx, Pack1Creator.

Script hosting - Running and using (another scripts) from your applications.

Objects: ScriptManager2, ScriptAggregate, ComScriptThread, see also Composite Objects.

Databases - Fully functional SQL database engines.

Objects: SQLite COM, SQLite3 COM, Parameters

Cryptography - Hash/HMAC, symmetric and asymmetric encryption. 

Objects: HashObject, SFStreamDigest, SymmetricCrypt, SFStreamCrypt, RSACrypt, BigNumber

Data management - various objects for data management in-memory and over various medias. Dictionary objects, configuration and platform independent data packaging.

Objects: VarDictionary, UtilStringList, ConfigFile, INIFile.

Advanced string techniques - string formatting etc.

Objects: StringUtilities

Synchronization - Access to the system's synchronization objects. Needed for complex multithreaded projects and other scenarios where synchronization between concurrent tasks is a must.

Objects: Event, Mutex, Semaphore, Sleeper, CustomLock

Classification by data management technique

Streams - The objects that must/can be used through the Stream driver (SFStream)

Objects: SFFileStream, SocketStream, SFStreamDigest, SFStreamCrypt, see also SFMain for the internal support for Memory Streams and OLE File streams.

Structured data consumers/suppliers - objects that use VarDictionary trees to pack their outputs or expect data packed in VarDictionary trees.

Objects: ConfigFile, Composite objects, SQLite COM, SQLite3 COM, ScriptManager2 (error info only). Products outside AXPack1 - ALP, ASPC, ScriptService, IEScriptBar and many others.

 

newObjectsPack1.dll (ver: 2.5.0.0) - the core DLL. You need to re-distribute it always - all the other components use it.

Objects:

COMApartment,
COMThread,
ConfigFile,
CustomLock,
INIFile,
NodeInfo,
Pack1Creator,
ScriptAggregate,
ScriptManager2,
SFBinaryData,
SFDirStorage,
SFDrive,
SFField,
SFFileStream,
SFFilter,
SFInfo,
SFMain,
SFRecord,
SFShellLink,
SFStorage,
SFStream,
TypeConvertor,
UtilStringList,
VarDictionary,
VaryDisp,
VaryDispCreator,
VaryDispCtx,
ComScriptThread,
Sleeper,
Event,
Mutex,
Semaphore,
StringUtilities

NetStreams.dll (ver: 2.5.0.0)

Objects: 

NSMain,
SocketStream,
SocketAddress,
IRDADeviceInfo,
SockOpt,
SocketSelectHelper

Depends on: newObjectsPack1.dll

SQLiteCOMUTF8.DLL (ver: 2.8.15.6)

Objects:

SQLite COM

Depends on: newObjectsPack1.dll

SQLite3COMUTF8.DLL (ver: 3.3.5.4)

Objects:

SQLite3 COM,
Parameters

Depends on: newObjectsPack1.dll

HashCryptStreams.DLL (ver: 1.0.0.8)

Objects:

HashObject
SFStreamDigest
, SymmetricCrypt
SFStreamCrypt

RSACrypt

BigNumber

Depends on: newObjectsPack1.dll

nwMicroHost.exe (ver: 2.4.0.1)

Objects:

Host

Supported platforms

AXPack1 family supports:
- Windows 95/98/ME, Windows NT4/2k/XP/2003/Vista and later. 
- Windows CE 3.0 and later (incl. CE.NET 4,5 and later).
- Pocket PC (any version), Windows Smartphone 2003 and any later version.

Till now a compatibility problem with new Windows versions never occurred and it is very unlikely that such will ever occur. All the features in AXPack1 are implemented over trusted parts of the Windows API, when a feature requires an API that seems to not be available on all the Windows versions we implement it on our own to guarantee it will work the same way everywhere. There are a few exceptions which are marked in their documentation:  INIFile and SFShellLink objects, a few members in Storages and Files. The case with INIFile is such that it is supported only to cover for an older component of ours - it will not be developed further - use ConfigFile instead. SFShellLink suffers from the differences of the different UI-s in the different Windows versions and while we plan to make an effort to make it available everywhere this will concern only part of its functionality (unfortunately what it does concerns the Windows shell and there is no way one "can do it on his own").

Redistribution considerations

It is not very likely any particular application to use all the AXPack1 features. Therefore when you re-distribute an application that uses the pack you can scrap the unneeded DLL-s. Still you always need to include the core DLL - newObjectsPack1.DLL because it is used by the others. There is one possible exception - HashCryptStreams.DLL. It provides the Hash/HMAC and Symmetric cryptography functions in two forms - one independent of the AXPack1 core and one that uses the stream features of that core. If you are not using the stream cryptography objects (SFStreamCrypt and SFStreamDigest) you can scrap the newObjectsPack1.DLL if you are not using something from it explicitly. 

All the DLL are self-registering COM DLL. Whatever setup solution you are using for your application it should be able to register them - check its documentation to see how this is configured with it. If you are looking for a setup solution (for desktop PC) we provide a simple setup solution (see ALPInstall), which is good for small and middle sized applications. For Windows CE Microsoft provides a fully featured built-in basic lave setup solution - CAB files which can be used directly or extended with 3-d party components - of course, it supports COM DLL registration (See MSDN for more info).

Recommendations about the install locations:

If you are using a setup solution which installs your application and part or all of the AXPack1 it is recommended to:

  1. For desktops: Put and register all the DLL files in Program files\Common Files\newObjects\ActiveX. Also if this needs to be specified explicitly in your setup solution, they all should be registered as shared DLL.
    For Windows CE devices there is no particular location that can be called typical. You can install them in the internal memory or on a memory card - as preferred.  
  2. On desktops: nwMicroHost.exe should be installed in the Windows\System32 directory.
    On Windows CE: It is recommended to install nwMicroHost.exe in the same directory where the DLL-s are copied.
    The nwMicroHost.exe does not need registration or other processing - only copying (and creating a shortcut if desired).

None of the above is a requirement, these are recommendations only and if there is a consideration that makes another location preferable there is no problem to choose it.

If the size of the setup package is not a problem it is a good idea to include the entire pack - even the parts you do not use. This can be potentially useful in environments where many applications use AXPack1. Installing the micro host alongside the DLL-s may prove useful if you are also involved in direct support of the machines/devices on which your application(s) work - for example you can use it to write some admin or test scripts when needed.

Versioning

The AXPack1 Family version is bound to the version of its core DLL - newObjectsPack1.DLL. The versions of the other DLL are different and follow their own evolution. Sometimes they even represent something more, like in the case of SQLite where the first 3 parts of the version are the same as the SQLite engine version compiled in them. Thus, to identify the version of a particular DLL in the current edition of the family you need to look into the table above. Usually you do not need care about the versions - all the setup solutions support version checking and if a newer version of a particular DLL is already installed they leave it intact. All the AXPack1 is carefully developed to keep backward compatibility with earlier versions of its DLL. This is maximum priority for us and is considered even more important than correcting some inconveniencies. For example we can find out that the default configuration of a certain object can be made more convenient - if we do that the applications counting on its default behavior will fail with new versions of AXPack1, so we do not change what is already in use - never! If the change is too appealing we provide it as alternative implementation - a new member with similar name a fake object that actually creates the other but initialized in a different manner and so on. Thus the compatibility of the AXPack1 with its older versions is guaranteed.

Future extensions

AXPack1 family will continue to grow providing more complete coverage of the OS features, various abstract techniques and other technologies. Still, AXPack1 is by design a pack of non-visual ActiveX. It will never include any visual ActiveX controls that can be put on a form for example (see out other products for such components). This is not limitation - AXPack1 is designed to offer its features to all kinds of applications - visual or non-visual, hence it can play a role of a common run-time library for any COM based or COM enabled project you may want to develop. The availability for all the actual Windows OS versions guarantees that you can count on its features wherever you need them.

The next new components that will be included in the following months are:
  - BTongue - independent language processor of VBScript like language.
  - COM port streams
  - Additional cryptography algorithms and built-in support for some PKCS standards.
(These are planned for the next 2 updates after version 2.5)

Licensing

All the AXPack1 family is freeware unless otherwise specified for a particular DLL. Currently there are no such (non-free parts), however some of the new algorithms in the next version of HashCryptStreams.DLL will require license. However, what is free now will remain free, the non-free parts will be new additions which will return errors if the license is not present, while the rest of the DLL will continue to work without license as before.

How is it possible to maintain this all free? It is possible because the family is included as run-time library in our products and some of them are commercial. This allows us to spend time on the family and also allow free usage without support when the family is used without any of our commercial products and offer support for any customer who has licenses for one of the commercial products that include it. Of course this means that we are extremely interested in keeping the family in good order and bug free - thus we always try to answer interesting questions even if they come from users that use it as freeware. Anyone is allowed to include part or the entire family (as needed) in his/her product and redistribute it - no matter if the product is commercial or not. It is recommended, of course, to have some license or special contract that will provide you with support if the product that uses the family is commercial, but this is not required. For products based on our development tools that use this library - such as Active Local Pages the support comes automatically with the development license for the product that includes the AXPack1 family.

newObjects Copyright 2001-2006 newObjects [ ]