2010-09-13 9 views
5

Próbuję zainstalować aplikację internetową i natknąłem się na to pytanie: Using WiX to create an IIS virtual directory. Kiedy próbuję dostosować to do mojej własnej aplikacji, pojawia się błąd: Instalowanie aplikacji internetowej za pomocą Wix

W:\projectlocation\IssInstallationComponents.wxs(6,0): error LGHT0204: ICE18: KeyPath for Component: 'SiteInstallationComponent' is Directory: 'WEBDIRECTORY'. The Directory/Component pair must be listed in the CreateFolders table.

Utknąłem próbując to zrozumieć. Oto, co mam w pliku, którego dotyczy problem:

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:iis="http://schemas.microsoft.com/wix/IIsExtension"> 
    <Fragment> 
    <DirectoryRef Id="WEBDIRECTORY"> 
     <Component Id="SiteInstallationComponent" Guid="MY GUID"> 
      <iis:WebVirtualDir Id="ProductVirtualDirectory" Alias="[PRODUCTVERSION]" Directory="WEBDIRECTORY" WebSite="DefaultWebSite"/> 
     </Component> 
    </DirectoryRef> 

    <iis:WebSite Id='DefaultWebSite' Description='Default Web Site' Directory='WEBDIRECTORY'> 
     <iis:WebAddress Id="AllUnassigned" Port="80" /> 
    </iis:WebSite> 
    </Fragment> 
</Wix> 

Kilka uwag na moim przykładzie. Po pierwsze, wiem, że identyfikator GUID jest nieprawidłowy, usunąłem go z powyższego przykładu, aby nie został zaindeksowany przez google i ponownie użyty przez kogoś, kto szuka czegoś podobnego. W moim kodzie mam prawidłowy identyfikator GUID. Zmieniłem również nazwę produktu na "Produkt", aby uniknąć problemów z adresem IP.

Jakieś pomysły dotyczące tego, co muszę zrobić, aby ten kod zadziałał?

+0

Tylko uwaga, że ​​wartość GUID: 'Guid =„PUT-GUID-TU”' jest ważna, a konkretnie na przykład – Paddy

Odpowiedz

12

westchnienie

Ok, poszedłem kopanie przez interwebs i znalazł wątku: http://www.mail-archive.com/[email protected]/msg03483.html

Zasadniczo muszę zmienić mój składnik tak, że wygląda tak:

<Component Id="SiteInstallationComponent" Guid="MY GUID"> 
     <CreateFolder /> 
     <iis:WebVirtualDir Id="ProductVirtualDirectory" Alias="[PRODUCTVERSION]" Directory="WEBDIRECTORY" WebSite="DefaultWebSite"/> 
    </Component> 

Uwielbiam Wix, ale czasami doprowadza mnie to do szału.

+0

podziel się wrażeniem :-) – kroonwijk

2

Myślałem, że dodam trochę do tego. W moim przypadku musiałem zmodyfikować plik konfiguracyjny jako część łaty z akcją XmlConfig. Wpadłem na pierwotny problem, a także próbowałem obejść go, po prostu wtykając w to element CreateFolder. Ale jest z tym problem. Jeśli twój komponent jest częścią łaty, umieszczenie w nim wpisu CreateFolder sprawia, że ​​jest to not uninstallable. Oznacza to, że nie można wycofać poprawki.

W efekcie powstało inne KeyPath dla komponentu. Dałem mu klucz rejestru jako KeyPath i przestał zawracać mi głowę o wpisie CreateFolder. Oznacza to, że zrobi to, co chcesz, aby zainstalować i odinstalować i użyć klucza rejestru, który podałeś, aby śledzić, czy komponent jest zainstalowany.

<RegistryKey Root="HKLM" Key="[REGISTRYKEY]\Settings\[TITLE]" Action="createAndRemoveOnUninstall"> 
    <RegistryValue Action="write" Type="integer" Name="MACHINEMEMORYLIMIT" Value="1" KeyPath="yes"/> 
</RegistryKey> 

(W tym przypadku klucz rejestru i tytuł są dwie właściwości mijaliśmy do instalatora)

Powiązane problemy