2010-09-15 8 views
0

Je crée un programme d'installation d'application Web à l'aide de WiX. Je souhaite autoriser l'utilisateur à sélectionner le site Web à partir d'une liste de sites sur le serveur IIS, puis à installer l'application dans un sous-répertoire du dossier racine de ce site Web.Comment définir dynamiquement un dossier d'installation MSI

J'ai terminé la partie "Sélectionner un site Web". J'ai une action personnalisée qui définit un ensemble de propriétés basées sur le site sélectionné. L'une de ces propriétés (WEB_SITE_ROOT_PHYSICAL_PATH) est le chemin d'accès au dossier racine du site Web.

Toutefois, je ne parviens pas à installer l'application sur ce chemin.

Ma structure de répertoire est la suivante:

<Directory Id="TARGETDIR" Name="SourceDir"> 
    <Directory Id="IIS_WEB_ROOT"> 
    <Directory Id="WEB_SITE_ROOT" Name="."> 
     <Directory Id="INSTALLLOCATION" Name="$(var.ProductName)"> 

IIS_WEB_ROOT est défini comme:

<Property Id="IIS_WEB_ROOT"> 
    <RegistrySearch Id="Search" Root="HKLM" Key="Software\Microsoft\InetStp" Name="PathWWWRoot" Type="raw" /> 
</Property> 

WEB_SITE_ROOT_PHYSICAL_PATH est réglé sur WEB_SITE_ROOT, comme suit:

<Property Id="WEB_SITE_ROOT_PHYSICAL_PATH" Value="WEB_SITE_ROOT"/> 

Le choix du site web La boîte de dialogue s'affiche avant la boîte de dialogue du dossier d'installation. La boîte de dialogue de dossier d'installation utilise la « propriété standard » suivante:

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION"/> 

Le résultat de tout cela est que l'application est installée dans le dossier racine Web IIS - pas le site Web dossier racine. Je ne suis pas sûr comment faire pour que mon dossier d'installation soit défini à ma propriété WEB_SITE_ROOT_PHYSICAL_PATH définie dynamiquement. J'ai besoin de quelques indications dans la bonne direction. Ai-je besoin d'une autre action personnalisée pour définir le dossier d'installation après la définition de la propriété WEB_SITE_ROOT_PHYSICAL_PATH? Si c'est le cas, comment dois-je régler ceci en premier après la fin de la boîte de dialogue de sélection du site Web? Ou, ai-je tous les morceaux, mais je ne les ai pas câblés correctement.

Répondre

1

Pour définir la propriété à la valeur d'une autre propriété, vous devez auteur d'une action personnalisée:

<CustomAction Property="WEB_SITE_ROOT_PHYSICAL_PATH" Value="[WEB_SITE_ROOT]" /> 

Bien sûr, vous devez planifier cette action après est définie la propriété WEB_SITE_ROOT d'origine.

Espérons que cela aide.

+0

Est-ce que cela ne va pas WEB_SITE_ROOT_PHYSICAL_PATH = WEB_SITE_ROOT? J'ai besoin de l'inverse. Et, si je les change, WiX me dit que je dois lancer l'action avant CostFinalize, car WEB_SITE_ROOT est un répertoire. Cependant, je dois attendre jusqu'à ce que l'utilisateur sélectionne le site Web dans la boîte de dialogue personnalisée. – dommer

+0

Ah, alors vous devriez probablement le réécrire comme ceci (notez 'Directory' au lieu de 'Property'): –

+0

Questions connexes