2012-06-13 42 views
18

Tôi không thể tìm thấy bất kỳ thông tin nào về cách sao chép thư mục bằng NSIS ?, tôi biết có một lệnh tệp nhưng có bất kỳ lệnh nào để sao chép thư mục.Sao chép thư mục bằng NSIS.

Trả lời

22

Cú pháp giống nhau cho cả thư mục và tệp, ngoại trừ việc bạn cần chỉ định thư mục bằng cách cung cấp \ ở cuối. File lệnh sao chép thư mục nếu đối số được chỉ định là một thư mục. Ví dụ: bạn có thể làm:

SetOutPath "outputPath" 
File "myDirectory\" #note back slash at the end 

Nhưng bản sao đó chỉ là thư mục cấp cao nhất. Để đệ quy làm điều đó, bạn có /r switch

SetOutPath "outputPath" 
File /nonfatal /a /r "myDirectory\" #note back slash at the end 

mà các bản sao nội dung của myDirectory (nhưng không myDirectory thư mục riêng của mình). /nonfatal bỏ qua mà không có lỗi nếu không có thư mục cụ thể. /a cũng sao chép các thuộc tính tệp. Công tắc /x được sử dụng để loại trừ tệp.

Nếu không,

SetOutPath "outputPath\myDirectory" 
File /nonfatal /a /r "myDirectory\" #note back slash at the end 

bản sao tất cả các nội dung của myDirectory bao gồm myDirectory thư mục để outputPath.

+1

Cảm ơn! Ví dụ cuối cùng dường như không hoạt động ... Để tạo thư mục, tôi phải sử dụng SetOutPath $ INSTDIR \ myDirectory và sau đó Tệp/a/r "myDirectory \" – werner

+0

@nawfal, CẢM ƠN BẠN rất nhiều nhấn mạnh '\' ở cuối. Đó là lái xe cho tôi CRAZY !! Tôi không thấy bất cứ điều gì đề cập đến trong tài liệu của NSIS. – Damian

+0

Quan trọng để nói rằng nó sẽ có một tác dụng phụ như không gói thư mục bên trong trình cài đặt thực thi trên giai đoạn biên dịch. – Andry

4

Tôi đã tìm cách thực hiện, xin lỗi vì sự cố.

nén các tập tin vào một thư mục mà không thể tồn tại trước

CreateDirectory $Installdir\extracting 

SetOutPath $Installdir\extracting 

File Directory\* 
+2

'SetOutPath' đã tạo thư mục và thư mục con được chuyển, do đó, trước tiên hãy gọi CreateDirectory là không cần thiết. – Claudix

3

Các hướng dẫn File chiết xuất tập tin từ trình cài đặt của bạn và CopyFiles bản sao tập tin và/hoặc thư mục đã tồn tại trên hệ thống người dùng cuối cùng (Bạn có thể sử dụng $ EXEDIR nếu bạn cần phải sao chép các tập tin ra khỏi đĩa DVD nơi trình cài đặt của bạn cũng nằm ...)

Các vấn đề liên quan