• v4.25.0 e9ddb567ab

    v4.25.0 Stable

    kerem released this 2025-12-23 14:19:24 +03:00 | 8 commits to main since this release

    📅 Originally published on GitHub: Tue, 23 Dec 2025 11:59:04 GMT
    🏷️ Git tag created: Tue, 23 Dec 2025 11:19:24 GMT

    v4.25.0 - 2025-12-22

    Benefactor Circle add-on users with mailboxes in Exchange Online should update to this version as soon as possible. Microsoft will begin changing roaming signature HTML processing shortly. Update as soon as possible to avoid potential negative impact on the parameters 'DeleteScriptCreatedSignaturesWithoutTemplate' and 'DeleteUserCreatedSignatures'.

    Variable replacement in Word is now much faster, but you must test your DOCX templates first. You must make sure that every character of a replacement variable in the template is formatted identically, or the replacement will fail. An example is given in the detailed changelog entry below.

    Changed

    Set-OutlookSignatures

    • Switch to a new way of marking signatures created by Set-OutlookSignatures, while keeping compatibility with the existing one. This makes sure that the parameters 'DeleteScriptCreatedSignaturesWithoutTemplate' and 'DeleteUserCreatedSignatures', as well as similar features keep working when Microsoft changes roaming signature HTML processing.
    • Speed up replacing non-picture variables in DOCX (Word) templates by no longer replacing the variables in Word, but in the exported HTM file.
      • You must make sure that every character of a replacement variable in the template is formatted identically, or the replacement will fail.
        An example: When not all characters of '$CurrentUserGivenName$' are formatted identically, the string cannot be found in the final HTML signature created from the DOCX tempate file, which makes it impossible to replace the placeholder with the actual given name of the currently logged-on user. The slower Word variant used in earlier versions allowed for this, but always used the formatting of the first letter for the replaced text.
    • Update 'MoveCSSInline' to fall back to non-inlined HTML in case of errors.
    • Update libphonenumber-csharp to v9.0.21.
    • Update address-formatting datbase to 8444a0cc989042ebb21e6420f82bc4ded05a7fec.
    • Rephrase the welcome screen.
    • Make Graph API queries more resilient by retrying them five seconds after catching an error. This compensates for brief "hiccups" in the internal environment, on the Internet, and in Microsoft's data centers.

    Benefactor Circle add-on

    • Embed images when setting Outlook on the web signatures (classic and roaming), independent from the value of the 'EmbedImagesInHtml' parameter. This makes sure that images are also considered for default signatures that have not been created by Set-OutlookSignatures.

    Outlook add-in (part of the Benefactor Circle add-on)

    • Update @azure/msal-browser to v4.27.0.

    Added

    Set-OutlookSignatures

    • Add shorter replacement variable names. To simplify signature design in limited space, shorter versions of replacement variables are automatically added. The original long names remain the default; short names are just an extra option. This applies to both default and custom variables.
      Implementation logic and usage examples:
      1. CurrentUserManager -> UM
        Example: '$CurrentUserManagerVariableX$' is also available as '$UMVariableX$'
      2. CurrentMailboxManager -> MM
        Example: '$CurrentMailboxManagerVariableX$' is also available as '$MMVariableX$'
      3. CurrentUser -> U
        Example: '$CurrentUserVariableX$' is also available as '$UVariableX$'
      4. CurrentMailbox -> M
        Example: '$CurrentMailboxVariableX$' is also available as '$MVariableX$'
    • Show a warning when a GPO (group policy object) setting takes precedence over the Outlook registry value set by the 'DisableRoamingSignatures' parameter. Warnings are also shown when a GPO (group policy object) setting takes precedence over the registry values 'Send Pictures With Document' (Outlook), 'DisableWarningOnIncludeFieldsUpdate' (Word), and 'AlertIfNotDefault' (Word).
    • Show a warning when a template contains an image in a format unusual for emails. The usual usual image formats supported by basically all email clients are JPG, JPEG, PNG, and GIF.
    • Handle non-HTML-conformant 'img' tags with 'src' attributes starting with './' and '.'. While not HTML conformant, this format is intuitive and all major browsers support it.
    • Add new FAQ 'How to add a calender link'

    Benefactor Circle add-on

    • Make the parameter 'DeleteScriptCreatedSignaturesWithoutTemplate' remove old signatures which can only be leftovers of switching from 'DisableRoamingSignatures false' to 'DisableRoamingSignatures true', even when these leftovers have not been created by Set-OutlookSignatures.
    • Show a warning when a signature has more than 30,000 characters (excluding images) and will therefore probably not work in Outlook add-in launch events and the taskpane.
    • Add additional code to '.\sample code\Create-EntraApp.ps1' ensuring that default configuration parameters, package providers, and package repositories are available. Force the use of PowerShell Gallery when searching for required packages.

    Outlook add-in (part of the Benefactor Circle add-on)

    • Show a warning in the taskpane of the Outlook add-in when the signature shown in the preview has more than 30,000 characters (excluding images) and will therefore probably not work in Outlook add-in launch events and the taskpane.
    • Add to the taskpane a "Copy to clipboard" button for the currently previewed signature. This makes it easy to copy a signature to another email client and to overcome the 30,000 character limit.
    • Add to the taskpane a "Copy to clipboard" button for the log output.
    • Add to the taskpane a "Reload add-in" button for iOS and a link to instructions how to clear the add-in cache on all platforms.
    • Add to the online documentation instructions how to 'Clear the Outlook add-in cache'.

    Fixed

    Set-OutlookSignatures

    • Make sure the '$Current[User|Manager|Mailbox|MailboxManager]PostalAddress$' not only contains line breaks when using DOCX templates, but also when using HTM templates.

    Benefactor Circle add-on

    • Fix warning message 'Signature file '.htm' not found. Outlook on the web HTML signature will be blank.', which leads to not setting the signature in classic Outlook on the web. This is only relevant for mailboxes hosted in Exchange on-prem when being accessed via Outlook on the web and when not using the Outlook add-in.

    File hashes and code signing

    • SHA256 hash of 'Set-OutlookSignatures_v4.25.0.zip': 480C3AD54FF7A04C3D15D6D528088745CEFEB1694985F0BEA4A8B69E69667991
    • See 'hashes.txt' in 'Set-OutlookSignatures_v4.25.0.zip' for the hash value of every single file in the release.
      • Compare these hashes with the output of 'Get-ChildItem -Recurse | Get-FileHash -LiteralPath $_.FullName -Algorithm SHA256'.
    • Files are code signed with ExplicIT Consulting's Extended Validation (EV) certificate.
      • Check the signature with 'Get-ChildItem -Include '*.ps*1', '*.dll' -Recurse | Get-AuthenticodeSignature'.
    Downloads
  • v4.24.0 30bc81daba

    v4.24.0 Stable

    kerem released this 2025-11-26 18:20:19 +03:00 | 10 commits to main since this release

    📅 Originally published on GitHub: Wed, 26 Nov 2025 15:22:23 GMT
    🏷️ Git tag created: Wed, 26 Nov 2025 15:20:19 GMT

    v4.24.0 - 2025-11-26

    Changed

    Set-OutlookSignatures

    • Update libphonenumber-csharp to v9.0.19.
    • Update MSAL.Net to v4.79.2.

    Outlook add-in (part of the Benefactor Circle add-on)

    • Update @azure/msal-browser to v4.26.2.

    Added

    Set-OutlookSignatures

    • Make it much easier and more flexible to add account pictures to DOCX templates: Simply add a shape, position it "inline with text" and add the name of the picture replacement variable ('$CurrentUserPhoto$', for example) to the alternative text. The shape is then automatically filled with the picuture you selected, giving you new graphical possibilities. The old way via "link and embed" is still possible, so you do not need to change your templates.
    • Update the function 'ConvertEncoding' to handle and try to automatically correct HTM template files which are not following the required format (UTF-8 without BOM, meta charset definition).
    • Add new FAQ: 'How to deploy a signature only once'
    • Show a warning when a mailbox does not have the 'mail' attribute set, if the mail attribute does not match the primary SMTP address, or if multiple primary SMTP addresses are defined. Each of these misconfigurations will lead to errors in Set-OutlookSignatures and other applications, including Microsoft software.
    • Show a warning when DOCX templates are used and a non-picture replacement variable has more than 255 characters. Use a slower replacement method for these cases.
    • Add a workaround for Microsoft Graph sending malformed IDs for mailbox elements, which in turn can not be used with the Graph API as they are malformed (an error with the code 'ErrorInvalidIdMalformed' can be found in the log file).

    Outlook add-in (part of the Benefactor Circle add-on)

    • Show 'CUSTOM_RULES_CODE' in the log output of the Outlook add-in.
    • Add a new configuration parameter: 'LAUNCHEVENTS_HOSTS_AND_PLATFORMS' allows for additional fine-grained control by defining which launch events are enabled on which hosts and platforms (and not just for mobile and non-mobile as Microsoft allows). See 'run_before_deployment.ps1' for details.
    • Add a workaround for New Outlook (and in some cases Outlook Web) behavior: In events, an existing signature is not replaced but added as additional text below the existing one. This can lead to many signatures shown, as the Outlook add-in is triggered by each added or removed recipient.

    Fixed

    Set-OutlookSignatures

    • Update Graph authentication module to handle a change in the Windows 'dsregcmd /status' output, which can include keys like 'NgcSet' multiple times when additional work accounts have been added to Windows. This could make 'Integrated Windows Authentation without login hint' impossible (silent authentication would still work with the authentication broker method tried later, as all Windows versions in support which allow work accounts also support the broker method).
    • Update country detection for 'FormatPhoneNumber' and 'Format-PostalAddress' to correctly handle null values and whitespace strings.

    File hashes and code signing

    • SHA256 hash of 'Set-OutlookSignatures_v4.24.0.zip': 162BFDB235BD84F99FE3E90F59000FD7200B611D62ADBA7D5B8FF01776A46385
    • See 'hashes.txt' in 'Set-OutlookSignatures_v4.24.0.zip' for the hash value of every single file in the release.
      • Compare these hashes with the output of 'Get-ChildItem -Recurse | Get-FileHash -Algorithm SHA256'.
    • Files are code signed with ExplicIT Consulting's Extended Validation (EV) certificate.
      • Check the signature with 'Get-ChildItem -Include '*.ps*1', '*.dll' -Recurse | Get-AuthenticodeSignature'.
    Downloads
  • v4.23.0 907027fa26

    v4.23.0 Stable

    kerem released this 2025-10-19 00:05:50 +03:00 | 12 commits to main since this release

    📅 Originally published on GitHub: Sat, 18 Oct 2025 21:07:59 GMT
    🏷️ Git tag created: Sat, 18 Oct 2025 21:05:50 GMT

    v4.23.0 - 2025-10-18

    Changed

    • Update dependencies
      • @azure/msal-browser v4.25.1
      • HtmlAgilityPack v1.12.4
      • MSAL.Net v4.77.1
      • QRCoder v1.7.0
    • Reduce output of Outlook add-in taskpane when not being viewed in Outlook.
    • Change included sample QR code from MeCard to the more frequently used vCard format.
    • Update sample templates to reflect QR code and phone number changes as described in the 'Added' section.

    Added

    • Add check for PowerShell Full Language Mode to all admin scripts, including sample code.
    • Add a phone number formatter based on Googles libphonenumber library.
      The code 'FormatPhoneNumber' in '.\config\default replacement variables.ps1' is used to create the new additional default replacement variables '$Current[user|Manager|Mailbox|MailboxManager][Telephone|Fax|Mobile]-[E164|INTERNATIONAL|NATIONAL|RFC3966]$'. The sample code takes a phone number and optionally a country, and converts them to standardized predefined formats for easy human readability or for use in 'tel:' links. A custom formatting option is also available.
    • Add an address formatter.
      The AddressFormatter module is based on the great work OpenCage GmbH shares on their GitHub repo.
      The code in '.\config\default replacement variables.ps1' used to create the new '$Current[user|Manager|Mailbox|MailboxManager]PostalAddress$' replacement variables can easily be adapted to create other postal addresses matching the formatting rules of the defined for a user or mailbox.
    • Add FAQ 'What can I learn from the code of Set-OutlookSignatures?'. It gives an overview which scripting techniques you can learn from Set-OutlookSignatures.
    • Add '.\sample code\Start-IfADAvailable.ps1', showing how to run Set-OutlookSignatures (and other software) only when a working connection to Active Directory is available.
    • Add a workaround for Windows PowerShell 5.1 sometimes not being able to access variables with a 'script' scope and a name of 'IsWindows', 'IsLinux', or 'IsMacOS'.

    Removed

    Fixed

    • Fix the Sort-Object parameter to use -Culture in the Intune remediation sample script, restoring culture-aware sorting. (#145) (Thanks @rene-schwabe!)
    • Include relative path information when downloading files from SharePoint Online. This makes sure that images in subfolders are correctly downloaded when using HTM templates.

    File hashes and code signing

    • SHA256 hash of 'Set-OutlookSignatures_v4.23.0.zip': 280C22D27CA79161619CFCD86CF4B2D788F61250289187C874815FF8396DB2DD
    • See 'hashes.txt' in 'Set-OutlookSignatures_v4.23.0.zip' for the hash value of every single file in the release.
      • Compare these hashes with the output of 'Get-ChildItem -Recurse | Get-FileHash -Algorithm SHA256'.
    • Files are code signed with ExplicIT Consulting's Extended Validation (EV) certificate.
      • Check the signature with 'Get-ChildItem -Include '*.ps*1', '*.dll' -Recurse | Get-AuthenticodeSignature'.
    Downloads
  • v4.22.0 3bf9666a88

    v4.22.0 Stable

    kerem released this 2025-09-05 20:51:00 +03:00 | 14 commits to main since this release

    📅 Originally published on GitHub: Fri, 05 Sep 2025 17:53:07 GMT
    🏷️ Git tag created: Fri, 05 Sep 2025 17:51:00 GMT

    v4.22.0 - 2025-09-05

    Changed

    • Update Outlook add-in dependency @azure-msalbrowser to v4.22.0.
    • Change Outlook add-in variable names for clarity:
      • Use 'customRulesResultSignatureName' instead of 'customRulesPropertiesResult'. The old variable name can still be used but the new one overrides it.
    • Force the Outlook add-in to use the Graph API when the mailbox is hosted in Exchange Online, as Microsoft will be turning off EWS for Exchange Online soon and as the Outlook add-in supports the Graph API since it has been released over a year ago.
    • Optimize the performance accessing SharePoint Online via Graph API by using different endpoints and exactly defining the requested attributes. This greatly enhances performance when the content used for Set-OutlookSignatures is not hosted in a separate document library, but in a document library with many other unrelated items.

    Added

    • Allow Outlook add-in custom rules code not only to choose from a set of signatures previously deployed using Set-OutlookSignatures, but to set a completely customized signature using the 'customRulesResultSignatureBody' property. This makes the Outlook add-in the most flexible signature add-in on the market as known of today.
      • The 'customRulesResultSignatureBody' proprty is only available for mailboxes hosted in Exchange Online and requires setting two additional permissions in the Entra ID app it uses.
      • See '.\sample code\CustomRulesCode.js' for details about this new feature
    • Add the following additional new features to Outlook add-in custom rules (see '.\sample code\CustomRulesCode.js' in the Outlook add-in folder for details):
      • The 'customRulesProperties.notificationCurrent' property contains the current text used for the Outlook notification shown after the signature has been set, 'customRulesProperties.notificationOriginal' contains the value defined originally for the add-in.
      • Define the text used for the Outlook notification shown after the signature has been set by setting the new 'customRulesResultNotification' variable.
      • Add boolean properties 'customRulesProperties.itemIsReply' and 'customRulesProperties.itemIsForward'.
      • Add boolean properties 'customRulesProperties.itemIsHtml' and 'customRulesProperties.itemIsText'.
      • Add string properties 'graphAccessToken' and 'graphApiEndpoint', which can be used to query the Graph API for use in custom rules.
      • Add sample code showing how to query the Graph API (convert sender SMTP email address to UPN, get basic properties of a user, get transitive group membership of a user).
    • Allow to define a custom ID for the Outlook add-in. This allows using multiple independent configurations and versions of the Outlook add-in in the same environment.
    • Add a workaround in the Outlook add-in for the Microsoft problem with Outlook Web and New Outlook for Windows not replacing signatures but adding them in appointments, resulting in multiple signatures.
    • Add comments to clarify mailbox requirements and permissions in the 'manifest.xml' file of the Outlook add-in.
    • Consider the names of the default signatures defined in Exchange Online when Set-OutlookSignatures runs the Benefactor Circle add-on specific preparations for the Outlook add-in and when the registry does not contain any information about default signatures. This is helpful in scenarios in which Set-OutlookSignatures is used to deploy signatures, but not to define a default signatures.
    • Update '.\sample code\Create-EntraApp.ps1' to include the additional Graph scopes needed for the Outlook add-in feature 'customRulesResultSignatureBody'.

    Removed

    Fixed

    • Make sure the Outlook add-in correctly reports 'customRulesProperties.itemIsNew' and 'customRulesProperties.itemIsReplyForward' on all platforms and for all item save and sync states when using custom rules code.
    • Make sure the Outlook add-in does not re-use 'customRulesPropertiesResult' between runs, no matter if triggered manually via the taskpane or automatically via a launch event.
    • Add an additional Graph scope to '.\sample code\Create-EntraApp.ps1' to avoid problems with granting admin consent for delegated permissions. (#143) (Thanks @wwa-jvteeffelen!)

    File hashes and code signing

    • SHA256 hash of 'Set-OutlookSignatures_v4.22.0.zip': 3505397A9F2200C830BF6142D3C62B28973BD924DAB016D612F2F0C340905B00
    • See 'hashes.txt' in 'Set-OutlookSignatures_v4.22.0.zip' for the hash value of every single file in the release.
      • Compare these hashes with the output of 'Get-ChildItem -Recurse | Get-FileHash -Algorithm SHA256'.
    • Files are code signed with ExplicIT Consulting's Extended Validation (EV) certificate.
      • Check the signature with 'Get-ChildItem -Include '*.ps*1', '*.dll' -Recurse | Get-AuthenticodeSignature'.
    Downloads
  • v4.21.0 943ccbf854

    v4.21.0 Stable

    kerem released this 2025-08-15 23:16:08 +03:00 | 16 commits to main since this release

    📅 Originally published on GitHub: Fri, 15 Aug 2025 20:18:28 GMT
    🏷️ Git tag created: Fri, 15 Aug 2025 20:16:08 GMT

    v4.21.0 - 2025-08-15

    Changed

    • Update dependency MSAL.Net to v4.75.0.
    • Update Outlook add-in dependency @azure-msalbrowser to v4.20.0.

    Added

    • Add the following new features to the Outlook add-in:
      • React to launch events OnMessageRecipientsChanged and OnAppointmentAttendeesChanged.

      • Allow adding custom code to the add-in so you can directly influence which signature it will set.
        For example, you can set a specific signature…

        • …when there are only internal recipients, or another signature when there are external recipients
        • …depending on the from email address
        • …when a specific customer is in the To field
        • …when the current item is a mail or an appointment
        • …when the current item is a new mail, or another signature when it is a reply or a forward
        • …depending on the subject
        • …or any other condition derived from the information available in the customRulesProperties object

        See '.\sample code\CustomRulesCode.js' in the Outlook add-in folder for details.

    Removed

    Fixed

    • Correct a problem reading email addresses from New Outlook for Windows. (#140) (Thanks @psic4t!)

    File hashes and code signing

    • SHA256 hash of 'Set-OutlookSignatures_v4.21.0.zip': 7655CF751626DB5FC0F28CB136AD74C17436659443099A97A3BCFBA051F4C408
    • See 'hashes.txt' in 'Set-OutlookSignatures_v4.21.0.zip' for the hash value of every single file in the release.
      • Compare these hashes with the output of 'Get-ChildItem -Recurse | Get-FileHash -Algorithm SHA256'.
    • Files are code signed with ExplicIT Consulting's Extended Validation (EV) certificate.
      • Check the signature with 'Get-ChildItem -Include '*.ps*1', '*.dll' -Recurse | Get-AuthenticodeSignature'.
    Downloads
  • v4.20.4 cd9d78a1b0

    v4.20.4 Stable

    kerem released this 2025-08-12 13:17:22 +03:00 | 17 commits to main since this release

    📅 Originally published on GitHub: Tue, 12 Aug 2025 10:18:49 GMT
    🏷️ Git tag created: Tue, 12 Aug 2025 10:17:22 GMT

    v4.20.4 - 2025-08-12

    Changed

    • Update dependency MSAL.Net to v4.74.1.
    • Update dependency HtmlAgilityPack to v1.12.2.
    • Update dependency UTF.Unknown to v2.6.0.
    • Update Outlook add-in dependency @azure-msalbrowser to v4.19.0.

    Added

    • Add workaround for Microsoft internal problems with roaming signatures API, which would result in the following error when uploading roaming signatures to mailboxes which are not the one of the logged-on user (especially in SimulateAndDeploy mode). The log would contain the error "The response status code for https://localhost:444/owa/service.svc?action=SanitizeHtml action \u0027SanitizeHtml\u0027 is InternalServerError. ReasonPhrase:Internal Server Error".
    • Add hints about probable root causes of empty signatures lists in the log output of the Outlook add-in.

    Removed

    Fixed

    File hashes and code signing

    • SHA256 hash of 'Set-OutlookSignatures_v4.20.4.zip': D996D8FB1128E318E210EAE1342DEC9110AD182AE724989FDC981A7F772A011C
    • See 'hashes.txt' in 'Set-OutlookSignatures_v4.20.4.zip' for the hash value of every single file in the release.
      • Compare these hashes with the output of 'Get-ChildItem -Recurse | Get-FileHash -Algorithm SHA256'.
    • Files are code signed with ExplicIT Consulting's Extended Validation (EV) certificate.
      • Check the signature with 'Get-ChildItem -Include '*.ps*1', '*.dll' -Recurse | Get-AuthenticodeSignature'.
    Downloads
  • v4.20.3 4def5121a1

    v4.20.3 Stable

    kerem released this 2025-07-17 18:07:31 +03:00 | 19 commits to main since this release

    📅 Originally published on GitHub: Thu, 17 Jul 2025 15:09:42 GMT
    🏷️ Git tag created: Thu, 17 Jul 2025 15:07:31 GMT

    v4.20.3 - 2025-07-17

    Changed

    • Update dependency MSAL.Net to v4.74.0.
    • Update Outlook add-in dependency @azure-msalbrowser to v4.15.0.

    Added

    Removed

    Fixed

    • Add a workaround for PowerShell 5.1 not correctly converting arrays to JSON when passing them via the InputObject parameter. (#136)
    • Fix Set-OutlookSignatures quitting with exit code 14 when using it in SimulateAndDeploy mode for Exchange Online.
    • Add a workaround for PowerShell not reliably resolving SMB paths with relative parts to absolute paths in the MSAL.PS module.

    File hashes and code signing

    • SHA256 hash of 'Set-OutlookSignatures_v4.20.3.zip': AF6EC466D7321796D9726800D1F293B6F26D63FF894391FA4198008B477FECC8
    • See 'hashes.txt' in 'Set-OutlookSignatures_v4.20.3.zip' for the hash value of every single file in the release.
      • Compare these hashes with the output of 'Get-ChildItem -Recurse | Get-FileHash -Algorithm SHA256'.
    • Files are code signed with ExplicIT Consulting's Extended Validation (EV) certificate.
      • Check the signature with 'Get-ChildItem -Include '*.ps*1', '*.dll' -Recurse | Get-AuthenticodeSignature'.
    Downloads
  • v4.20.2 ec13124af5

    v4.20.2 Stable

    kerem released this 2025-07-08 01:19:07 +03:00 | 20 commits to main since this release

    📅 Originally published on GitHub: Mon, 07 Jul 2025 22:20:39 GMT
    🏷️ Git tag created: Mon, 07 Jul 2025 22:19:07 GMT

    v4.20.2 - 2025-07-08

    Add features with the Benefactor Circle add-on and get fee-based support from ExplicIT Consulting
    See 'Benefactor Circle add-on' for details about these features and how you can benefit from them with a Benefactor Circle license.

    Changed

    • Update dependency PreMailer.Net to v2.7.2.
    • Update Outlook add-in dependency @azure-msalbrowser to v4.14.0.

    Added

    Removed

    Fixed

    • Update handling of the '@' character in signatures names. Microsoft no longer allows '@' in roaming signature names as it is reserved for internal use, and Microsoft Outlook will follow soon.
      • Add '@' to the list of invalid characters for signatures names as documented in sample INI files. The new complete list of invalid characters is '\/:"*?><,|@'.
      • Convert all invalid characters to '_', but '@' to '_at_'.
      • Only keep the '@' character where it is required for Microsoft internal use in roaming signature names.

    File hashes and code signing

    • SHA256 hash of 'Set-OutlookSignatures_v4.20.2.zip': 9F92CC325560E978E762AAA947DB8F72CB4EC2A00B5FC4370C89F5191F15D75C
    • See 'hashes.txt' in 'Set-OutlookSignatures_v4.20.2.zip' for the hash value of every single file in the release.
      • Compare these hashes with the output of 'Get-ChildItem -Recurse | Get-FileHash -Algorithm SHA256'.
    • Files are code signed with ExplicIT Consulting's Extended Validation (EV) certificate.
      • Check the signature with 'Get-ChildItem -Include '*.ps*1', '*.dll' -Recurse | Get-AuthenticodeSignature'.
    Downloads
  • v4.20.1 36b286801d

    v4.20.1 Stable

    kerem released this 2025-06-26 15:47:27 +03:00 | 22 commits to main since this release

    📅 Originally published on GitHub: Thu, 26 Jun 2025 12:48:53 GMT
    🏷️ Git tag created: Thu, 26 Jun 2025 12:47:27 GMT

    v4.20.1 - 2025-06-26

    Add features with the Benefactor Circle add-on and get fee-based support from ExplicIT Consulting
    See 'Benefactor Circle add-on' for details about these features and how you can benefit from them with a Benefactor Circle license.

    Changed

    • Update dependency MSAL.Net to v4.73.1.
    • Update Outlook add-in dependency @azure-msalbrowser to v4.13.2.

    Added

    Removed

    Fixed

    • Fix a logical error in the code for the 'DeleteScriptCreatedSignaturesWithoutTemplate' parameter which made the cleanup stop before any work was done. This error only occurred when the parameter was enabled, which it is by default.
    • Fix a logical error in the code for the 'DeleteUserCreatedSignatures' parameter which deleted all signatures instead of only user-created ones. This error only occurred when the parameters was enabled, which it is not by default.

    File hashes and code signing

    • SHA256 hash of 'Set-OutlookSignatures_v4.20.1.zip': 23A702080940C8FD38FB568CFA1427FE5EB55C681A16BC954D7DB34774BC9C10
    • See 'hashes.txt' in 'Set-OutlookSignatures_v4.20.1.zip' for the hash value of every single file in the release.
      • Compare these hashes with the output of 'Get-ChildItem -Recurse | Get-FileHash -Algorithm SHA256'.
    • Files are code signed with ExplicIT Consulting's Extended Validation (EV) certificate.
      • Check the signature with 'Get-ChildItem -Include '*.ps*1', '*.dll' -Recurse | Get-AuthenticodeSignature'.
    Downloads
  • v4.20.0 feaeafdb7b

    v4.20.0 Stable

    kerem released this 2025-06-18 17:37:25 +03:00 | 23 commits to main since this release

    📅 Originally published on GitHub: Wed, 18 Jun 2025 14:39:08 GMT
    🏷️ Git tag created: Wed, 18 Jun 2025 14:37:25 GMT

    v4.20.0 - 2025-06-18

    Add features with the Benefactor Circle add-on and get fee-based support from ExplicIT Consulting
    See 'Benefactor Circle add-on' for details about these features and how you can benefit from them with a Benefactor Circle license.

    Changed

    • Update dependency MSAL.Net to v4.73.0.
    • Update dependency PreMailer.Net to v2.7.0.
    • Update Outlook add-in dependency @azure-msalbrowser to v4.13.1.
    • Update dependency QRCoder to v1.6.0.
    • Switch from dependencies AngleSharp and HTMLFile to HtmlAgilityPack v1.12.1.
    • Remove 'Set-Location -LiteralPath $PSScriptRoot' from scripts that do not require to know from which path they are run from.
    • Reduce Entra ID throttling probability in '.\sample code\SimulateAndDeploy.ps1' by applying the following changes:
      • Do not refresh the Graph token every time a new job is started, but only when:
        • Token is expired.
        • The remaining token lifetime is less than or equal the job timeout.
        • At least half of the token lifetime has already passed.
      • In case of an error, wait 70 seconds between the three retries.
    • Show all replacement variables in verbose output, not just the ones that have values. This helps detect null or empty values.
    • Rewrite and radically simplify the Quick Start Guide.
    • Reduce repository and release size by deleting unused image files and by outsourcing the detailed documentation to set-outlooksignatures.com.

    Added

    • Support for cross-tenant access and Multitenant Organizations. This allows to deploy signatures for mailboxes that are not hosted in the users home tenant, with all the properties, replacement variables and Benefactor Circle features being fully available. See the description of the parameter 'GraphClientID' in the parameter documentation for details.
    • Detect the encoding of HTML template files automatically, using the same logic as browsers do. See the FAQ 'Should I use .docx or .htm as file format for templates?' for details.
    • Convert HTML files to UTF8 when uploading or downloading roaming signatures, with the same logic browsers use. This is another fix for the problems of Outlook's own signature sync mechanism, and also solves issues with signatures that have been created manually in Non-UTF-8 encoding.
    • Check if the automatic variable '$PSScriptRoot' is available when scripts require to know from which path they are run from. This avoids follow-up problems when scripts are not run as file, but as selection of text in code editors.
    • Delete local copies of roaming signatures when cleaning up if they have previously been downloaded from other mailboxes (not the mailbox of the current user) and if these mailboxes are no longer available in Outlook.
    • Allow defining the text of the notification banner that is shown after a signature has been added to an email or an appointment by the Outlook add-in. The parameter is called 'NOTIFICATION_TEXT' and can be passed to 'run_before_deployment.ps1'.
    • Add 'Does it support cross-tenant access and Multitenant Organizations?' to the FAQ section.

    Removed

    Fixed

    • Switch from 'Set-Location $PSScriptRoot' to 'Set-Location -LiteralPath $PSScriptRoot' in scripts that do require to know from which path they are run from. This allows the use of paths containing characters with a specific meaning in PowerShell (square brackets, for example).
    • Fix a typo in source code of FAQ 'How can I start the software only when there is a connection to the Active Directory on-prem?' in the FAQ section, and add checks for the forest root domain and it's child domains.
    • Make sure that DOCX template files are not opened in "Read" view in Microsoft Word, as search and replace is not available in this view.
    • Make sure that temporary copies of template files are not write protected and do not have the "mark of the web", as both may lead to problems with search and replace or file type conversion in Microsoft Word.
    • Add support for Outlook profile names with special characters, which Classic Outlook for Windows saves in the registry using a completely unknown and not publicly documented encoding. Set-OutlookSignatures can not display the special characters correctly due to the unknown encoding, but can now read the contents without errors.
    • Make sure that leading whitespace in signature lines is correctly represented in the email draft containing all signatures (parameter 'SignatureCollectionInDrafts' and signature preview in the taskpane of the Outlook add-in).
    • Correctly handle HTML template files referencing the same image file multiple times but with different image replacement variables such as '$CurrentUserPhoto$': Do not overwrite image files which are referenced multiple times, create a new GUID named file instead.

    File hashes and code signing

    • SHA256 hash of 'Set-OutlookSignatures_v4.20.0.zip': CEA64ED45AD001CB845FFCC75AB439DD63A4ED07594044CC27E3920DF18F436E
    • See 'hashes.txt' in 'Set-OutlookSignatures_v4.20.0.zip' for the hash value of every single file in the release.
      • Compare these hashes with the output of 'Get-ChildItem -Recurse | Get-FileHash -Algorithm SHA256'.
    • Files are code signed with ExplicIT Consulting's Extended Validation (EV) certificate.
      • Check the signature with 'Get-ChildItem -Include '*.ps*1', '*.dll' -Recurse | Get-AuthenticodeSignature'.
    Downloads