2011-01-18 27 views
8

Nền: Tôi có trình cài đặt Wix nơi thư mục ảo được tạo trong trang web IIS hiện có. Các thư mục ảo được tạo ra (nó không tồn tại trước khi cài đặt) nhưng trang web IIS nên đã được tạo ra (người dùng chỉ cần chọn một trang web để cài đặt vào trong một ListBox).Đường dẫn vật lý trang web IIS bị trống khi gỡ cài đặt wix

Sự cố: Khi gỡ cài đặt, Đường dẫn vật lý của trang web IIS đã được cài đặt để trống, không có giá trị cho thuộc tính đó. Dưới đây là một phiên bản được bỏ đi của tệp wix chính của tôi. Tôi không chắc chắn lý do tại sao gỡ bỏ cài đặt ảnh hưởng đến trang web IIS, nhưng bất kỳ suy nghĩ được đánh giá cao.

Ghi chú: Tôi đang trên Wix 3.5 và Windows Server 2008 R2, IIS 7.

<Product> 

    <Property Id='WEBSITE_DESCRIPTION'> 
     <RegistrySearch Id='RememberPropertyWEBSITE_DESCRIPTION' Root='HKCU' 
     Key='SOFTWARE\Company\Product' Name='InstalledWebsiteDescription' 
     Type='raw' /> 
    </Property> 

    <Property Id='WEBSITE_PORT'> 
     <RegistrySearch Id='RememberPropertyWEBSITE_PORT' Root='HKCU' 
     Key='SOFTWARE\Company\Product' Name='InstalledWebsitePort' 
     Type='raw' /> 
    </Property> 


    <Component Id='PropertiesToSave' Directory='ApplicationFolder'> 
     <RegistryValue Root='HKCU' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsiteDescription' Value='[WEBSITE_DESCRIPTION]' 
     Type='string' /> 
     <RegistryValue Root='HKCU' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsitePort' Value='[WEBSITE_PORT]' 
     Type='string' /> 

     <RemoveFolder Id='CleanupApplicationFolder' On='uninstall' /> 
    </Component> 


    <Directory Id='TARGETDIR' Name='SourceDir'> 
     <Component Id='TestWebVirtualDirComponent' Guid='12345678-6304-410E-A808-E3585379EADB'> 
     <CreateFolder /> 
     <iis:WebVirtualDir Id='TestWebVirtualDir' Alias='[WEBSITE_VIRTUALDIR]' Directory='TARGETDIR' WebSite='MyWebsite'> 
      <iis:WebApplication Id='TestWebApplication' Name='Test' /> 
     </iis:WebVirtualDir> 
     </Component> 
    </Directory> 

    <iis:WebSite Id="MyWebsite" Description="[WEBSITE_DESCRIPTION]" SiteId="*"> 
     <iis:WebAddress Id="AllUnassigned" Port="[WEBSITE_PORT]" /> 
    </iis:WebSite> 

    <Feature> 
     <ComponentRef Id='TestWebVirtualDirComponent'/> 
     <ComponentRef Id='PropertiesToSave'/> 
    </Feature> 
</Product> 
+0

Tôi đã sử dụng WIX (3.0 trong trường hợp của tôi) cho một cài đặt IIS liên quan, quá, và tôi thấy một vài bất ngờ và ổn định. Trong một số trường hợp, tôi phải sử dụng các hành động tùy chỉnh để làm cho nó hoạt động như mong đợi. – Cheeso

Trả lời

5

WiX IIsExtension công nhận WebSite bởi Mô tả thuộc tính và Cảng thuộc tính của phần tử con WebAddress. Vì vậy, khi bạn cài đặt ứng dụng của mình, bạn đặt WEBSITE_DESCRIPTION và WEBSITE_PORT theo một cách nào đó. Tuy nhiên, khi bạn chạy gỡ cài đặt, các thuộc tính được đề cập không được đặt và bạn sẽ nhận được hành vi mà bạn đã mô tả.

Giải pháp cho điều này là lưu các giá trị thuộc tính bắt buộc vào đăng ký hệ thống và sử dụng phần tử RegistrySearch để đọc các giá trị và đặt thuộc tính thích hợp. Điều này được gọi là mẫu "Remember Property" và được giải thích hoàn hảo bởi Rob Mensching here.

+0

Hi Yan. Tôi thực sự đang làm điều đó, tôi đã sửa đổi mẫu mã ở trên để hiển thị những gì tôi đang làm. Một "Sửa chữa" hoạt động như mong đợi, có một số tôi phải làm "gỡ bỏ cài đặt"? –

+1

Theo mẫu của bạn, tôi cho rằng bạn sẽ mong muốn một thư mục ảo bị xóa khi gỡ cài đặt. Nếu đó là sự thật, bạn cũng nên "ghi nhớ" thuộc tính WEBSITE_VIRTUALDIR. Ngoài ra, nó không có vẻ đáng ngờ và nên hoạt động. Bạn có gặp phải lỗi cụ thể nào khi gỡ cài đặt không? Hoặc nó chỉ đơn giản là lá thư ảo có? –

+0

Hi Yan, vâng, đây là vấn đề. Lưu thư mục ảo đúng cách làm mọi thứ ngay trong vũ trụ. –

0

Bạn phải ghi vào registry cũng [VIRTUALDIR][STSWEBALIAS] tính
cũng như [WEBSITE_DESCRIPTION] và [WEBSITE_PORT].
Đây là giải pháp hoàn chỉnh mà làm việc cho tôi và đội của tôi:

<Property Id='WEBSITE_DESCRIPTION' Value='Default Web Site'> 
    <RegistrySearch Id='RememberPropertyWEBSITE_DESCRIPTION' Root='HKLM' 
    Key='SOFTWARE\Company\Product' Name='InstalledWebsiteDescription' 
    Type='raw' /> 
</Property> 

<Property Id='WEBSITE_PORT' Value='90'> 
    <RegistrySearch Id='RememberPropertyWEBSITE_PORT' Root='HKLM' 
    Key='SOFTWARE\Company\Product' Name='InstalledWebsitePort' 
    Type='raw' /> 
</Property> 

<Property Id='VIRTUALDIR'> 
    <RegistrySearch Id='RememberPropertyWEBSITE_VIRT' Root='HKLM' 
    Key='SOFTWARE\Company\Product' Name='InstalledWebsiteVirtDir' 
    Type='raw' /> 
</Property> 

<Property Id='STSWEBALIAS'> 
    <RegistrySearch Id='RememberPropertyWEBSITE_STS' Root='HKLM' 
    Key='SOFTWARE\Company\Product' Name='InstalledWebsiteSts' 
    Type='raw' /> 
</Property> 


<DirectoryRef Id="TARGETDIR"> 
    <Component Id='PropertiesToSave' Guid='{384F2559-E7CF-40D2-A2D3-347DBFD15711}'> 
    <RegistryValue Root='HKLM' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsiteDescription' Value='[WEBSITE_DESCRIPTION]' 
     Type='string' /> 
    <RegistryValue Root='HKLM' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsitePort' Value='[WEBSITE_PORT]' 
     Type='string' /> 
    <RegistryValue Root='HKLM' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsiteVirtDir' Value='[VIRTUALDIR]' 
     Type='string' /> 
    <RegistryValue Root='HKLM' Key='SOFTWARE\Company\Product' 
     Name='InstalledWebsiteSts' Value='[STSWEBALIAS]' 
     Type='string' /> 
    </Component> 
</DirectoryRef> 

<Feature Id="Saves"> 
    <ComponentRef Id='PropertiesToSave'/> 
</Feature> 
Các vấn đề liên quan