0 votes

ClickOnce : Comment transmettre une valeur de chaîne de requête à mon application *par le biais du programme d'installation* ?

Ma société construit actuellement des MSI distincts pour tous ses clients, même si l'application est à 100 % la même dans tous les cas (à une seule exception près, un ID dans l'app.config).

Je voudrais leur montrer que nous pouvons publier en un seul endroit avec ClickOnce, et simplement ajouter un paramètre de chaîne de requête pour l'installateur de chaque client.

Exemple : http://mysite.com/setup.exe?ID=1234-56-7890

Le problème que je rencontre est que l'élément ci-dessus ("ID=1234...") n'est pas transmis à "myapplication.application". Au lieu de cela, l'application est installée avec succès et s'exécute la première fois avec un contexte d'activation, mais l'"ActivationUri" ne contient aucune valeur de chaîne de requête.

Existe-t-il un moyen de passer des valeurs de chaîne de requête À PARTIR DE L'URL DE L'INSTALLATEUR à l'URL de lancement de l'application ? Si oui, comment ?

3voto

Timothy Khouri Points 14640

Après de nombreuses recherches (et discussions), la réponse est simplement que la version actuelle de ClickOnce ne fonctionne pas de cette façon. Le programme d'installation ne transmet pas l'URL à l'application lors de sa première exécution.

Voici ce que j'ai fait comme solution de rechange (et cela fonctionne très bien).

  • Modifier mon paquetage d'installation pour qu'il contienne tous les fichiers requis non compressés et détachés (au lieu d'utiliser un fichier CAB ou de les intégrer dans le programme d'installation).

  • Créez une application ASP.NET (en utilisant le routage pour la gestion des URL) qui attend une requête vers "mysite.com/Installer/00123/Setup.exe".

    • Note : la route doit écouter "/Installer/{ID}/*" où {ID} est composé de 5 chiffres.
    • En fait, il n'y a pas de répertoire appelé "00123", mais j'utilise plutôt ASP.NET Routing pour récupérer ces requêtes et les faire correspondre à mon répertoire réel qui contient le fichier d'installation.
  • Je détourne ensuite la requête (j'analyse le setup.exe pour trouver l'URL intégrée qui indique au programme d'installation où trouver le reste des fichiers...). Je remplace ensuite "/00000/" par l'URL de la requête sur laquelle l'utilisateur s'est rendu - dans ce cas "00123".

    • À mesure que chaque fichier est demandé, je sais quelle " version " du fichier envoyer, car l'installateur ClickOnce cherchera " mysite.com/Installer/00123/SomeFile.dll " (ou autre).

Au lieu d'utiliser un identifiant à 5 chiffres, vous pourriez utiliser un GUID... c'est vous qui voyez.

Cette solution fonctionne très bien pour notre organisation... nous avons actuellement 37 clients qui exigent des personnalisations uniques de leur paquet d'installation, mais nous n'avons qu'à construire et publier réellement ONE et utilisez simplement la méthode de détournement ci-dessus.

À ce stade, nous disposons d'espaces réservés que nous remplaçons afin de pouvoir personnaliser facilement les installateurs pour autant de clients que nous le souhaitons.

Exemple : dans le fichier app.config, nous avons displayName="{OrgName}" qui est automatiquement remplacé par l'une des valeurs de la base de données.

0voto

Brother Erryn Points 803

Pour moi, "http://mysite.com/ monapplication.application ?id=1234-56-7890" semble faire l'affaire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X