Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Déploiement et ressources

10 réponses
Avatar
Gloops
Bonjour tout le monde,

J'ai d=E9velopp=E9 une application Windows avec une liste d=E9roulante=20
pr=E9sentant les cultures disponibles pour l'affichage pour le formulaire=
=20
en cours. Celles-ci se trouvent dans les fichiers Form1.??.resx dans le=20
m=EAme r=E9pertoire que le programme.

Dans le r=E9pertoire de d=E9veloppement, =E7a marche impec.

Je commence =E0 m'int=E9resser au d=E9ploiement, et dans la bo=EEte de di=
alogue=20
des propri=E9t=E9s du projet, onglet Publish, j'ai utilis=E9 l'assistant =
de=20
publication.

Je me suis trouv=E9 confront=E9 =E0 un message d'erreur d'indice incorrec=
t,=20
vachement =E9vident dit comme =E7a il faut dire (au passage si quelqu'un =

peut me dire comment b=E9n=E9ficier des infos de d=E9bogage =E0 ce niveau=
,=20
plut=F4t que de jouer aux devinettes ...). Finalement il s'est av=E9r=E9 =
que=20
les fichiers de ressources n'ont pas suivi dans le r=E9pertoire du=20
programme, et que la culture par d=E9faut n'=E9tait pas assur=E9e, et je =

cherchais =E0 s=E9lectionner la deuxi=E8me valeur dans la liste alors qu'=
il=20
n'y en avait qu'une (bien qu'il aurait d=FB y en avoir deux).

En affichant le chemin je me suis rendu compte que si on peut choisir le =

r=E9pertoire temporaire o=F9 va se retrouver le programme d'installation,=
en=20
revanche, le r=E9pertoire qu'il serait int=E9ressant de conna=EEtre -en t=
out=20
cas dans ce contexte-, celui d'o=F9 sera ex=E9cut=E9 le programme, est ca=
ch=E9=20
quelque part dans des r=E9pertoires aux noms barbares donc impossibles =E0=
=20
se rappeler. Il a fallu faire du m=E9nage avant de trouver ... le coupabl=
e.

Une fois les fichiers de ressources copi=E9s dedans, effectivement la=20
liste s'affiche correctement. Bien entendu, la copie ne peut se faire=20
qu'apr=E8s avoir ouvert le r=E9pertoire, =E0 la main, dans l'explorateur,=
et=20
en connaissant son chemin donc en utilisant une version du programme qui =

l'affiche. L'outil de publication veut bien copier plein de choses, mais =

surtout pas les fichiers de ressources des formulaires.

Si quelqu'un voit une fa=E7on rationnelle de se sortir de l=E0 je ne dis =
pas=20
non ...

10 réponses

Avatar
Jérémy Jeanson
Bonjour Gloops,

Si j'ai bien compris, tu utilise la publication via Clickone. Si c'est
bien le cas, dans ton panneau publish tu as un bouton qui permet
d'indiquer les assembly à déployer : c'est une liste qui te permet de
choisir quel éléments doit être copié lors du déploiement (dll ou autres
fichiers).

Ceci devrait être suffisant pour te permettre de publier tes ressources
avec ton application.

Mais petite question, tu semble avoir utilisé publish, mais veux tu
faire une publication via Clickonce ou un simple programme
d'installation sur CD par exemple?
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
Gloops
Jérémy Jeanson a écrit, le 08/12/2008 08:41 :
Bonjour Gloops,

Si j'ai bien compris, tu utilise la publication via Clickone. Si c'est
bien le cas, dans ton panneau publish tu as un bouton qui permet
d'indiquer les assembly à déployer : c'est une liste qui te permet de
choisir quel éléments doit être copié lors du déploiement (dl l ou autres
fichiers).

Ceci devrait être suffisant pour te permettre de publier tes ressourc es
avec ton application.

Mais petite question, tu semble avoir utilisé publish, mais veux tu
faire une publication via Clickonce ou un simple programme
d'installation sur CD par exemple?


Avatar
Gloops
Bonjour Jérémy,

Eh bien non, il y a une case permettant de sélectionner "tous les
fichiers", mais elle fait apparaître les ressources de l'application,
pas celles du formulaire.

Je ne savais pas que ça s'appelait ClickOnce, mais effectivement ça
semble bien correspondre à la description. Il y a peut-être des moyen s
plus adaptés après tout ?

C'est pour un déploiement via un site web. Sous VB6 je trouvais déjà que
ça manquait de simplicité car il y avait trois fichiers à faire
décompresser par l'utilisateur, mais là si il faut que je lui expliqu e
qu'il doit aller chercher le répertoire d'exécution dans "Local
Settings", pas la peine ...

Ou alors le programme doit venir chercher lui-même les ressources dans
le répertoire "de déploiement", mais je n'ai pas encore vu comment le
connaître depuis le programme. ça devrait être faisable, puisqu'il est
fourni dans les propriétés du programme.

Autrement c'est vrai que l'exécution directement par l'utilisateur ça
ses avantages en matière de simplicité -du moins si il n'y a pas à
compléter à la main.
_____________________________________________
Jérémy Jeanson a écrit, le 08/12/2008 08:41 :
Bonjour Gloops,

Si j'ai bien compris, tu utilise la publication via Clickone. Si c'est
bien le cas, dans ton panneau publish tu as un bouton qui permet
d'indiquer les assembly à déployer : c'est une liste qui te permet de
choisir quel éléments doit être copié lors du déploiement (dl l ou autres
fichiers).

Ceci devrait être suffisant pour te permettre de publier tes ressourc es
avec ton application.

Mais petite question, tu semble avoir utilisé publish, mais veux tu
faire une publication via Clickonce ou un simple programme
d'installation sur CD par exemple?


Avatar
Jérémy Jeanson
Voici un Webcast qui devrait t'être très utile pour le déploiement
d'applications ->

MSDN Architecture Webcast: Deploying Internationalized Applications
Using ClickOnce (Level 200)

http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOMMedia&Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221032299366%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C-4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22%2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsParams%5e%7e%2fCMTYDataSvcParams%5e

Je pense que tu vas trouver ton bonheur sur cette page. Aujourd'hui
ClikOnce a été pas mal éprouvé et ça marche très bien. Je l'ai utilisé
sur plusieurs projets sans soucis et les utilisateurs en sont très
satisfaits. Les administrateurs aussi, car utiliser des applications et
les mettre à jour sans droits particuliers c'est un grand confort pour eux.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
Gloops
Effectivement, c'était bien le sujet, merci.

Et ... Il y a de quoi faire.

Parmi les pistes proposées sur les sites, convertir les fichiers .resx
en .ressource pour les incorporer. Si je fais ça il faudra trouver un
autre moyen de déterminer la liste des cultures disponibles, puisque je
me suis basé sur la présence des fichiers de ressources (resx) dans l e
répertoire.

Mais un des outils montrés dans la vidéo permet de donner des chemins
d'accès dans un fichier XML pour préciser quels fichiers incorporer, je
vais tester ça pour voir si je ne me fais pas jeter, ça pourrait êt re
une solution assez simple.
Parce que finalement, la possibilité de proposer une nouvelle langue en
téléchargeant juste un fichier de ressource me paraît une bonne cho se
-enfin là il reste à voir comment gérer ça sur le site, du coup ç a fera
l'occasion de gérer autre chose que le choix de la culture pour la page .

Enfin je vais déjà aller au bout de la question de déployer le prog ramme
avec les deux cultures qui sont prêtes. Déjà avoir quelque chose
d'existant avant de le faire évoluer.
_____________________________________________
Jérémy Jeanson a écrit, le 08/12/2008 10:42 :
Voici un Webcast qui devrait t'être très utile pour le déploiemen t
d'applications ->

MSDN Architecture Webcast: Deploying Internationalized Applications
Using ClickOnce (Level 200)

http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOM Media&Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221 032299366%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C -4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22 %2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsPa rams%5e%7e%2fCMTYDataSvcParams%5e


Je pense que tu vas trouver ton bonheur sur cette page. Aujourd'hui
ClikOnce a été pas mal éprouvé et ça marche très bien. Je l 'ai utilisé
sur plusieurs projets sans soucis et les utilisateurs en sont très
satisfaits. Les administrateurs aussi, car utiliser des applications et
les mettre à jour sans droits particuliers c'est un grand confort pou r eux.


Avatar
Gloops
Je dois avouer que le Bootstrap Manifest Generator m'intrigue, lorsqu'il
me dit :

Microsoft.Bootstrapper.PackageInfo+Exceptions+PackageNotFoundException:
A Package was not found in C:Program FilesMicrosoft Visual Studio
8SDKv2.0BootstrapperPackagesdotnetfxfrpackage.xml

En somme, il me reproche de l'avoir installé sans le pack français, m ais
le bootstrap manifest generator fait juste l'objet de deux liens de
téléchargement, un pour Visual Studio 2005, et un pour Visual Studio
2008, le plus direct à trouver étant ce dernier -il était d'ailleur s
fort judicieux de mettre 2008 dans le nom. Je n'ai rien vu pour lui
ajouter des packs linguistiques.

J'aurais dû mieux regarder ?
Avatar
Gloops
Bonjour,

ça promet quand même de durer quelque peu, cette histoire.

J'ai tenté en modifiant à la main le fichier projet pour utiliser
msbuild, mais ça ne donne rien, simplement depuis j'ai un message
d'erreur à chaque compilation "Unable to apply publish properties for
item "enlanceappel2.resources"

Ce qui d'ailleurs est curieux car le PublishFile que j'ai ajouté
concerne un fichier resx.

On a des explications assez claires sur comment déployer des fichiers
.resource, mais rien sur comment déployer des .resx, et j'ai même
remarqué quelque chose : si je copie tout le répertoire bindebug dan s
un nouveau répertoire, le programme s'y exécute, il affiche bien les
cultures proposées puisqu'il trouve les fichiers Form1.resx et
Form1.fr.resx, mais lorsqu'on en sélectionne une il affiche
systématiquement le formulaire avec la culture par défaut -alors que
dans bindebug, l'affichage s'effectue bien dans la culture sélectionné e
; j'avoue qu'à ce stade je ne m'explique pas la différence.

Il existe un outil pour convertir les resx en .resource, mais si c'est
ça qu'il faut faire, il valait autant le dire d'entrée qu'on
n'échaffaude pas une usine à gaz sur des fichiers .resx pour devoir t out
abandonner à la fin.

Sérieusement, les resx, c'est réservé aux sites web, ou il reste un truc
à trouver ?

_____________________________________________
Jérémy Jeanson a écrit, le 08/12/2008 10:42 :
Voici un Webcast qui devrait t'être très utile pour le déploiemen t
d'applications ->

MSDN Architecture Webcast: Deploying Internationalized Applications
Using ClickOnce (Level 200)

http://www.microsoft.com/events/EventDetails.aspx?CMTYSvcSource=MSCOM Media&Params=%7eCMTYDataSvcParams%5e%7earg+Name%3d%22ID%22+Value%3d%221 032299366%22%2f%5e%7earg+Name%3d%22ProviderID%22+Value%3d%22A6B43178-497C -4225-BA42-DF595171F04C%22%2f%5e%7earg+Name%3d%22lang%22+Value%3d%22en%22 %2f%5e%7earg+Name%3d%22cr%22+Value%3d%22US%22%2f%5e%7esParams%5e%7e%2fsPa rams%5e%7e%2fCMTYDataSvcParams%5e


Je pense que tu vas trouver ton bonheur sur cette page. Aujourd'hui
ClikOnce a été pas mal éprouvé et ça marche très bien. Je l 'ai utilisé
sur plusieurs projets sans soucis et les utilisateurs en sont très
satisfaits. Les administrateurs aussi, car utiliser des applications et
les mettre à jour sans droits particuliers c'est un grand confort pou r eux.


Avatar
Jérémy Jeanson
Pas la moindre idée, je n'ai pas encore travaillé sur la localisation
d'application et ClickOnce ne même temps, j'avais juste garder des infos
de côté au cas où.

As tu tenté de regarder le fichier .csproj de ton projet dans un éditeur
de texte pour voir ci la liste des fichiers publiés ne s'y trouvait pas?
ou .sln (mais ce en serrait pas logique).

Pour ce qui est de copier les fichier à la main, le fonctionnement que
tu décis est normal... enfin en ce qui conserne le fait de trouver les
ressources, par contre le fait que l'affichage ne cadre pas avec la
ressources choisie, il faut peut être que tu regarde de plus près ton code.

Bonne chasse à l'info, donnes des nouvelles si tu trouve quelquechose de
valable.
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Avatar
Gloops
Jérémy Jeanson a écrit, le 15/12/2008 09:25 :
Pas la moindre idée, je n'ai pas encore travaillé sur la localisati on
d'application et ClickOnce ne même temps, j'avais juste garder des in fos
de côté au cas où.

As tu tenté de regarder le fichier .csproj de ton projet dans un éd iteur
de texte pour voir ci la liste des fichiers publiés ne s'y trouvait p as?
ou .sln (mais ce en serrait pas logique).



Oui, c'est bien celui-là que j'ai modifié dans un éditeur de texte,
comme expliqué dans la diapo "Publish Groups of Languages Using msbuild "

Mais j'ai pris un peu de liberté en visant un fichier resx, ça n'a
franchement pas l'air prévu. C'est d'ailleurs pour ça que ce n'est pa s
possible dans l'interface non plus, au demeurant dans l'interface si ce
n'est pas prévu il n'y a pas besoin de chercher autre chose, la valeur
ne figure pas dans la liste et puis c'est marre.

Ou alors, peut-être devrais-je insister en cherchant des finesses de
syntaxe ? Si personne ne l'a fait, il n'y a rien qui dit si il vaut
mieux insister dans cette direction ou parcourir la liste de résultats
de recherche.


Pour ce qui est de copier les fichier à la main, le fonctionnement qu e
tu décis est normal... enfin en ce qui conserne le fait de trouver le s
ressources, par contre le fait que l'affichage ne cadre pas avec la
ressources choisie, il faut peut être que tu regarde de plus près t on code.



Le seul code qu'il y a est celui qui permet de sélectionner la culture,
dans la mesure où dans les conditions nominales il fonctionne bien ça me
paraît bon signe à son égard.

La discussion sur ce sujet (mais sans parler de déploiement) a démarr é
ici le 17 mai à 11h15, sous le titre "Forms : changer de culture à
partir de l'interface".


private void cmbLangues_SelectedIndexChanged(object sender,
EventArgs e)
{
if (!this.changeculture)
{
//MessageBox.Show(cmbLangues.Text);
cmbLangues.Refresh();
picClock.Visible = true;
this.Refresh();
try
{
Properties.Settings.Default.Culture =
cmbLangues.SelectedItem.ToString();
Properties.Settings.Default.Save();
}
catch (Exception ex)
{
MessageBox.Show("Error during selection of culture :
n{0}", ex.ToString());
}
Application.Restart();
}
}


changeculture est la variable qui permet de parcourir la liste sans
provoquer le rechargement du formulaire à chaque ligne.

dans Form_Load on a :

try
{
Thread.CurrentThread.CurrentUICulture =
CultureInfo.GetCultureInfo(m_Culture);
changeculture = true;
cmbLangues.SelectedIndex = 0;
while (cmbLangues.SelectedItem.ToString() != m_Culture)
cmbLangues.SelectedIndex += 1;
cmbLangues.SelectedItem =
Thread.CurrentThread.CurrentUICulture.DisplayName;
changeculture = false;
}
catch (Exception ex)
{
MessageBox.Show("Erreur lors de la sélection de la
culture : nr"
+ ex.ToString());
}



Bonne chasse à l'info, donnes des nouvelles si tu trouve quelquechose de
valable.



OK, merci.
Je m'avoue surpris : quand j'ai abordé l'internationalisation ça avai t
l'air d'une mécanique bien huilée, et puis patatras, dès qu'il s'ag it de
déployer, si je veux gérer des ressources de formulaire j'ai
l'impression de vouloir couper les cheveux en quatre. Je serais donc le
premier ?

Hier j'ai eu une idée que je n'ai pas fini de creuser : placer les
fichiers resx dans un sous répertoire de All usersApplication data.

L'ennui c'est qu'un script de déploiement devra envoyer les fichiers
dedans avec les droits administrateur, ce qui fait que c'est tant pis
pour la belle interface de setup.exe pour la sélection de l'utilisateur
et la saisie de son mot de passe. D'ailleurs, après je me heurte encore
à une difficulté : le programme s'exécute dans un répertoire diff érent
pour chaque utilisateur. Pour l'administrateur tout va bien, mais
l'utilisateur limité ne peut pas rapatrier les fichiers vers le
répertoire du programme. D'où la tentative de tout copier à la main dans
le même répertoire. Même lorsqu'on a sélectionné un administrat eur pour
le setup, il n'exécute que le déploiement, l'exécution se fait ensu ite
avec les droits de l'utilisateur qui a ouvert la session Windows.

En fait ça montre bien que je suis en train de chercher une solution de
"contournement" : il faut trouver le moyen de remonter tous les sens
interdits pour arriver à placer le colis à destination.

Pour revenir "dans les clous" on dirait qu'il faudra convertir les .resx
en .resource, et gérer autrement la liste des cultures (puisque je
remplissais la liste d'après les fichiers .resx présents). Apprendre ça
à la fin, une fois que l'exploitation de la liste des fichiers .resx es t
au point, ça ne donne pas l'impression d'une gestion optimale du temps.=
Avatar
Gloops
[Déploiement d'une application Winform comportant des ressources de
formulaire, de type resx]

Bonjour,

Je crois que cette fois je suis sur une bonne piste. J'ai abandonné
celle du "Click-once", intéressante lorsque les ressources utilisées
sont toutes de type .resources (et encore il me reste à comprendre un
passage vers le type dll), alors qu'ici j'en ai de type .resx.

http://www.techheadbrothers.com/Articles.aspx/deploiement-application-dot net

http://msdn.microsoft.com/fr-fr/library/k3bb4tfd.aspx

Malgré quelques coquilles dans le premier cas ;) , je peux dire que
cette fois je progresse.

J'ai pu déployer l'application vers "Program Files" sur ma machine,
c'est vrai que ce sera encore plus probant quand ça tournera sur une
autre, mais je pense que le principal point d'achoppement est passé.

Il reste du boulot, à savoir afficher l'interface de déploiement dans la
bonne langue par exemple (ce sera peut-être pour un peu plus tard), et
surtout rédiger la page de présentation. Pour rester cohérent avec ce
que je viens de dire, dans ce qui reste à faire dans une interface plus
soignée il y aura aussi vérifier l'existence du répertoire sélect ionné.
Mais il semble bien que tout est expliqué, bon ce sera un peu de
programmation à faire ...

Juste un point méritera un peu plus de recherche, le kit de
développement du programme d'installation gère un certain nombre de
répertoires spéciaux, mais pas Quick Launch. Il faudra peut-être ap peler
une API non managée pour l'obtenir, bizarre.