Exécuter des actions avant la build ou l’Harvest de Wix Toolset 4

Avant Wix Toolset 4, exécuter une ou plusieurs actions avant la build n’était pas très compliqué. Il suffisait d’ajouter une cible nommée BeforeBuild et le tour était joué.

Après l’adoption du format de projet de type SDK, les choses se compliquent légèrement. L’usage d’une cible nommée BeforeBuild remplace totalement la cible importée par Wix Toolset. Ce qui retire tous les automatismes ajoutés par Wix 4.

Il faut donc ruser un peu. Avec MSBuild, il y a une solution très simple : ajouter une cible qui va s’exécuter avant BeforeBuild. Une sorte de BeforeBeforeBuild ;)

Pour cela, il suffit d’utiliser l’attribut BeforeTargets et de lui passer en valeur BeforeBuild. Si en plus on souhaite exécuter la même tâche avant le ReBuild, on peut ajouter BeforeReBuild.

Ce qui donne :


<Project>
  <!-- ... -->
  <Target Name="PublishBeforeBuild" BeforeTargets="BeforeBuild;BeforeReBuild">
    <!-- Ajouter les tâches à réaliser avant la build ici -->
  </Target>
</Project>

Le nom de la cible n’a pas d’importance.

Jérémy Jeanson

Retrouver facilement le chemin vers signtool.exe grâce à PowerShell

Quand il s’agit de signer des fichiers avec le SDK Windows, il est une étape qui est des plus laborieuse : trouver où se trouve signtool.exe. Si en plus vous devez utiliser plusieurs machines, ou que d’autres collègues le même besoin, il faut adapter le chemin pour chaque PC.

Pour éviter de me prendre la tête, j’ai codé une petite ligne de PowerShell qui fait très bien le travail :


$SignTool = get-childItem "C:\Program Files (x86)\Windows Kits\10\bin" -Recurse -Include "signtool.exe" `
  | Where-Object { $_.Directory.BaseName -eq "x64" } `
  | Sort-Object -Property VersionInfo -Descending `
  | Select-Object -First 1

Je l’utilise depuis plusieurs années. Elle a donc été employée avec de nombreux SDK de Windows sans problèmes.

Dans une situation normale, cette ligne peut être utilisée comme ceci.


$SignTool = get-childItem "C:\Program Files (x86)\Windows Kits\10\bin" -Recurse -Include "signtool.exe" `
  | Where-Object { $_.Directory.BaseName -eq "x64" } `
  | Sort-Object -Property VersionInfo -Descending `
  | Select-Object -First 1

if ($null -eq $SignTool) {
    Write-Error "Le SDK Windows comprenant signtool.exe n'est pas installé."
    Break
}

& $SignTool $Arguments

Jérémy Jeanson

Upgrader un serveur transactionnel openSUSE vers Leap 15.5

Comme l’an dernier, la mise à jour des serveurs transactionnels openSUSE nécessite de passer par une session via shell transactional-update.

Je vous propose donc aujourd’hui une version actualisée de mon article dédié à l’upgrade d’openSUSE Leap.

Pour commencer, il faut ouvrir un Shell transactional-update afin de créer un nouveau snapshot de l'OS et le patcher.

Ceci passe par la commande :


transactional-update shell

On peut ensuite rafraichir la liste des repositories:


zypper --releasever=15.5 refresh

Lancement de la mise à jour :


zypper --releasever=15.5 dup --download-in-advance

À la fin de la mise à jour, il faut fermer le Shell :


exit

Pour finir, il faut rebooter le serveur pour que le snapshoot réalisé lors de la mise à jour soit utilisé :


reboot

Quand le serveur a redémarré, on peut utiliser la commande hostnamectl. Celle-ci affichera un message similaire à ceci :

Static hostname: xxx

Icon name: computer-vm

Chassis: vm

Machine ID: xxx

Boot ID: xxx

Virtualization: microsoft

Operating System: openSUSE Leap 15.5

CPE OS Name: cpe:/o:opensuse:leap:15.5

Kernel: Linux 5.14.21-150500.53-default

Architecture: x86-64

Hardware Vendor: Microsoft Corporation

Hardware Model: Virtual Machine

Pour finir, il ne faut pas oublier de faire un peu de ménage dans la liste des repositories. Si vous tapez la commande zypper repos, vous vous rendrez compe que plusieurs repositories ont été désactivés (zypper repos -u, affichera un peu plus de détails, c’est une histoire de goûts).

On peut par exemple supprimer le repo lié à Leap 15.4 :


zypper removerepo openSUSE-Leap-15.4-1
Jérémy Jeanson

Il vous reste 7 petits jours pour obtenir des certifications Microsoft gratuites, foncez !

Comme à l’habitude, Microsoft a profité de la Build pour lancer un Cloud Skill Challenge. Le principe est simple :

Vous suivez des parcours de formations gratuites sur Microsoft Learn.

  • À la fin du challenge, vous obtenez le droit de passer gratuitement une certification Microsoft.
  • Cette année, la date butoir pour terminer ces défis a été fixée au 20 juin 2023. Il vous reste donc tout juste une semaine pour en profiter.

La page d’enregistrement, décrivant les défis, ainsi que les règles du Cloud Skill Challenge, est disponible ici : The Microsoft Learn Cloud Skills Challenge.

Bonne chance ;)

Jérémy Jeanson

Podcast de juin : Retours sur la Microsoft Build 2023

Dans le cadre des podcasts DevDevDev.net, j’ai eu l’occasion de participer à un épisode dédié à la Build 2023. Dans celui-ci, nous avons présenté quelques sujets qui nous ont marqués. Bien évidemment, nous en avons profité pour partager nos réflexions, avis, et remarques.

Comme toujours, cela se passe sur DevDevDev.net.

Couverture du PodCast par Richard Clark incluant la liste des participants

Autour de cette table ronde

Jérémy Jeanson