Hello Optimizer fans!

This has been amazing year for Citrix Optimizer so far, and we’re celebrating another release with tons of new features, improvements and fixes!

We have a little bit of everything in this release — some new features for end users, some improvements for template builders, and some improvements for integration with third-party deployment solutions, as well as changes to new and existing templates. Without further delay, let’s dig into Citrix Optimizer 2.6 and see what’s new under the hood.

And don’t forget. If you have feedback for us, you can always use our Citrix Optimizer feedback form or connect with us on the #citrix-optimizer Slack channel at “World of EUC” workspace.

For Template Users

New and Updated Templates

We’ve included a template for the Windows 10 build 1903 in this release. It’s not really new — it has been available on the Citrix Optimizer Community Template Marketplace for a while now. But this is first Optimizer release where it’s included by default.

Don’t worry. We haven’t just included the old Windows 10 build 1903 template by default. We’ve also extended it with a bunch of new optimizations:

  • Remove Windows Mail and Calendar
  • Turn off Cortana
  • Disable CEIP
  • Disable Hibernation
  • Disable Distributed Link Tracking
  • Disable Windows Storage Sense
  • Disable CSC (offline files driver)

These are all new optimizations introduced in this release. We are also reviewed all previously released templates and updated them with new optimizations.

We have also created a new group of optimizations called Maintenance Tasks that includes all entries that should be executed any time you update a master image. This currently includes cleanup of all event logs and native-image generation (NGEN) tasks. We will probably limit this to the most important tasks, but for an expanded list, we recommend that you look at community project BIS-F. (Please note, BIS-F is not provided or supported by Citrix.)

Another interesting change is that Optimizer now includes analyze-only entries. This means Optimizer will only report some entries and not actually attempt to change or fix them. This is very useful if an optimization is configured by Group Policy. We can detect that your system isn’t running optimally and suggest changes, but you have to make the changes. In this release, Windows Update is based on this analyze-only mode. Optimizer looks at applied group policy and, if Windows Update is not disabled, will notify you, but it won’t make changes automatically.

Template Selection

We’ve made template selection easier than ever with this release, both in the user interface and in command-line mode.

We have also improved the display of available templates. If there’s a recommended template for your build, it will always be at the top of the list, followed by all official Citrix templates and any third-party templates you might have.

Notice that we’re using a new icon to distinguish official templates from third-party ones. This is not just a cosmetic change. In this new release, all templates that claim to be from Citrix must also have a valid signature that is confirmed when template is loading. If the signature is invalid (the template has been modified, for example) or not available, Optimizer will refuse to open the template and will give you an option to download it again from the official marketplace.

Please note, template signatures are required only for templates from Citrix. If you have modified one of the official templates before and are using it in your environment, simply change the Author name from “Citrix Systems Inc.” to some other value.

We’ve also improved support for automatic template selection in command-line mode. We introduced template auto-selection in version 2.0. If you don’t specify a -Source/-Template parameter, it will look at your current operating system build and try to find the best template to use. This is especially helpful in integrating with third-party solutions (you can use same code for various operating systems) or if you keep forgetting template names (yes, that’s me!).

There were two problems with the previous implementation: support for third-party templates using the -TemplatePrefix parameter was limited (Optimizer could work with either Citrix templates or third-party templates, but not mix them together) and when the exact template for an operating system was not found, Optimizer would abort the execution. We’ve addressed both limitations in this release.

AutoSelect: In the previous release, auto-selection is used only when no template is provided (missing Source or -Template argument). In this release, auto-select will start if the value of Source/Template argument is “AutoSelect”, e.g. ‘-Template AutoSelect’. This change is important for third-party solutions that are integrating with Citrix Optimizer.

Template Fallback: In the previous release, the exact template (OS version + build) was required for auto-select to work properly. However, this requirement made testing of new Windows releases complicated, because templates for new OS builds are released only after official RTW from Microsoft. In this release, we have added template fallback functionality. If the perfect template isn’t available, Optimizer will start looking for the best match instead:

  1. Optimal template — Current version + current build (e.g. Citrix_Windows_10_1903.xml for Windows 10 build 1903)
  2. Previous build — Current version + latest previous build (e.g. Citrix_Windows_10_1809.xml for Windows 10 build 1903 if build 1903 is not available)
  3. Generic version — Current version (e.g. Citrix_Windows_10.xml for Windows 10 build 1903 if not previous builds are detected)

Custom Templates: When you specify custom template prefix (using -TemplatePrefix argument), the same fallback mechanism is supported (going from optimal template to generic template) for your custom templates. If no matching custom template is detected, Citrix templates are processed instead.

This means that if you create custom template Martin_10_1903.xml (with argument ‘-TemplatePrefix Martin’), the following is the search order for templates:

  1. Martin_10_1903.xml
  2. Martin_10_????.xml
  3. Martin_10.xml
  4. Citrix_Windows_10_1903.xml
  5. Citrix_Windows_10_????.xml
  6. Citrix_Windows_10.xml

If none of these templates are detected, Optimizer will show display a message that reads: “Auto-detection of template failed, no suitable template has been found.” This functionality enables you to mix your custom templates with official Citrix templates.

We have also fixed auto-detection of the Windows 8.1 template in this release.

Unified Status Reporting

In previous releases, Optimizer provided a summary of applied optimizations, but it didn’t report whether the execution succeeded, failed, or partially succeeded. It only reported that it finished without encountering issues.

This makes integration with third-party solutions such as BIS-F, SCCM, or any other software deployment more complicated. If you want to properly report whether a system has been optimized, you must open the output XML file and analyze the results from all entries. In version 2.6, we are providing better reporting about the status of template execution and including unified status reporting in user interface, command line mode, and output HTML and XML reports.

When you analyze the same template in v2.6, the output looks different. The status is not only saying that Optimizer finished the execution without encountering unexpected issues, it also reflects the output from template status.

You can also see this overall status reflected in generated HTML report.

This is all based on information that is now stored inside XML output file generated by the engine.

If you are integrating Optimizer with your own script or automated solution, you can use XML node <run_status /> to read details about execution. The following information is provided, where <run_successful /> is most important:

  • run_mode – Optimizer mode (Analyze/Execute/Rollback)
  • time_start – time when run started – time_end – time when run finished
  • entries_total – total number of entries in template
  • entries_success – number of entries in template that were finished successfully
  • entries_failed – number of entries in template that have failed
  • run_successful – boolean value (True/False) indicating overall status
  • run_details – description of current run

If you look closely at the previous screenshot, you might wonder why 9 + 114 = 129. It’s because six entries have not been selected for execution (optional optimizations), and they are excluded from this calculation. This will be also the case if some entries (even if selected) do not support current execution mode (e.g. Windows Update in this release supports only analyze mode). Entries that aren’t selected for execution, do not support current mode, or have conditional processing that failed are not included in the overall success calculation.

For Template Builders

Template Builder Improvements

We are using Template Builder to make all changes to official Citrix templates, and, thanks to your feedback (and our own experience), we keep making it better with each release. We’ve made a few changes with this release and are planning to make more enhancements to the user experience in our next release.

You can now easily re-order entries in group using new Up and Down buttons next to each entry:

We have also added support to Change Group for entry (supports multiple entries).

We have also fixed a problem where you couldn’t select the automatic or manual mode for services, but only disable it:

Finally, we’ve changed the behavior of checkboxes in the Template Builder. Multiple builders reported this to be confusing, and we decided to change this behavior to provide a familiar user experience.

Disabling Modes for Templates, Groups, and Entries

In Citrix Optimizer version 2.5, we added the ability to disable certain modes (Analyze/Execute/Rollback) for some templates. This is mostly useful for templates such as best practices analyzers that support only Analyze mode but that are not making any changes to an operating system.

Based on your feedback, we made some changes in this release. Previously, you had to select Unsupported modes. In this release we are reversing this logic and you must select Supported modes. Thanks to everyone who gave us feedback about this!

In version 2.6, we have also extended support for disabling modes to groups and individual entries. When an entry with disabled mode is detected, the status is “Not analyzed” and the message “This entry does not support X mode, skipping” is saved to final report:

When mode is disabled for the whole group, all entries below are automatically skipped with the same notification. Entries will automatically inherit supported modes from their parent group:

We are using this new functionality to change behavior of Windows Update (analyze-only). This is most useful with a PowerShell module, where you can simply choose that your PowerShell code doesn’t support modes such as rollback.

Module Updates

We’ve updated the Registry and Services modules and fixed various issues.

For the Services module, we’ve added support for kernel driver services (start type SYSTEM) and improved legacy support (Windows 7 / Windows Server 2008 R2). When disabling service, we also attempt to stop it (previously after disabling a service, reboot was required to apply changes).

For the Registry module, we have fixed issues related to the comparison of different value types (e.g. comparing decimal and hexadecimal values). We have also improved support for the more complex handling of the registry. Optimizer now supports the ability to delete registry value (CTXOE_DeleteValue), delete a whole key (CTXOE_DeleteKey), or create an empty key without any values. This module has been almost completely rewritten, and we appreciate any feedback you have about these more advanced use cases.

But Wait! There’s More!

We’ve also made these updates:

  • Columns have been resized in the main view to better support low resolution displays.
  • We added better handling of no internet connectivity.
  • We’ve fixed various issues related to UI refresh.
  • We’ve fixed an issue where long marketplace name is not displayed properly (e.g. Citrix Community Template Marketplace).
  • Progress is shown when opening templates.

Summary

Citrix Optimizer 2.6 is an exciting release, and, as always, community feedback has been critical — we like to talk to our users and hear what you have to say. Most of the development is driven by feedback from our fellow users and builders, and we appreciate if you could help us to spread the word!

If you have any feedback, reach out to us through this web form or, even better, visit #citrix-optimizer Slack channel at “World of EUC” workspace.

Your Citrix Optimizer Team,

Martin Zugec, Zhipan Liu, Luis Salinas, and Xuan Li


Citrix Tech Bytes – Created by Citrix Experts, made for Citrix Technologists! Learn from passionate Citrix Experts and gain technical insights into the latest Citrix Technologies.

Click here for more Tech Bytes and subscribe.

Want specific Tech Bytes? Let us know! tech-content-feedback@citrix.com.