2011-09-08 23 views
6

Tôi muốn phát hiện xem thư mục đã tồn tại ở vị trí cài đặt tùy chỉnh do người dùng chọn trong GUI hay chưa. Tôi thử như sau:Wix: Cách thực hiện DirectorySearch ở vị trí cài đặt tùy chỉnh

<Property Id="DIRECTORY_PATH"> 
    <DirectorySearch Id="DirectorySearch" Path="[INSTALLDIR]\MyDirectory" /> 
</Property> 

Nhưng điều này không làm việc vì DirectorySearch đang xảy ra trong AppSearch. Trong khi INSTALLDIR được đặt sau trong InstallDirDlg. Vì INSTALLDIR không được đặt trong thời gian cho Tìm kiếm ứng dụng, DIRECTORY_PATH được đặt không chính xác thành "\ MyDirectory".

Tôi đã cố gắng thay đổi khi AppSearch xảy ra với InstallUISequence và InstallExecuteSequence, nhưng nó sẽ chỉ cho phép AppSearch đến trước CostInitialize, không muộn hơn.

Vậy làm cách nào để thực hiện tìm kiếm thư mục tại địa điểm INSTALLDIR đã chọn của người dùng?

Trả lời

3

Nếu bạn chỉ phải chờ sự lựa chọn của người dùng để xác minh thư mục đó, thì DirectorySearch sẽ không thực hiện công việc cho bạn. Bạn sẽ phải tạo tác vụ tùy chỉnh "thuộc tính bộ" ngay sau khi người dùng chọn INSTALLDIR, ví dụ, trên nhấp chuột Tiếp theo của InstallDirDlg.

CẬP NHẬT. Vì vậy, tôi có nghĩa là về cơ bản như sau:

  • khi người dùng được cho các InstallDirDlg của thiết lập của bạn, anh/cô ấy chọn thư mục, được đưa vào tài sản
  • thì InstallDirDlg thoại nên kích hoạt một tùy chỉnh InstallDir hành động trên nút Tiếp theo
  • hành động tùy chỉnh này sẽ nhận giá trị của thuộc tính INSTALLDIR và thực hiện kiểm tra xem INSTALLDIR có chứa MyDirectory
  • nếu không. session["DIRECTORY_PATH"] = session[INSTALLDIR] + "\MyDirectory";
  • khác, DIRECTORY_PATH không được thiết lập (và bạn có thể sử dụng thực tế này trong điều kiện bất kỳ bằng cách kiểm tra NOT DIRECTORY_PATH)

Hy vọng nó làm cho nó rõ ràng hơn.

+0

Lựa chọn của người dùng chỉ xác định vị trí cài đặt, cho dù thư mục con tôi đang tìm "MyDirectory" có tồn tại ở vị trí đó hay không. Nếu không có DirectorySearch, trình cài đặt sẽ biết liệu nó có nên thiết lập thuộc tính không? – Michael

+0

Bạn sẽ phải tự mô phỏng tìm kiếm thư mục. Miễn là DirectorySearch thực xảy ra trong quá trình AppSearch, nó không phù hợp với nhu cầu của bạn. Đó là lý do tại sao tôi trích dẫn hành động "set property" - nó không chỉ thiết lập một thuộc tính, mà còn làm một số logic để tìm hiểu xem thư mục con có tồn tại hay không. –

+0

Tôi nghĩ nhận xét ở trên có vẻ khó hiểu :) Tôi sẽ cập nhật câu trả lời của mình –

0

Hy vọng điều này sẽ giúp bạn.

Nếu bạn đã lưu INSTALLDIR cài đặt trước đó trong sổ đăng ký, bạn có thể tải xuống và tìm kiếm nó. Trong chuỗi Cài đặt giao diện người dùng, vị trí Installtion sẽ trỏ đến vị trí trước đó.

<!-- Set previous install location, if available --> 
<Property Id="INSTALLDIR" Secure="yes"> 
    <RegistrySearch Id="InstallRootRegistry" 
        Type="raw" 
        Root="HKLM" 
        Key="SYSTEM\CurrentControlSet\Control\Session Manager\Environment" 
        Name="INSTALLDIR" /> 
</Property> 

<!-- The property WIXUI_INSTALLDIR must be set for the UI to know which directory to use as default --> 
<Property Id="WIXUI_INSTALLDIR" 
      Value="INSTALLDIR" Secure="yes"/> 
Các vấn đề liên quan