Pour le projet sur lequel je travaille, je ne suis pas autorisé à utiliser ClickOnce . Mon patron veut que le programme ait l'air "réel" (avec un installateur, etc.).
J'ai installé Visual Studio 2012 Professional, et je me suis amusé avec le programme d'installation InstallShield , et cela rend les installateurs agréables, mais je ne vois pas comment activer le logiciel d'installation. l’application de "mise à jour automatique" (c’est-à-dire que lorsqu’elle démarre, elle vérifie qu’elle utilise la dernière version).
On m'a demandé de faire un petit changement au code - changer un ajout à une soustraction, et je ne veux pas vraiment que les gens aient à désinstaller l'ancienne version, puis à réinstaller la nouvelle version à chaque fois que je fais un petit changer comme ça.
Comment puis-je faire en sorte que l'application vérifie les mises à jour et les installe? Ou n'est-ce pas possible (ou pas facile)?
Il y a déjà beaucoup de questions à ce sujet, alors je vous renvoie à celles-ci.
Une chose que vous voulez vous assurer d’empêcher le besoin de désinstallation est que vous utilisez le même code de mise à niveau à chaque version, mais que vous modifiez le produit code. Ces valeurs sont situées dans les propriétés du projet Installshield.
Quelques références:
Je pense que vous devriez vérifier le projet suivant à codeplex.com http://autoupdater.codeplex.com/
Cet exemple d’application est développé en C # sous la forme d’une bibliothèque portant le nom de projet "AutoUpdater". Le DLL “AutoUpdater” peut être utilisé dans une application Windows C # (WinForm et WPF).
Il existe certaines fonctionnalités sur AutoUpdater:
Comment utiliser?
Dans le programme que vous souhaitez autoriser à mettre à jour automatiquement, il vous suffit d'appeler la fonction AutoUpdate dans la procédure Main. La fonction AutoUpdate vérifie la version avec celle qui est lue à partir d’un fichier situé dans un site Web/FTP. Si la version du programme est inférieure à celle qui a été lue, le programme télécharge le programme de mise à jour automatique et le lance. La fonction renvoie True, ce qui signifie qu'une mise à jour automatique s'exécutera et que le programme en cours devrait être fermé. Le programme de mise à jour automatique reçoit plusieurs paramètres du programme à mettre à jour et effectue la mise à jour automatique nécessaire puis lance le système mis à jour.
#region check and download new version program
bool bHasError = false;
IAutoUpdater autoUpdater = new AutoUpdater();
try
{
autoUpdater.Update();
}
catch (WebException exp)
{
MessageBox.Show("Can not find the specified resource");
bHasError = true;
}
catch (XmlException exp)
{
bHasError = true;
MessageBox.Show("Download the upgrade file error");
}
catch (NotSupportedException exp)
{
bHasError = true;
MessageBox.Show("Upgrade address configuration error");
}
catch (ArgumentException exp)
{
bHasError = true;
MessageBox.Show("Download the upgrade file error");
}
catch (Exception exp)
{
bHasError = true;
MessageBox.Show("An error occurred during the upgrade process");
}
finally
{
if (bHasError == true)
{
try
{
autoUpdater.RollBack();
}
catch (Exception)
{
//Log the message to your file or database
}
}
}
#endregion
Le moyen le plus courant consiste à placer un simple fichier texte (XML/JSON serait préférable) sur votre serveur Web avec la dernière version de construction. L'application téléchargera ensuite ce fichier, vérifiera la version et lancera le programme de mise à jour. Un fichier typique ressemblerait à ceci:
Fichier de mise à jour de l'application // Chaîne unique permettant à votre application de reconnaître le type de fichier
version: 1.0.0 // dernière version de Assembly
download: http://yourserver.com/ ... // Un lien vers la version téléchargée
redirect: http://yournewserver.com/ ... // J'ai utilisé ce champ en cas de changement d'adresse du serveur. Cela indiquerait au client qu'il doit rechercher une nouvelle adresse.
Vous pouvez également ajouter d'autres détails importants.
La voie des laïcs est
on Main () renommez le fichier .exe en cours d'exécution .exe en vérifiant la date et l'heure de création. et la date de mise à jour du fichier et copier dans le dossier de l'application.
//Rename he executing file
System.IO.FileInfo file = new System.IO.FileInfo(System.Reflection.Assembly.GetExecutingAssembly().Location);
System.IO.File.Move(file.FullName, file.DirectoryName + "\\" + file.Name.Replace(file.Extension,"") + "-1" + file.Extension);
puis faites la vérification logique et copiez le nouveau fichier dans le dossier en cours d'exécution
C'est le code pour mettre à jour le fichier mais pas pour l'installer. Ce programme est conçu avec la méthode DOS pour copier les fichiers à la date la plus récente et exécuter votre programme automatiquement. peut vous aider
ouvrir le bloc-notes et enregistrer le fichier ci-dessous avec l'extension .bat
xcopy \\IP address\folder_share_name\*.* /s /y /d /q
start "label" /b "youraplicationname.exe"