Wix installer msi pas installer L'application Winform créé avec Visual Studio 2017
pour un test simple, j'ai créé une application d'installation Wix
pour une application Winform simple comme suit. Mais quand j'exécute le msi
créé avec l'installateur il tourne pendant juste une seconde et sort sans installer L'application Winform. Question : quelle pourrait être la question ici? Il semble que quelque chose manque dans mon dossier Product.wxs
. Note : j'utilise VS2017
étapes pour produire l'émission
- installé
Wix Toolset Visual Studio 2017 Extension
de ici et a suivi leurs instructions pour installerWiX 3.11 RC2
de ici - a créé un défaut
Winform project
[un seul formulaire rien de plus] - a créé un
Wix Setup project
en utilisantToolsetv3Setup Project
modèle dans la même solution - dans WiX Setup project a ajouté une référence à Projet Winform
- construit la solution entière.
- à droite a cliqué sur le projet D'installation et l'a reconstruit qui a créé un fichier
.msi
dans son..binDebug
dossier - Double cliqué sur le fichier
.msi
de l'étape 6. Le dossier a couru pendant une seconde, le dialogue d'installation de windows 10 est apparu (comme il apparaît pour n'importe quelle installation vous demandant si vous voulez installer ce programme). J'ai cliqué surYes
. L'installateur a fonctionné pendant une seconde à nouveau, puis il est sorti. Mais l'application Winform n'a pas été installé.
Produit Par Défaut.fichier wxs [Je n'ai rien ajouté ici sauf pour ajouter une valeur à l'attribut Manufacturer
]
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="WiX_test_4_Winfrm" UpgradeCode="e69fe67b-5c28-4764-8196-a6613b840eff">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="SetupProject1" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SetupProject1" />
</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> -->
</ComponentGroup>
</Fragment>
</Wix>
2 réponses
"Bonjour WiX" (transparent aluminium s'il vous plaît)
je pense que ce dont vous avez besoin est le "Hello World" de WiX du projet . C'est assez vieux maintenant, mais c'est encore bon pour vous montrer les bases de la compilation d'un MSI fonctionnel.
UPDATE : ci-dessous, j'ai ajouté une description étape par étape de la façon de compiler un MSI à partir d'un nouveau projet de studio visuel WiX 3.
ici est-ce qu'il y a une autre réponse depuis longtemps avec quelques informations de contexte pour ce que WiX est vraiment: MSI vs paquets nuget: qui sont les meilleurs pour la livraison continue? . Vous trouverez le lien vers "hello world", mais aussi plusieurs autres liens.
en résumé : vérifiez le premier lien pour obtenir le" hello world " De WiX. Puis mettez à jour votre source avec quelques composants de test et recompilez. Vous devriez mettre la main sur Orca (outil SDK) pour pouvoir consulter les fichiers MSI compilés. Puisque vous avez Visual Studio installé, essayez de chercher Orca-x86_en-us.msi
et installez-le (C'est le propre de Microsoft, visualiseur et éditeur officiel de MSI). Trouvez ensuite Orca dans le menu Démarrer. Techniquement Orca est installé dans le cadre de Windows SDK (pas Visual Studio), mais Windows SDK est livré avec L'installation de Visual Studio. Une fois que vous avez un fichier MSI compilé, cliquez avec le bouton droit de la souris et sélectionnez Edit with Orca
.
Une certaine expérience sera nécessaire avant qu'un tel fichier ait vraiment un sens. Il s'agit essentiellement d'une base de données MS SQL primitive stockée dans un fichier de stockage structuré COM (OLE). Essentiellement un système de fichiers dans un fichier avec des flux pour différents contenus (tels que des fichiers, et des données, etc...). Il suffit de penser à elle comme une base de données avec l'intégrité référentielle normale et de se concentrer sur les tables centrales telles que File
et Component
dans un premier temps.
Minimalwix MSI compiler - L'Étape-Par-Étape
laissez-moi essayer une description étape par étape de ce que vous pouvez faire dans un projet Wix 3 fraîchement fait pour le faire compiler avec une interface graphique WiX par défaut. Vous pouvez voir ces changements "fusionné" dans un échantillon complet dans la dernière section de la réponse, mais lisez cette étape-par-étape donc, c'est logique.
-
créer un nouveau projet WiX3 . Vous savez comment faire, Je ne perdrai pas de temps avec les détails.
-
attribuez l'attribut
Manufacturer
à votre nom d'entreprise. Maintenant un nouveau nom de votre choix à l'Name
attribut. Dans cet exemple, il est réglé surMinimalTester
- utilisez autre chose s'il vous plaît. -
Changement
<MediaTemplate />
à<MediaTemplate EmbedCab="yes" />
utiliser embedded fichiers cab dans le fichier MSI. De cette façon, seul le MSI est créé et il n'y a pas de fichier CAB externe supplémentaire. -
directement après l'élément Médiatemplate, ajouter ce qui suit:
<UIRef Id="WixUI_Mondo" />
. Cela ajoutera une boîte de dialogue par défaut à votre MSI de sorte qu'il a les bases de ce qui est nécessaire pour être plus généreusement utile. Vous pouvez maintenant exécuter la réparation, et modifier et vous obtenez un assistant pour l'installation originale selon les lignes de ce que la plupart des fichiers MSI fournissent à partir D'Installshield ou Advanced Installer ou d'autres outils professionnels. Et surtout: votre administrative l'installation aura une boîte de dialogue où vous pouvez spécifier où les fichiers doivent être extraits. -
nous allons ajouter notre propre contrat de licence à la configuration de WiX (ou bien vous obtiendrez un mumbling par défaut). Directement après
<UIRef Id="WixUI_Mondo" />
ajouter cet élément:<WixVariable Id="WixUILicenseRtf" Value="TestLicenseAgreement.rtf" />
. Maintenant, créez le fichierTestLicenseAgreement.rtf
et placez-le dans le même dossier que votre fichier source WiX principal (voie rapide: dans Visual Studio, clic droit sur le projet et " ouvrir le dossier dans File Explorer", maintenant créer le fichier RTF avec le clic droit = > nouveau = > fichier RTF . Et peut-être ouvrir le RTF et entrer du texte de test). nouvelle personnalisation des dialogues (bitmaps et plus). -
l'ensemble de dialogue WiX est défini dans une dll, nous devons y faire référence. Dans votre projet Visual Studio WiX:
Right click References => Add Reference... => Navigate to C:\Program Files (x86)\WiX Toolset v3.11\bin\
. Double clicWixUIExtension.dll
et enfin clicOK
. -
maintenant ajouter le composant minimal absolu possible dans WiX avec un chemin absolu spécifié comme source. C'est pour être sûr que vous pouvez compiler le MSI. Ensuite, vous pouvez rendre le chemin relatif ou une variable (il suffit de l'ajouter directement sous l'élément de répertoire
INSTALLFOLDER
pour l'instant):
<Component Feature="ProductFeature">
<File Source="C:\Users\someone\SourceControl\MyProject\CoreApp.exe" />
</Component>
- enfin clic droit sur le projet WiX dans votre solution et sélectionnez
Build
. Et vous pouvez tester rapidement lancer le MSI en cliquant avec le bouton droit de la souris sur le projet WiX et en cliquant surOpen Folder in File Explorer
. Maintenant, double-cliquez surbin
puis surDebug
(ou relâchez si vous passez à une version build - Je ne sais pas quelles sont les" différences par défaut " entre les deux configurations). Vous devriez voir votre propre contrat de licence dans la deuxième boîte de dialogue de la séquence de dialogue.
les versions WiX ultérieures ont de grandes valeurs par défaut pour les attributs qui sont presque toujours définies à " template valeurs" ou lorsque deux attributs sont essentiellement redondants. Il suffit de les laisser hors de votre source et de laisser le compilateur WiX les ajouter avec des valeurs par défaut. Beaucoup moins d'agitation.
comme exemple: l'élément ci-dessus n'a pas de Component Id
. Lors de la compilation, il est par défaut L'Id de l'élément fichier qu'il contient. Le File element Id
à son tour, est également manquant et sera par défaut au nom de fichier spécifié par le Source attribute
(qui est un attribut obligatoire).
Peut-être regarder cette réponse pour une description plus longue et un exemple concret vers le bas: syntaxe pour les guids en WIX? voyez comment vos fichiers source WiX peuvent être simples une fois que vous éliminez toute la redondance et la duplication de certains attributs? Moins de texte, moins de bugs.
Échantillon Minimal WiX Source - Commentaires En Ligne
dans l'échantillon ci-dessous le composant a été déplacé dans le ComponentGroup par défaut - il n'est donc pas nécessaire de spécifier à quelle fonctionnalité il appartient (contrairement à ce qui est indiqué ci-dessus).
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<!--CHANGE 0: Set Manufacturer attribute to something, you must also specify a full GUID for UpgradeCode -->
<Product Id="*" Name="MinimalTester" Language="1033" Version="1.0.0.0" Manufacturer="My Company" UpgradeCode="PUT-GUID-HERE">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<!--Standard: <MediaTemplate />-->
<!--CHANGE #1: Enable embedded cab files, so there is only one file generated, the MSI file -->
<MediaTemplate EmbedCab="yes" />
<!--CHANGE #2: Add the following elements to link one of the default WiX GUI sequences and show the specified license agreement. The RTF file must be created and placed next to your WiX source file -->
<UIRef Id="WixUI_Mondo" />
<WixVariable Id="WixUILicenseRtf" Value="TestLicenseAgreement.rtf" />
<!--CHANGE #3: Add WiX dll reference. In Visual Studio WiX project: Right click References => Add Reference... => Navigate to C:\Program Files (x86)\WiX Toolset v3.11\bin\. Double click WixUIExtension.dll. Click OK -->
<Feature Id="ProductFeature" Title="MinimalTester" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="MinimalTester" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<!--CHANGE #4: Remove TODO elements, add the most basic component possible as illustrated below -->
<Component>
<File Source="C:\Users\someone\SourceControl\MyProject\CoreApp.exe" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
Essayez de compiler et de tester l'installation. Devrait installer à C:\Program Files (x86)\MinimalTester
sur un système normal.
peut-être voir d'autres liens pour les tutoriels WiX ici: installateur WIX n'affichant pas l'image personnalisée de dialogue WixUI correctement .
Essayez ce qui suit:
https://github.com/iswix-llc/iswix-tutorials
https://www.youtube.com/watch?v=nnV_OU6fk8c
clause de non-responsabilité: je suis le responsable D'IsWiX, un accélérateur Wix FOSS qui fournit des gabarits de projet améliorés (échafaudage) et les concepteurs graphiques pour faire la majorité du Wix XML heavy lifting pour vous. Comme vous pouvez le voir sur la vidéo, c'est facilement que quelques minutes de travail.