The home stretch
Exciting news. We are now moving into the final phase of development. All core modules have now been reviewed, modified, re-written or improved.
The last of these modules is LoginScript. This tool is used to customize the desktop appearance and set user customisation. It also handles the shortcut deployment where needed. Next to Manager, this has the biggest code set in the EISNet modules. Over the past week we have gone through it's 8,000 lines of code and removed code no longer needed and where possible, streamlined and improved the code. I'm happy to report the code is now at a little under 1,100 lines of code since the cleanup. That's a massive improvement.
As you know, we have moved away from a modular approach for EISNet and instead are now using a single tool. As a result we felt the term 'Manager' was no longer appropriate as it did not incorporate the Supervisor, Archivist and Package Manager tools in the name.
Therefore, I'm please to announce the new name for what was 'Manager'.
In EISNet v1.7, you'll be using EISNet Management Studio.
So whats next for the development?
Whilst all the modules have been adapted into v1.7, now comes a largely tougher, but altogether more pleasing area of development. Final testing begins now with the focus being on usability and reliability. We now need to remove all the bugs we've introduced over the past year of development. In a couple of weeks we have dedicated testing day, similar to the day we did last year. The plan is to have 5 or 6 people all trying hard to break the code at the same time. All the bugs will be logged and fixed as required.
All feature and new coding must be completed by April. That is our deadline. After then, only major bug fixes are allowed. We then we move into manuals / documentation, training and packaging. In this time we will also be doing field testing in a few schools.
The planned release of Summer is still achieveable, although I have to admit, I would prefer automatic upgrades from v1.6 to 1.7 to be tested a little more before we do our first upgrade.
In the coming months I hope to do a review based on the past year with screenshots of progress along the way and insight into the development.
I have to be honest, when I took on this project, I did not expect it to take this long. I think I under estimated the size of the product, or - if i'm honest, the complete mess the code was in. Still, from v1.7, EISNet has a solid foundation which has the scope for much more improvement over the next few years.
Saturday, 3 March 2012
Developing the impossible
Posted by Kevin at 11:27Renaming devices
Most network management solutions such as EISNet do not support the renaming of a device. The problem is that whilst the device name may be changed, the database which manages the network will not know the new name.
EISNet v1.7 now has functionality built in to detect a name change on a workstation. This means, you can login to a workstation as an Administrator, rename it and on when it reboots, EISNet Client will detect this, and update the database accordingly.
In addition, we have now introduced a brand new feature in Manager which allows you to select a device and rename it remotely, from within Manager itself. The device will then optionally reboot.
Redeploying packages after a rebuild
From time to time it is necessary to rebuild (reinstall Windows) on a device. Sometimes this is due to problems, other times, the device might be replaced. In EISNet, it was not possible to rebuild a work station and automatically redeploy the packages to the device. Previously you would rebuild the work station, then use Manager to reassign the packages.
In EISNet v1.7, this is no longer the case. EISNet Client is now intelligent enough to know when the device has been rebuilt. When this happens, Client will automatically re-install packages.
Friday, 17 February 2012
New features
Posted by Kevin at 09:15
Wake-On-Lan
Today we finalised Wake On Lan which is a feature that allows you to remotely turn on computers from within Manager. This tool is complimentary to SmartLan. For those who do not know, SmartLan is an EIS product designed to remotely turn on computers and shut them down again at pre-defined schedules. It is designed specifically for schools. Whilst there are a number of tools on the market to do just this, few are free (unlike SmartLan which is available free to all EIS customers) and none offer the functionality to define holiday periods where the devices are not turned on automatically. SmartLan does just this. You specify school holiday dates and SmartLan is intelligent enough to know, the computers should not be turned on during that period.
Manager does not need Smart-Lan to wake up devices. It is built in and can do simple remote wake ups. If you want a more advanced scheduler for Wake-On-Lan, you should consider Smart-Lan.
Remote Execute
Remote execute has been given a complete over-haul.
Previously remote execute was flaky at best and often didn't work. A large part of this was lack of feedback to Manager on the result of the execution which has now been addressed.
The new Remote Execute tool now remembers the history of what has been run, so if you find yourself constantly using the same command, you no longer have to type it in every time. In addition, you can now choose whether to execute the process as the System account, or as the user logged in. Both are useful, but at the same time, both have limitations.
Running a process as the System account gives over-all control of the machine with Administrator rights. However, there are some areas the system account cannot access. This includes the User registry hives. So you cannot launch a command to add something to the users registry (HKEY_USERS). You can only add registry items to the local machine's hive (HKEY_LOCAL_MACHINE). The system account cannot interact with the user, or display messages. So you could not launch Microsoft Word as the system account and expect the user to see the process.
Running a process as the user gives the same access rights as the user who is currently logged in. This means, any restrictions applied to that user will also be applied to the process you launch. It does however mean you can add registry items to the Users registry hive, but not the local machines. You can interact with the desktop, so if you launch Microsoft Word as the user, it will be shown to the user.
In addition to the 'Simple' Remote execute function, we have also added a brand new Advanced Mode. This is aimed at advanced users and network managers.
This tool allows you to create batches of commands and save them for future use. All processes will be launched in sequence. Therefore you can change the order of processing.
This allows for quite complex remote execution. For example, you might want to change the IP address of the device, then register the IP with the DNS server and then finally reboot the device.
You might also like to copy over a batch file using xcopy, then launch the batch file immediately.
Whilst this is a new feature, we are looking to improve this in all areas depending on feed back.
User and Device views
Over the period of development, we noticed it would be useful if a an item in the users tree is selected, it automatically shows all users below that level. So for example, if you select the foundation intake, you see all users in the foundation level regardless of which intake they belong to. Likewise, if you select 'Users' you'll see every user within EISNet.
The principle is the same for computers. If you select 'Computers', you'll see every computer in EISNet, regardless of which room it belongs to. This helps if you want to deploy a package to a large group of devices.
Device status
The final update for today is the addition of Device status. When you select a room, the computer list loads as normal. Over the next few seconds, Manager is secretly trying to communicate with each device. If the device is found, it will show as Online. If the device cannot be contacted, it will be shown as offline. Whilst this is a good indication on whether the device is on or not, it only does so based on communication with the EISNet client service. Therefore, if the client service is stopped, the device will show as offline. We will, by the time of release, also change the icon to show a Blue monitor for on, and black for off.

This is a very new feature and will need refining. Currently it re-scans for each device every ten seconds, so should be fairly accurate as to whether the machine is on.
The benefit of this, is where you want to work with the device using Manager, like sending a message, rebooting, remote executing or deploying packages - you can instantly see if the client is ready to accept these type of commands.
Today we finalised Wake On Lan which is a feature that allows you to remotely turn on computers from within Manager. This tool is complimentary to SmartLan. For those who do not know, SmartLan is an EIS product designed to remotely turn on computers and shut them down again at pre-defined schedules. It is designed specifically for schools. Whilst there are a number of tools on the market to do just this, few are free (unlike SmartLan which is available free to all EIS customers) and none offer the functionality to define holiday periods where the devices are not turned on automatically. SmartLan does just this. You specify school holiday dates and SmartLan is intelligent enough to know, the computers should not be turned on during that period.
Manager does not need Smart-Lan to wake up devices. It is built in and can do simple remote wake ups. If you want a more advanced scheduler for Wake-On-Lan, you should consider Smart-Lan.
Remote Execute
Remote execute has been given a complete over-haul.
Previously remote execute was flaky at best and often didn't work. A large part of this was lack of feedback to Manager on the result of the execution which has now been addressed.
The new Remote Execute tool now remembers the history of what has been run, so if you find yourself constantly using the same command, you no longer have to type it in every time. In addition, you can now choose whether to execute the process as the System account, or as the user logged in. Both are useful, but at the same time, both have limitations.
Running a process as the System account gives over-all control of the machine with Administrator rights. However, there are some areas the system account cannot access. This includes the User registry hives. So you cannot launch a command to add something to the users registry (HKEY_USERS). You can only add registry items to the local machine's hive (HKEY_LOCAL_MACHINE). The system account cannot interact with the user, or display messages. So you could not launch Microsoft Word as the system account and expect the user to see the process.
Running a process as the user gives the same access rights as the user who is currently logged in. This means, any restrictions applied to that user will also be applied to the process you launch. It does however mean you can add registry items to the Users registry hive, but not the local machines. You can interact with the desktop, so if you launch Microsoft Word as the user, it will be shown to the user.
In addition to the 'Simple' Remote execute function, we have also added a brand new Advanced Mode. This is aimed at advanced users and network managers.
This tool allows you to create batches of commands and save them for future use. All processes will be launched in sequence. Therefore you can change the order of processing.
This allows for quite complex remote execution. For example, you might want to change the IP address of the device, then register the IP with the DNS server and then finally reboot the device.
You might also like to copy over a batch file using xcopy, then launch the batch file immediately.
Whilst this is a new feature, we are looking to improve this in all areas depending on feed back.
User and Device views
Over the period of development, we noticed it would be useful if a an item in the users tree is selected, it automatically shows all users below that level. So for example, if you select the foundation intake, you see all users in the foundation level regardless of which intake they belong to. Likewise, if you select 'Users' you'll see every user within EISNet.
The principle is the same for computers. If you select 'Computers', you'll see every computer in EISNet, regardless of which room it belongs to. This helps if you want to deploy a package to a large group of devices.
The final update for today is the addition of Device status. When you select a room, the computer list loads as normal. Over the next few seconds, Manager is secretly trying to communicate with each device. If the device is found, it will show as Online. If the device cannot be contacted, it will be shown as offline. Whilst this is a good indication on whether the device is on or not, it only does so based on communication with the EISNet client service. Therefore, if the client service is stopped, the device will show as offline. We will, by the time of release, also change the icon to show a Blue monitor for on, and black for off.

This is a very new feature and will need refining. Currently it re-scans for each device every ten seconds, so should be fairly accurate as to whether the machine is on.
The benefit of this, is where you want to work with the device using Manager, like sending a message, rebooting, remote executing or deploying packages - you can instantly see if the client is ready to accept these type of commands.
Thursday, 9 February 2012
Progress and release date amendment
Posted by Kevin at 21:21Since my last post, there have been some significant progress in the Development of EISNet v1.7.
Supervisor is now built within the Manager tool. This means, any user who tries to access Manager, is given access based on their respective rights. Normal users are instantly rejected. Users who belong to the Supervisors security group are allowed access to a cut down version of Manager. They are allowed to review user properties and change passwords. They will also have access to pupils home folders. Supervisors cannot access any computer based resource at this time, although we plan to implement a feature where a teacher can manage their own room of computers depending on where they are logged in.
I've spend the past few days completely re-writing the communication between Manager and Client. Previously, all Manager/Client connectivity was usable but highly limited. This is now more robust and I have introduced two way communication which means Managers sends the commands, Client responds to acknowledge the command, and then updates Manager when the command is complete. This is shown in the Alerts Panel in Manager and allows you to keep track on what your Clients are doing.
We have also implemented 'Remote Login' - a feature missing for such a long time. It is not as streamlined as we hoped as the computers have to reboot once the Auto Login command is sent rather than immediately login, but we cannot find low level API's from Microsoft (we assume this is available to high level Microsoft partners). This has however, opened the possibility of a cyber-cafe style feature for EISNet in a later release.
You can now remotely logoff a user. Previously only Shutdown and Reboot was available.
EISNet Client has now been converted to EISNet v1.7, along with its sister application ' EISNet Agent'. Client has had the performance and code improvements made to match the other tools. Although Manager in itself will not be changed too much, it is a better tool as a result.
Finally - I do have to announce the slight delay in the EISNet v1.7 release. I had previously stated it would be available in April. However, due to other issues out of my control, it looks like the product will now be released in the Summer 2012. Although I hope to have all the coding complete by April, we need time to do final in-house and field testing, documentation and training.
I think it's important to get the product right before we release it (unlike some other vendors of course).
Tuesday, 7 February 2012
Side Projects - TrueCrypt
Posted by Anonymous at 14:52
Without a doubt EISNet is the biggest coding project we maintain but we also have a number of smaller side projects on the go at the same time.
While Kevin has been working on v1.7, I have been busy with one of these many side projects. As some of you may be aware, EiS provide a tool for encrypting the census data generated by SIMS. This tool is powered by TrueCrypt under the bonnet and unfortunately it's starting to show its age.
The version of TrueCrypt used was very deliberately chosen, it was the last version to support the use of mapping an encrypted container to the drive letter B: (which is about the only drive letter we can guarantee to be free 99.9% of computers). However, this version does not support Windows 7 very well and has no support for 64-bit. We approached the TrueCrypt Foundation to discuss the possibility of them enabling B: drive support in the most recent version or the possibility of using their driver with our own app, unfortunately without much success.
As TrueCrypt is open source we decided to have a look at the code to see if we could make the changes ourselves. Very quickly we had fixed the problem and B: drive support was enabled but nothing is ever simple. In order to use their code, we had to remove all traces of the name TrueCrypt except for a disclaimer stating it is based on their code. The next hurdle was that to use kernel mode drivers on a 64-bit OS they must been digitally signed so we had to purchase a valid driver signing certificate.
After jumping through all these hoops we now we have our own product which can offer full disk and file container based encryption, with full 64-bit OS support.
That's a lot of work just to enable support for a B: drive!
Monday, 23 January 2012
A statistical update
Posted by Kevin at 11:01When you take over someone else's code and have the intention of improving it, it is typical to see the code size deflate and then inflate again.
The last time I posted about the statistics and analysis of the code, I showed how Manager had shrunk heavily compared with the earlier version (v1.6). At the time, we had the tough job of going through all the code refining and improving it where it could be. Naturally, we found wasted code that was then stripped out. This brought the code back to a basic, but highly optimized level.
Once we start implementing new features, or simply improving the old, the code starts to grow again.
Therefore, I thought I'd post the code statistics based on where we are now compared to September 2011.
EISNet v1.7 (September 2011)
Code Lines: 10,761 (62.75%)
Comment Lines: 1,706 (9.95%)
Blank Lines: 4,681 (27.30%)
Modules: 5
Classes: 1
Forms: 28
EISNet v1.7 (January 2012)
Code Lines: 13,443 (61.24%)
Comment Lines: 2,510 (11.43%)
Blank Lines: 6,000 (27.33%)
Modules: 5
Classes: 1
Forms: 26
User Controls: 2
It is important to note that as of the January version, the source code includes Package Manager (previously known as Applications) and Archivist tools.
If you include into Septembers Manager source, the old Applications and Archivist modules, the total lines of code would be 36,587. This is now down to 13,443 and is all in one application. That's 36.7% of the original size.
Wednesday, 18 January 2012
Finishing Package Manager
Posted by Kevin at 21:23
Package Manager is virtually feature complete, although I stress that this is pretty much like for like when compared to the previous version known as 'Applications'.
We have now added the ability to import LNK files - a feature that did already exist, but the code has been re-written. More importantly, you can now import a REG file directly. This means if you have a Registry Fragment file with 100's of settings, you can now import the whole lot with one click. This will hopefully make creating packages a lot more easier.
We have added two new fields into the Package Manager. Each package can now have a version number stored separately and also a description. These will help maintain a good Package repository, but will also be used in future EISNet releases.
As another change to Packages, the definition between an MSI package and a command line package has been completely removed. Each package contains a Package file, regardless of it's type. EISNet is now more intelligent on how it handles each one.
The final addition is the Arguments field. This has been added so each package can have specific arguments attached to it when it launches. This may include arguments for MSI files also. So if you want a silent MSI install, you specify /Q or /QB. This was previously only possible by setting the package as a command line, and then use the MSIExec.exe tool to launch the installation.
Below is a screenshot of the Package Properties window which has changed since my last post.
We have now added the ability to import LNK files - a feature that did already exist, but the code has been re-written. More importantly, you can now import a REG file directly. This means if you have a Registry Fragment file with 100's of settings, you can now import the whole lot with one click. This will hopefully make creating packages a lot more easier.
We have added two new fields into the Package Manager. Each package can now have a version number stored separately and also a description. These will help maintain a good Package repository, but will also be used in future EISNet releases.
As another change to Packages, the definition between an MSI package and a command line package has been completely removed. Each package contains a Package file, regardless of it's type. EISNet is now more intelligent on how it handles each one.
The final addition is the Arguments field. This has been added so each package can have specific arguments attached to it when it launches. This may include arguments for MSI files also. So if you want a silent MSI install, you specify /Q or /QB. This was previously only possible by setting the package as a command line, and then use the MSIExec.exe tool to launch the installation.
Below is a screenshot of the Package Properties window which has changed since my last post.
![]() |
| Package properties |
Subscribe to:
Posts (Atom)



