Question «Toucher» la stratégie de groupe de déploiement de logiciel par programme ou via un script


J'ai une application interne qui utilise Windows Installer. Chaque mise à jour de cette application est une "mise à niveau majeure" (code de produit différent, même code de mise à niveau) et elle appelle RemoveExistingProducts. (En effet, cela signifie que chaque fois qu'une nouvelle version est créée, vous pouvez l'installer en cliquant simplement sur le fichier MSI, car elle désinstallera l'ancienne version puis installera la nouvelle version.)

Il est actuellement déployé via une configuration d'ordinateur dans une stratégie de groupe. Tout objet de stratégie de groupe lié installera le logiciel au prochain démarrage, ce qui fonctionne très bien.

J'ai également un serveur d'intégration continue (TeamCity) qui construit et exécute des tests pour ce logiciel à chaque fois que nous commettons quelque chose dans le contrôle de source et que nous le "cliquons" pour le déploiement. Je peux même copier le fichier MSI fraîchement créé sur le partage réseau en préparation du déploiement.

Malheureusement, Je ne vois pas le moyen de dire au GPO de redéployer par programme le fichier MSI récemment mis à jour dans le cadre de mon processus d'intégration.

Si je ne fais que survoler le fichier MSI existant et que je ne touche pas à l'objet de stratégie de groupe, les modifications ne sont pas remarquées par les machines sur lesquelles l'ancienne version de MSI est installée et les nouvelles machines paniquent lorsqu'elles ne trouvent pas le fichier MSI contenant le code produit. le script généré par l'éditeur de gestion des stratégies de groupe. Bien, a du sens.

Le même comportement semble se produire si je remplace simplement le fichier MSI existant et clique sur "Redéployer l'application" dans GPME. Encore une fois, nous semblons mécontents d’essayer de redéployer avec un fichier MSI dont le code de package ne correspond pas à celui du script généré par le GPME. Bien, a du sens.

Quoi Est-ce que travail consiste à cliquer avec le bouton droit de la souris sur le package d'installation dans GPME, en sélectionnant "Supprimer immédiatement", puis en ajoutant le package d'installation immédiatement - qui crée un nouveau script * .aas. L'ancien package est supprimé et le nouveau package est installé au prochain démarrage. Est-il possible de le faire via un script batch que je peux ajouter au processus de génération de mon serveur d'intégration?

Merci!

Mise à jour de suivi

Après avoir examiné les remarques d'Evan, J'ai fini par écrire un petit script batch qui s'exécute au démarrage. J'ai aussi écrit un petit utilitaire appelé msicheck qui détermine si un package MSI donné est installé ou non. Cela répondait assez bien à mes besoins et est bien mieux que de parcourir les pages d'une spécification LDAP! =)


5
2017-11-04 21:48


origine




Réponses:


J'ai eu le désir de faire quelque chose de similaire et j'ai fait des recherches sur le sujet dans le passé.

J'ai trouvé aucune API exposée permettant de faire ce que fait l'éditeur de stratégie de groupe pour créer ces fichiers de script de publicité d'application (.aas) et les enregistrements correspondants dans AD. L'API de stratégie de groupe PowerShell vous permet de configurer les paramètres basés sur le registre, mais pas ceux d'autres extensions de stratégie de groupe.

Il y a maintenant une référence à la Extension du protocole d'installation du logiciel de stratégie de groupe(Merci règlement européen anti-trust!) et je suppose que vous pourriez essayer de faire rouler le moteur pour effectuer des tâches vous-même. Les transactions LDAP nécessaires pour l’ajout du package et le format des fichiers .aas sont indiqués. Cela semble un peu intimidant (même si amusant) ...

Franchement, votre attention aux détails concernant les tests de déploiement doit être félicitée. Je souhaite que vous écriviez un logiciel que mes clients utilisent. Le fait que vous utilisiez uniquement Windows Installer vous place en tête du peloton. Le fait que vous connaissiez le déploiement du logiciel de stratégie de groupe et que vous le testiez me rend vertigineux! Je souhaite qu'une fraction mesurable de développeurs se soucie autant qu'il est clair que vous le faites.


5
2017-11-04 22:52



Ugh, j'avais peur de ça. Je vais devoir voir si je peux bricoler une solution quand j'en ai l'occasion et mettre à jour ce post si je peux trouver quelque chose. À l'heure actuelle, je pense que ce sera un script batch ou PS qui s'exécutera au démarrage et invoquera les commandes msiexec appropriées, à savoir le déploiement du logiciel d'un homme pauvre. Je perdrais des correctifs, des transformations et autres bêtises, mais je ne les utilise pas de toute façon; pour une application interne, il est beaucoup plus facile de la supprimer et de la réinstaller sans souci. Merci pour la perspicacité! - Nicholas Piasecki
Ouais, on dirait qu'un script de batch de démarrage était la solution. J'ai mis à jour le message avec plus d'informations sur ma solution de contournement. Merci pour l'aide. - Nicholas Piasecki
C'est triste à dire, mais cette méthode de script de démarrage est la manière officielle, approuvée par Microsoft, d'installer Office 2007 à partir d'une stratégie de groupe. Pour des raisons que j'aimerais bien que quelqu'un me dise, le MSI pour O2K7 a été conçu pour être incompatible avec la stratégie d'installation de logiciel. Encore une action illogique de Microsoft. - Evan Anderson