Comment connaitre le PublisherName et ProductName du déployment de l'application en cours?
il peut-être different du .exe je pense...?
merci d'avance
Version imprimable
Comment connaitre le PublisherName et ProductName du déployment de l'application en cours?
il peut-être different du .exe je pense...?
merci d'avance
personne n'a essayé de récupérer par programmation le nom de l'éditeur du déployement Clickonce?
Je fais une classe que je souhaite réutiliser dans plusieurs projets, qui notament copie le racourci de StartMenu->programme->PublisherName->ProductName vers programme->demarrage.
Pour cela j'ai besoin de connaitre par programme les champs:
asmv2:publisher="MaSociete" asmv2:product="MonProduct"
J'ai essayé en explorant l'objet:
Mais j'ai rien trouvé qui puisse ressembler à publisher ou product...:(Code:
1
2
3 System.Deployment.Application.ApplicationDeployment ad; ad=System.Deployment.Application.ApplicationDeployment.CurrentDeployment;
est-ce que quelq'un a pu aumoins récupérer des informations relatives au déployement autre que IsNetWorkDeployed, checkUpdate, update, IsFirstRun....
aucun n'a une idée?
j'ai ma réponse qui ne me convient pas du tout !
en englais, de la part d'un admin MS:
Ce n'est pas possible.Code:Unfortunately there are no reflection APIs available to obtain this information at runtime. You will need to hardcode this into your application.
source:
http://forums.microsoft.com/MSDN/Sho...76701&SiteID=1
Quel est le but de la manoeuvre ?
sinon, je suis obligé de recopier manuelement le publisherName et le ProductName.Citation:
Envoyé par trois_1
c'est tout.
Pourquoi, tu ne trouve pas ma méthode correcte?
Pourquoi tu n'utilises pas cette méthode: http://www.developpez.net/forums/sho...d.php?t=594197
Cette solution que tu m'avais donné était dèjà un progrès. OK
Mais, elle nécessite de connaitre le PublisherName et le ProductName, que l'on ne connaît pas par programmation.
Code:public static void AddShortcutToStartupGroup(string publisherName, string productName) {
La solution de contournement est de prendre les attributs du manifest de l'assembly courente, avec l'assemblyName et le compagnyName:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 if (!System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed) return; if (!System.Deployment.Application.ApplicationDeployment.CurrentDeployment.IsFirstRun) return; System.Reflection.Assembly callingAssembly=System.Reflection.Assembly.GetCallingAssembly(); string publisherName; if (System.Attribute.IsDefined(callingAssembly, typeof(System.Reflection.AssemblyCompanyAttribute))) { System.Reflection.AssemblyCompanyAttribute ascompany; ascompany=(System.Reflection.AssemblyCompanyAttribute)System.Attribute.GetCustomAttribute(callingAssembly, typeof(System.Reflection.AssemblyCompanyAttribute)); publisherName=ascompany.Company; // Il est impossible de récuprer le publisherName par programmation(cf. post form msdn). } else { publisherName=""; } string productName=callingAssembly.GetName().Name; string startupPath=System.Environment.GetFolderPath(System.Environment.SpecialFolder.Startup); startupPath=System.IO.Path.Combine(startupPath, productName)+".appref-ms"; if (!System.IO.File.Exists(startupPath)) { string allProgramsPath=System.Environment.GetFolderPath(System.Environment.SpecialFolder.Programs); string shortcutPath=System.IO.Path.Combine(allProgramsPath, publisherName); shortcutPath=System.IO.Path.Combine(shortcutPath, productName)+".appref-ms"; System.IO.File.Copy(shortcutPath, startupPath); }