Nothing is easy; in software, and in life. Challenges and hiccups are inevitable when developing . Developers often find themselves grappling with a multitude of issues, ranging from registration problems with installers to debugging customer software tools. In this blog post, we will explore two distinct yet equally significant challenges faced by developers and the solutions that ultimately saved the day.
Registration Issues with the Versa Note Installer
After spending countless hours tweaking and debugging our GitHub action pipline for Versa Note, we were dismayed to find that the installer didn’t actually do it’s job and install the application… well not fully. What could possibly have gone wrong?
In our case, the problem boiled down to a version number mismatch between the COM-visible assembly DLL and the version number expected by the installer (due to the specific dependency created when the DLL was added to the installer). This mismatch was particularly frustrating because it seemed to be the result of a seemingly innocuous decision made during the development process.
The Culprit: Automatic Revisioning with an Asterisk
The trouble began with automatic revisioning. To manage version numbers, we had decided to use an asterisk in the revision portion of the assembly version. This asterisk acted as a wildcard, allowing the build process to automatically increment the revision number with each build.
While this approach seemed convenient, it turned out to be the source of our registration woes. The installer expected a specific version number, and the wildcard caused discrepancies that resulted in installation failures.
The Solution
To resolve this issue, we simply removed the wildcard character from our assembly number. Since we are using a GitHub action script, versioning can be automatically handled by incorporating the GitHub run_number. By eliminating the wildcard, we ensured that the installer always pointed to the correct version of the DLL.
This solution not only resolved the registration issues but also improved the overall reliability of our software distribution process. Lesson learned: while automation can save time, it’s essential to maintain control over critical variables like version numbers to avoid unforeseen complications.
Tracking Down Issues with Serilog
In the second part of our journey, we delve into the world of customer support. A customer was experiencing rare issues with their existing software tool that we have been enhancing and optimizing for them (you may remember this from a previous post), but pinpointing the problem, which we could not reproduce, proved to be a daunting task. Debugging software on a customer’s system, especially remotely, can be a real puzzle.
Serilog to the Rescue
Enter Serilog, a popular .NET logging library. Serilog is a powerful logging tool that can be easily incoporated into any .NET project (Versa Note, our flagship drawing note application uses Serilog too!) What sets Serilog apart is its ability to change logging levels at runtime by modifying a configuration file, rather than requiring a recompilation of the code. This feature proved invaluable in resolving our customer’s issues.
Dynamic Logging Level Modification
With Serilog, we could dynamically adjust the logging level without altering the source code. This meant we could collect more detailed logs on the customer’s machine without shipping a special debug build or requiring them to modify the code.
By tweaking the logging configuration file, we could set the logging level to the maximum verbosity, capturing every detail of the application’s behavior. This made it possible to identify and diagnose the root cause of the customer’s problems with precision.
The Result
Thanks to Serilog’s flexible logging configuration, we successfully resolved the customer’s issues without the need for a code update or a new release. This not only saved valuable development time but also improved our ability to provide effective customer support.
Conclusion
Software development is a journey filled with challenges and discoveries. In this blog post, we’ve explored two distinct challenges and their solutions. The first involved resolving registration issues with the Versa Note installer by refining our versioning process. The second showcased the power of Serilog in dynamically adjusting logging levels to track down and fix customer software issues efficiently.
As developers, we should always be prepared to adapt and find creative solutions to the unexpected roadblocks that come our way. By learning from our experiences and leveraging the right tools, we can ensure the smooth delivery and maintenance of our software products.
Versa Note’s new feature-packed release will be launching soon, so follow our CAD Innovations blog to get the latest info!