Px Tools 4.0 End of Year Update
Two years ago, I set out to refactor the entire code base for Px Tools, implementing all the things I had learned after 4 years of developing, extending and maintaining the PowerShell based version. In parallel, last year I delivered Px Tools 3.4, with “experimental tasks” to test ideas like Rules and Nested Tasks, with the plan to fully implement those ideas across all Tasks (and in the case of Rules, Sets and Packages too) in Px tools 4.0.
As I have progressed with that refactor, I have come to the realization that many of the issues and hurdles I was encountering are the very things Object Oriented Programming was designed to solve. Go figure! So, this summer I started working on some OOP jigs of the bigger structural concepts in Px Tools; logging, XML validation and use, Set/Package/Task processing, error handling. That has been fruitful enough that a few months ago I committed to scrapping the Functional refactor I had been working on for two years, and instead refactoring EVERYTHING to Classes. It’s been a massive learning curve for me, but every hurdle I have approached with the new OOP focus has proven lower than the same hurdle with functional code. And Classes have opened some doors that just would not have been there at all with functions. And so, I am hammering away refactoring everything I have spent the last 6 years writing. Woot!
If you are interested in a bit more detail on what’s happening with Px Tools 4.0, read on.
Small Firms New (ideal for firms of 20 or fewer machines)
All the common Px Tools features, without the tent pole features intended for larger or multiple location offices.
Single Location Firm (ideal for larger firms that can benefit from the Jobs feature, but only have one location)
All Small Firm features.
Plus Jobs feature to facilitate management of larger numbers of machines.
Multiple Location Firm (ideal for larger firms with multiple locations)
All Single Location features.
Plus Locations feature to facilitate managing machines in multiple locations with varied network pathing, license server scenarios, Revit Server accelerators, etc.
Pragmatic Software Management New (ideal for very small firms, or larger firms that already have their automation sorted, and just need customization information)
All the online courseware pertaining to customization, deployment creation, update idiosyncrasies, etc., but without Px Tools for automation.
Speaking of courseware the packages detailed will now include
- Autodesk AutoCAD & verticals
- Autodesk Navisworks
- Autodesk Revit
- Autodesk Dynamo
- Autodesk 3D Studio MAX
- BlueBeam Revu
- Microsoft Office
This list will only get larger as April 2020 approaches. And all will have detailed information about customization and management. And, in a related note, the web site is getting a “refactor” too, to make it easier to find the information you need, when you need it. And to differentiate the more “marketing” oriented information a potential customer needs vs the “I got shit to do!” information needed by logged in customers.
Refactor: Under the hood the biggest change is a ground up rewrite of every single line of code implemented as Object Oriented Programming rather than the Functional Programming of earlier versions. This will make maintaining and extending the code base much easier.
Performance improvements: mostly you will only notice this at initial launch, since Px Tools performance, or lack thereof, is eclipsed by the performance, or lack thereof, of installers. The other place you will likely notice it is at user logon, where user context should begin processing much quicker.
Bug reduction: Approximately 70% of the pre-release bugs in previous versions of Px Tools where “pipeline pollution” bugs, which are a natural byproduct of using PowerShell as a “functional” scripting language. Moving to Classes and Object Oriented Programming will eliminate the pipeline pollution problems, and free up time to write better code, test more extensively, and catch more non pipeline pollution bugs.
Simplification of script arguments: Sets Sets are defined as Conform or Test (formerly Apply) Sets in the XML by either referencing Packages with a Package node for Conform Sets, or an Action Node (Rollout or Remove) for Test Sets, so different -conformSet and -applySet arguments are redundant and replaced with a single -setList argument. Initial Validation will ensure that a given Set is properly defined (all Package nodes or all Action nodes) and fail with an error if there are issues. The name of this argument, -setList, is a giveaway of a new feature too.
Simplification of script arguments: Supersede The current supersede arguments are, to be blunt, stupid and confusing. The -supersede argument itself is going away, and both -setList and -location will get prefixes to allow a complete supersede in both cases as well as addition and removal of specific sets. More detail on this to follow in a separate post soon.
Rationalization of Task naming and use : Tasks have been added in a somewhat ad hoc fashion over the years, with less consistency in naming and use than is ideal. Px Tools addresses this by rationalizing all task names, depreciating some focused use tasks that can be implemented with more general use tasks, and providing some new tasks to fill out the Px Tools toolbox. More on this in a later post as well.
Standardization of Task XML structure : The current XML structure was initially developed with a focus on making it simple and easily understood. But some tasks are simple, and others more complex, and currently the XML structure reflects that. This inconsistency actually makes the XML harder to understand in some cases, hinders robust validation, and makes adding a GUI very difficult indeed. Px Tools 4.0 will standardize the XML across all Tasks, and the task classes will leverage this to vastly improve validation and logging, making troubleshooting issues much easier. And, that combination of Classes and standardized XML will make adding a GUI much, much easier.
Locations (Px Tools for Multiple Locations only)
Locations and the associated Location Tokens allow a single package definition to support multiple locations with different local network paths for resources (deployments, installers, families, blocks, etc.). The Relocate Action allows a machine to be moved from one location to the other easily, for example when staff move between physical locations, or when computers are initially provisioned at a central location then shipped to the office that needs them.
Jobs New (Px tools for Multiple Locations & Px Tools for Single Locations)
The Jobs feature allows you to create a Job Queue based on various criteria (all machines, all machines in a certain location, all machines with a specific Package assigned, all Laptops, etc.) and then Conform those machines during a specified time window. The Job can be configured to only Conform machines in which no one is logged in, or allow for (the more risky) Conform behind a Logged On User behavior. At the completion of the conform window you get a report of successes, failures & unavailable/logged on machines, and you can rerun the Job for those machines still in the queue at a later time. For example, you could schedule a conform for the entire office during a Monday morning all office meeting, then run it again at lunch for those staff who where not logged out, and finally run it a last time a week later when the last straggler laptops are in the office and available.
Assignment of multiple Conform Sets
The current limitation of only a single Conform Set being assigned to a particular machine causes problems for firms with a more ad hoc software assignment policy. For example, if the entire office gets a particular Set of Packages, but a few machines get that plus a couple of Visualization packages like 3DS Max, the current system requires two distinct Sets with a great deal of redundancy. Multiple Conform Set assignments allows for the benefits of Conform Sets to be had while also retaining the ability to assign software flexibly. Best of both worlds!
Rules replace the currently limited Directive System for limiting packages and tasks to certain criteria with a much more full featured and flexible system. For example, a single Package could address installing to a D drive only when such a drive is present and the C drive is an SSD of a certain size, installing to the C drive in all other case. This is useful when dealing with older hardware that requires special treatment.
Nested Tasks New
New Pre-Task and Post-Task nodes support any task being nested in another, either pr or post main task. Examples include stopping a process or uninstalling a previous version prior to an install, such as required for an unbundled C4R 2017.2.1 install.
Process Mode, with Monitor & Test options
The new Process Mode provides a single argument to facilitate the Interactive behavior that was the default for Px Tools 3.4 & earlier, and replaces the -hidden flag with the Job option that is both non interactive and does not echo anything to the console, to facilitate use of Jobs, SCCM, PrismDeploy and other en mass automated Conform methods. A Monitor option is non interactive, but does update the console, and is the default for Conforms. A Test option allows testing of tasks, packages and whole sets without impacting the ability to also continue to use the non test definitions in production. MUCH more detail on this in a later post.
Package & Task History by date and time
Package and Task history are now named by date & time first, so that a review of the History in the registry shows that history in the order applied, not simply alphabetically by task & package ID.
Install Task includes orphan remove information New
The Install task can now note uninstall orphans as part of the install, so that the Remove action does not need to be revised over time separate from the Install. This information will be included in the Update Recipes that can be downloaded from the Px Tools web site.
The Migration Utility will convert your Px Tools 3.4 and earlier Definitions & Initiation shortcuts to the 4.0 format and make Best Practice recommendations. A backup of your existing definitions and shortcuts will be retained.
Relocate Deployment New (Multiple Location only)
This utility will leverage the information in your Locations.xml file to facilitate overnight migration of Deployments from one location to another, including revisions in the deployment.ini file and install shortcuts.
The new pricing structure reflects the new functionality in Px Tools 4.0, simplifies multiple location pricing, and includes a year of Convenience Subscription. After the first year, maintaining the Convenience Subscription will give you access to all web materials, recipes, resource files, etc. Should you not maintain the Convenience Subscription, Px Tools will continue to work with no issues, you will simply have to maintain and add resource files yourself, do data gathering for subsequent years, etc. My hope is the Convenience Subscription pricing makes it a no brainer to choose it.
Pragmatic Software Management
Px Tools for Small Firms
€500 (including €50/year Convenience Subscription)
Px Tools for Single Location Firms
€1000 (including €100/year Convenience Subscription)
Px Tools for Multiple Location Firms
€500 + €500/location (including €100/year/location Convenience Subscription)
This new pricing structure applies only to new purchases of Px Tools 4.0. All Px Tools 3.4 customers will be upgraded free to Px Tools 4.0, with free lifetime Convenience Subscription. Because early adopters ROCK!
In an effort to drive some sales and thus allow me to remain focused on the new version, I am offering a rolling coupon good from now until Px Tools is available. This coupon is good for 25% off through the end of November 2019, with the savings reduced by 5% each month moving forward. Simply use the coupon code FinalSprint at purchase.
Remember that when using this coupon code now, you get a savings off the Px Tools 3.4 pricing (Px Tools 3.4 for Single Locations, Px Tools 3.4 for Multiple Locations), free upgrade to Px Tools 4.0, and free lifetime Convenience Subscription.
The FinalSprint coupon schedule is as follows:
till 30 November 25% off; think of it is a Black Friday deal.
during December 2019 20% off
during January 2020 15% off
during February 2020 10% off
during March 2020 5% off
As I progress with the refactor, I will be posting about specific features in more detail, and looking for input while things are still… malleable. In the meantime, if you have any specific functional requests, or want to schedule a demo, please contact me.