Ce que je voudrais faire est de montrer à l'utilisateur de l'installateur une liste des sites Web sur leur serveur et de leur permettre de choisir une (à l'aide de la méthode décrite ici: http://www.cmcrossroads.com/content/view/13160/120/ , qui semble maintenant cassé voir Cependant, ma recherche semble avoir révélé que le seul moyen de spécifier un site Web dans Wix est par IP, Port et en-tête. Demander ceux-ci n'est pas très convivial, donc je suis laissé avec l'idée d'écrire une deuxième action personnalisée pour obtenir ces informations sur un nom de site Web. P>
Y a-t-il une meilleure façon? P>
BTW Cela doit fonctionner à la fois dans IIS6 et IIS7 au cas où cela affecte la réponse. P>
5 Réponses :
OK, il est possible (dans IIS6 ou IIS7 avec la compatibilité de la métabase), grâce à Ceci Poste à la liste de diffusion Expliquez la manière légèrement bizarre que le système IIS: élément de site Web fonctionne. La partie utile est la suivante: Donc, mon code Wix se termine comme: p> <DirectoryRef Id="TARGETDIR">
<Component Id="IisSetup" Guid="YOUR-GUID-HERE">
<iis:WebVirtualDir Id="IisVirtualDir" Alias="[IIS_VIRTUALDIRNAME]" Directory="INSTALLLOCATION" WebSite="IisWebsite">
<iis:WebApplication Id="IisWebApplication" Name="[IIS_VIRTUALDIRNAME]" WebAppPool="IisAppPool" Isolation="high"/>
</iis:WebVirtualDir>
<iis:WebAppPool Id="IisAppPool" Name="[IIS_APPPOOLNAME]" Identity="networkService"/>
</Component>
</DirectoryRef>
<!-- Note that this entry should not be put under a component. If it is WiX
will update the website on install and remove it on uninstall -->
<iis:WebSite Id="IisWebsite" Description="[IIS_WEBSITENAME]" SiteId="*">
<iis:WebAddress Id="IisWebAddress" Port="80" />
</iis:WebSite>
Alors que cette question et cette réponse sont toujours valables, je pense que cela vaut la peine de vous demander si vous souhaitez vraiment utiliser le nom du site Web. Je souhaite le stocker pour une utilisation pendant la désinstallation, puis la sauvegarde de l'identifiant du site est probablement une meilleure idée. Auquel cas l'élément de site Web devient:
<iis:WebSite Id="IisWebsite" Description="Dummy" SiteId="[IIS_WEBSITEID]"> <iis:WebAddress Id="IisWebAddress" Port="80" /> </iis:WebSite>
Dans mon installateur, je ne voulais pas créer de site Web. Je voulais permettre à l'utilisateur de sélectionner un site Web existant em> existant. Je l'ai fait avec une action personnalisée en JavaScript et un panneau UI personnalisé. code d'action personnalisé: p> enregistrer les actions personnalisées comme ceci: p> Ceci est le .WXS pour le panneau d'interface utilisateur: p> Le panneau d'interface utilisateur présente une liste de liste, qui est automatiquement renseignée avec des éléments de la table de la liste de liste avec le Premier champ de site Web. Ce tableau est renseigné au moment de l'exécution par l'action personnalisée en JavaScript. P> Pour appeler l'action personnalisée au bon moment, vous avez besoin de quelque chose comme celui-ci dans le fichier principal .wxs: p>
N'importe quelle idée pourquoi le script ci-dessus lancerait un "Iisenumsites: exception: 0x80004005: modifier, mode, enregistrement" message d'erreur?
Ah, non, je n'ai aucune idée.
Répondre sur pour J'ai une expérience similaire et ce que j'ai trouvé jusqu'à présent est l'ID de site qui extrait de J'ai un site Web avec un nom comme Une fois que j'ai la déclaration IF pour filtrer ces gros chiffres et que le script fonctionne bien. P> espère que cette aide pour les autres . p> p> iisenumsites: Exception: 0x80004005: Modifier, mode, enregistrement code>
parseint Code>: p>
w3svc / 1528550093 code> et je soupçonne
1528550093 code> est trop grand pour la table
wiskwebites code> Table. p>
Basé sur la réponse de Cheeso et une action personnalisée mise à jour pour utiliser C # avec Microsoft.Web.Administration plutôt que JavaScript avec WMI. Testé contre IIS 8.5.
CustomActions.cs: P>
<UI> <Dialog Id="IISDlg" Width="370" Height="270" Title="[ProductName] Setup" NoMinimize="yes"> <Control Id="SelectWebSiteLabel" Type="Text" X="20" Y="73" Width="100" Height="15" NoPrefix="yes" Text="Select web site:" /> <Control Id="SelectWebSiteCombo" Type="ListBox" X="20" Y="89" Width="200" Height="150" Property="WEBSITE" Sorted="yes" /> <Control Id="VirtualHostLabel" Type="Text" X="235" Y="73" Width="100" Height="15" TabSkip="no" Text="&Application Path Alias:" /> <Control Id="VirtualHostTextbox" Type="Edit" X="235" Y="89" Height="17" Width="120" Property="IIS_VIRTUAL_DIR" Indirect="no" /> <Control Id="Back" Type="PushButton" X="180" Y="243" Width="56" Height="17" Text="&Back"> <Publish Event="NewDialog" Value="MaintenanceTypeDlg" Order="1">Installed</Publish> <Publish Event="NewDialog" Value="LicenseAgreementDlg" Order="2">NOT Installed</Publish> </Control> <Control Id="Next" Type="PushButton" X="236" Y="243" Width="56" Height="17" Default="yes" Text="&Next"> <Publish Event="NewDialog" Value="CMParametersDlg">1</Publish> <Publish Event="DoAction" Value="UpdatePropsWithSelectedWebSiteAction">1</Publish> </Control> <Control Id="Cancel" Type="PushButton" X="304" Y="243" Width="56" Height="17" Cancel="yes" Text="Cancel"> <Publish Event="SpawnDialog" Value="CancelDlg">1</Publish> </Control> <Control Id="BannerBitmap" Type="Bitmap" X="0" Y="0" Width="370" Height="44" TabSkip="no" Text="WixUI_Bmp_Banner" /> <Control Id="Description" Type="Text" X="25" Y="23" Width="280" Height="15" Transparent="yes" NoPrefix="yes"> <Text>Configure settings for your Web Server</Text> </Control> <Control Id="BottomLine" Type="Line" X="0" Y="234" Width="370" Height="0" /> <Control Id="Title" Type="Text" X="15" Y="6" Width="200" Height="15" Transparent="yes" NoPrefix="yes"> <Text>{\WixUI_Font_Title}Settings</Text> </Control> <Control Id="BannerLine" Type="Line" X="0" Y="44" Width="370" Height="0" /> </Dialog> </UI>