2017-10-13 7 views
1

mon idée est de faire un fichier de désinstallation avec .msi fichier d'installation. J'ai lu quelques informations sur la création de raccourcis de désinstallation ici: http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_uninstall_shortcut.html, Mais je ne peux pas trouvé d'informations sur faire le fichier de désinstallation après la construction de msi, peut-être qui sait que c'est possible? et si possible comment je peux le faire? ou peut-être possible de faire avec le script cmd? Il suffit d'écrire un script pour désinstaller automatiquement mon programme de Mashine. Mon code est:Wix créer le fichier de désinstallation silencieuse

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"><?define WpfApp1_TargetDir=$(var.WpfApp1.TargetDir)?> 
    <Product Id="*" Name="SetupProject2" Language="1033" Version="1.0.0.0" Manufacturer="Andrejka" UpgradeCode="PUT-GUID-HERE"> 
     <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <Property Id="WIXUI_INSTALLDIR" Value="TESTFILEPRODUCTDIR" /> 
    <Property Id="WixShellExecTarget" Value="[#WpfApp1.exe]" /> 
    <CustomAction Id="LaunchApplication" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" /> 
    <Property Id="LAUNCH_APP_ON_EXIT" Value="1" /> 

    <InstallExecuteSequence> 
    <Custom Action='LaunchApplication' After='InstallFiles'/> 
    </InstallExecuteSequence> 
    <Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOX" Value="1" /> 

     <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
     <MediaTemplate EmbedCab="yes"/> 
     <Feature Id="ProductFeature" Title="SetupProject2" Level="1"> 
      <ComponentGroupRef Id="ProductComponents" /> 
     </Feature> 
    </Product> 

    <Fragment> 
     <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="TESTFILEPRODUCTDIR" Name="SetupProject2"> 
      <Directory Id="ProgramFilesFolder"> 
       <Directory Id="INSTALLFOLDER" Name="SetupProject2" />  
     </Directory> 
      </Directory> 
     </Directory> 
    </Fragment> 

    <Fragment> 
     <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 
      <!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. --> 
      <!-- <Component Id="ProductComponent"> --> 
       <!-- TODO: Insert files, registry keys, and other resources here. --> 
      <!-- </Component> --> 

      <Component Id="WpfApp1.exe" Guid="*"> 
       <File Id="WpfApp1.exe" Name="WpfApp1.exe" Source="$(var.WpfApp1_TargetDir)WpfApp1.exe" />  
      </Component> 
      <Component Id="WpfApp1.exe.config" Guid="*"> 
       <File Id="WpfApp1.exe.config" Name="WpfApp1.exe.config" Source="$(var.WpfApp1_TargetDir)WpfApp1.exe.config" /> 
      </Component> 
      <Component Id="aws_sdk_net_core_support.dll" Guid="*"> 
       <File Id="aws_sdk_net_core_support.dll" Name="aws-sdk-net-core-support.dll" Source="$(var.WpfApp1_TargetDir)aws-sdk-net-core-support.dll" /> 
      </Component> 
      <Component Id="AWSSDK.Core.dll" Guid="*"> 
       <File Id="AWSSDK.Core.dll" Name="AWSSDK.Core.dll" Source="$(var.WpfApp1_TargetDir)AWSSDK.Core.dll" /> 
      </Component> 
      <Component Id="AWSSDK.SimpleNotificationService.dll" Guid="*"> 
       <File Id="AWSSDK.SimpleNotificationService.dll" Name="AWSSDK.SimpleNotificationService.dll" Source="$(var.WpfApp1_TargetDir)AWSSDK.SimpleNotificationService.dll" /> 
      </Component> 
      <Component Id="MimeSharp.dll" Guid="*"> 
       <File Id="MimeSharp.dll" Name="MimeSharp.dll" Source="$(var.WpfApp1_TargetDir)MimeSharp.dll" /> 
      </Component> 
     </ComponentGroup> 
    </Fragment> 
</Wix> 
+0

Bienvenue sur stackoverflow - il m'a fallu un certain temps pour comprendre votre question, mais je suis heureux que vous semblez avoir obtenu ce dont vous avez besoin. S'il vous plaît ne postez pas de GUID dans vos sources, les gens pourraient les copier, et ils ne sont plus uniques (ce qui va à l'encontre du but des GUID). C'est assez important. Si vous n'êtes pas encore en ligne, je générerais de nouveaux GUID de composants, ou mieux encore, j'utiliserais le concept de les définir sur * ce qui ** auto-calculerait les GUID des composants **. Vous pouvez également [** simplifier votre source WiX **] (https://stackoverflow.com/questions/24732761/syntax-for-guids-in-wix/24769965#24769965). –

+0

Im ici, merci pour la réponse – Andrej

+0

Le programme d'installation et le programme de désinstallation sont msiexec (Windows Installer). Le fichier msi est une base de données, pour laquelle WiX est un outil pour le construire. –

Répondre

0

En général, vous n'êtes pas censé mettre des raccourcis dans le menu de désinstallation de démarrage, il est en fait une violation des exigences de logo de Microsoft pour les applications Windows, je crois. Au contraire, vous devriez laisser les gens désinstaller votre produit de la manière normale via l'applet ajouter/supprimer des programmes.

MISE À JOUR: Je trouve cette réponse avec un peu plus d'informations sur ce sujet: Shortcuts with name "Uninstall <Program Name>" are not displayed in Windows 8/8.1/10

De plus, tellement il est clair, désinstallez, est une fonctionnalité intégrée de fichiers MSI - il est toujours automatiquement disponible à moins d'être bloqué de manière active (par exemple, certaines applications se cachent de l'affichage dans les programmes d'ajout/suppression). Il n'y a rien de plus à faire dans vos sources WiX pour supporter la désinstallation correctement. Il suffit de suivre les directives de Windows Installer et cela vient "gratuitement".

Si ce que vous demandez est un moyen de créer un fichier batch désinstaller, vous pouvez trouver une multitude de façons de désinstaller votre fichier MSI dans cette « désinstaller référence »: Uninstalling an MSI file from the command line without using msiexec. En bref, exécutez la ligne de commande ci-dessous pour désinstaller votre MSI si vous avez le code de produit MSI (vous pouvez trouver votre code de produit en interrogeant votre système comme décrit ici: How can I find the product GUID of an installed MSI setup? - vous pourriez avoir besoin de le chercher puisque vous auto-générer votre code produit):

msiexec.exe /x {your-product-guid} 

ou tout simplement désinstaller en se référant à votre fichier d'installation MSI d'origine comme ceci:

msiexec.exe /x "c:\filename.msi 

Voir la réponse lien ci-dessus (la référence de désinstallation) pour beaucoup plus informations à ce sujet.