Commit db9fb3c5 by Pascal Bigot

Ajout de l'updater auto

parent a3f76b45
using System;
using System.Collections.Generic;
using System.Net;
using System.IO;
using System.Xml;
using System.Reflection;
using System.Windows.Forms;
namespace SmartAppUpdater
{
class Program
{
static void Main(string[] args)
{
WebClient wc = new WebClient();
bool bFileDownloadOK = false;
try
{
string downloadURL = "http://www.smartappsoftware.net/smartapp/autoupdate/lastversioninfo.xml";
if (args.Length > 0 && args[0] == "-B")
downloadURL = "http://www.smartappsoftware.net/smartapp/autoupdate/lastversioninfoB.xml";
wc.DownloadFile(downloadURL, "lastversioninfo.xml");
bFileDownloadOK = true;
}
catch (Exception e)
{
Console.WriteLine(string.Format("Erreur de récupération du fichier ({0})", e.Message));
}
finally
{
wc.Dispose();
}
if (bFileDownloadOK)
{
try
{
XmlDocument versionFile = new XmlDocument();
versionFile.Load("lastversioninfo.xml");
bool bNeedUpdate = false;
XmlNode rootNode = versionFile.DocumentElement;
foreach (XmlNode node in rootNode.ChildNodes)
{
if (node.Name == "assemblyInfo")
{
XmlNode attrName = node.Attributes.GetNamedItem("fileName");
// il faut déjà trouver si l'assembly est présent
string localAssemblyVersion = string.Empty;
try
{
Assembly asm = Assembly.LoadFrom(Application.StartupPath + Path.DirectorySeparatorChar + attrName.Value);
Version asmVer = asm.GetName().Version;
localAssemblyVersion = asmVer.ToString();
}
catch (Exception asmEx)
{
continue;
}
XmlNode attrVersion = node.Attributes.GetNamedItem("lastVersion");
string versionString = attrVersion.Value;
string[] remoteVersionIndices = versionString.Split('.');
string[] localVersionIndices = localAssemblyVersion.Split('.');
for (int i = 0; i < remoteVersionIndices.Length; i++ )
{
int iRemoteIndice = int.Parse(remoteVersionIndices[i]);
int iLocalIndice = int.Parse(localVersionIndices[i]);
if (iRemoteIndice > iLocalIndice)
{
bNeedUpdate = true;
break;
}
}
}
}
// la liste des noeud en dessous du root correspond à une liste de version d'assembly
}
catch (Exception e)
{
Console.WriteLine(string.Format("Erreur de détéction des version ({0})", e.Message));
}
}
}
}
}
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Les informations générales relatives à un assembly dépendent de
// l'ensemble d'attributs suivant. Changez les valeurs de ces attributs pour modifier les informations
// associées à un assembly.
[assembly: AssemblyTitle("SmartAppUpdater")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Mediane Systeme")]
[assembly: AssemblyProduct("SmartAppUpdater")]
[assembly: AssemblyCopyright("Copyright © Mediane Systeme 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// L'affectation de la valeur false à ComVisible rend les types invisibles dans cet assembly
// aux composants COM. Si vous devez accéder à un type dans cet assembly à partir de
// COM, affectez la valeur true à l'attribut ComVisible sur ce type.
[assembly: ComVisible(false)]
// Le GUID suivant est pour l'ID de la typelib si ce projet est exposé à COM
[assembly: Guid("eae4d6ff-70b5-4d0b-b524-1b38927eb4f1")]
// Les informations de version pour un assembly se composent des quatre valeurs suivantes :
//
// Version principale
// Version secondaire
// Numéro de build
// Révision
//
// Vous pouvez spécifier toutes les valeurs ou indiquer les numéros de build et de révision par défaut
// en utilisant '*', comme indiqué ci-dessous :
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{A3DF3670-EF60-48AD-A28D-3DABE0655844}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SmartAppUpdater</RootNamespace>
<AssemblyName>SmartAppUpdater</AssemblyName>
<TargetFrameworkVersion>v3.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<StartupObject>
</StartupObject>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>..\Prod\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>..\Prod\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Data" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="local_lastversioninfo.xml">
</Content>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8" ?>
<root>
<assemblyInfo fileName="CommonLib.dll" lastVersion="3.2.0.0"/>
<assemblyInfo fileName="SmartApp.exe.dll" lastVersion="3.2.0.0"/>
</root>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment