2017-02-02 2 views
0

Je crée maintenant le projet d'installation Windows (ISM) de mon application modulaire CVM WPF Prism MVVM. Je l'utilise pour InstallShield 2016 Premier (21 jours d'essai). Dans mon application C# WPF j'ai l'indicateur Properties.Settings.Default appelé IsFirstRunAfterInstallation. Le type de ce drapeau est bool. J'ai besoin que ce drapeau doit être réglé sur vrai pendant le processus d'installation. Après l'achèvement de l'installation lorsque l'application est exécutée première fois, le drapeau IsFirstRunAfterInstallation est vérifié comme suit:Comment exécuter le code de l'application lors de l'installation de cette application dans InstallShield 2016 Premier Edition (essai de 21 jours)?

if (My_assembly_name.Properties.Settings.Default.IsFirstRunAfterInstallation) 
{ 
    // do some actions here that must be done when application runs first time after its installation. 
    . . . . . . . . . . . . . . . 
    My_assembly_name.Properties.Settings.Default.IsFirstRunAfterInstallation = false; 
    My_assembly_name.Properties.Settings.Default.Save(); 
} 

Et si le drapeau IsFirstRunAfterInstallation est tru e, un code C# qui est nécessaire pour effectuer lors de l'exécution de l'application la première fois sera exécutée (comme vous pouvez le voir ci-dessus). Donc, je dois le drapeau IsFirstRunAfterInstallation est réglé sur vrai comme le folowing:

My_assembly_name.Properties.Settings.Default.IsFirstRunAfterInstallation = true; 
My_assembly_name.Properties.Settings.Default.Save(); 

lors de chaque installation de mon application sur l'ordinateur client et est vérifié après l'installation lorsque l'application est exécutée première fois. J'ai donc la question suivante: Comment exécuter le code de l'application lors de l'installation de l'application en utilisant InstallShield 2016 Premier Edition (21 jours d'essai)?

Répondre

1

Si vous avez besoin de IsFirstRunAfterInstallation true (par défaut) pour chaque version de votre application, je ne pense pas que vous ayez besoin de faire quoi que ce soit avec installshield.

1- Définissez la valeur par défaut IsFirstRunAfterInstallation true (dans les propriétés de l'application).

2- Modifiez le numéro de version de l'application pour chaque version (à partir des propriétés de l'application OU directement dans la classe AssemblyInfo.cs).

Ce sera toujours le cas lors du premier lancement/lancement de l'application après l'installation car pour chaque nouvelle application, un répertoire séparé est créé dans% AppData% \ Local \\\\ et les paramètres sont copiés/enregistrés dans user.config. Pour l'approche ci-dessus n'avez-vous pas besoin de faire quoi que ce soit de personnalisé/supplémentaire puisque l'application maintient les paramètres spécifiques à la version, mais il existe des alternatives que vous pouvez utiliser: 1- Créez un exe séparé (une application console) ou un dll et l'utiliser comme action personnalisée. OU 2- Lancez votre application à partir de InstallShield et passer un paramètre de ligne de commande quelque chose/IsFirstLaunch: True

Les paramètres passés d'une action InstallShield personnalisés peuvent être reçus dans l'application principale:

private static void Main() 
{ 
string[] args = Environment.GetCommandLineArgs(); 
//Process args here 
} 
    OR 
private static void Main(string [] args) 
{ 
//Process args here. 
} 
+0

Notez qu'il est utile d'envisager la mise à niveau des scénarios . Il est possible que ce code "première exécution" doive être réexécuté après une mise à niveau, et si l'installation ne le réinitialise pas, l'application devra le déterminer d'une autre manière. Peut-être stocker la dernière version pour laquelle le code "première exécution" a été exécuté au lieu d'un simple booléen. –

+0

Je dois également définir IsFirstRunAfterInstallation sur true en cas de redéploiement (réinstaller) la même version de l'application sur le même ordinateur. Michael Urman, s'il vous plaît aider si possible ofcource. – Prohor

+0

Si la valeur par défaut de IsFirstRunAfterInstallation est définie sur true, lors de la modification de la version de l'application pour chaque version (déploiement), elle sera toujours vraie lors du premier lancement après la mise à niveau. mais comme l'a dit @MichaelUrman, vous pouvez également enregistrer la version actuelle de l'application dans le fichier système/txt avant de définir l'indicateur sur false. – Munawar