2012-12-07 23 views
6

Tôi đang sử dụng Cài đặt Inno để cài đặt bản cập nhật bản vá cho ứng dụng VB.net của mình nơi tôi phải thay thế tệp DLL và một vài tệp javascript/html cho bản cập nhật. Tuy nhiên, DLL không được cập nhật (nó nằm trong C: \ program files ...) - ngay cả trên các hệ thống XP mà không có UAC nó không được thay thế, nhưng khi tôi tự xóa DLL và chạy lại bản vá, tập tin sẽ được sao chép . Nó không phải là chỉ đọc, và không có đặc quyền UAC/admin có liên quan đến trường hợp XP.Cần ghi đè lên một tệp DLL trong trình cài đặt thiết lập inno - nhưng tệp không được thay thế

Lý do khiến tệp không được sao chép nếu tệp đã tồn tại? Nó được xây dựng trong VS2008 và trong .NET 2.0 - DLL mới có một sự khác biệt ngày và kích thước gần đây quá.

Có cách nào giải quyết sự cố truy cập ghi UAC trên Vista/Win7/8 không? Tôi đoán các bản vá sẽ không bao giờ thành công để thay thế các tập tin trên các hệ thống với UAC trên. Nói rõ cơ sở người dùng của chúng tôi để tắt nó rõ ràng không phải là một lựa chọn.

[EDIT] Tập hợp dll được đóng gói vào setup.exe trong Visual Studio bằng cách chọn nó từ thư mục Release để xây dựng giải pháp. Các thiết lập inno iss [File] phần có điều này:

[Files] 
Source: C:\Visual Studio 2005\Projects\Setup5\Setup5\Debug\setup.exe; DestDir: {app} 
Source: C:\Visual Studio 2005\Projects\Setup5\Setup5\Debug\interact.msi; DestDir: {app} 
[Run] 
Filename: {app}\setup.exe; Flags: runmaximized 
+0

Bạn có thể hiển thị mục nhập của [[Tập tin] 'cho thư viện đó không? Bạn có ý nghĩa gì bởi * "Có cách nào giải quyết vấn đề truy cập ghi UAC trên Vista/Win7/8 không?" *, Bạn nghĩ sao về vấn đề này? – TLama

+0

Lý tưởng nhất là tôi muốn cập nhật bản vá xảy ra mà không cần bất kỳ sự tương tác nào của con người - tức là. Tôi không thể có họ nhấp vào một cuộc đối thoại yêu cầu quyền admin (UAC?) Khi tôi đang cố gắng di chuyển hoặc xóa các tập tin như DLL. – Surge

+0

Nếu bạn định cập nhật/cài đặt các tập tin trong thư mục 'Program Files' trên Windows Vista, bạn chỉ cần yêu cầu quyền quản trị, nếu không bạn không truy cập được lỗi bị từ chối và trong trường hợp này bạn không nên chỉ định rõ ràng ['PrivilegesRequired'] (http://jrsoftware.org/ishelp/topic_setup_privilegesrequired.htm) giá trị chỉ thị (theo mặc định yêu cầu quyền quản trị). – TLama

Trả lời

7

DLL có tài nguyên phiên bản không? DLL mới có phải là phiên bản cao hơn phiên bản cũ không? Theo mặc định, InnoSetup sử dụng tài nguyên phiên bản để xác định xem tệp có nên được thay thế hay không.
Một tùy chọn khác là bạn có thể thêm cờ ignoreversion trong phần [Files] để luôn thay thế tệp đó.

+0

Từ những gì tôi có thể thấy, DLL trong giải pháp thiết lập Visual Studio không có tài nguyên phiên bản. Cảm ơn! – Surge

+1

Chỉ cần tò mò, tại sao bạn xây dựng một giải pháp Visual Studio Setup và sau đó bao gồm cả trong cài đặt InnoSetup? Tại sao không chỉ bao gồm các DLL trực tiếp trong cài đặt InnoSetup hoặc chỉ sử dụng Visual Studio Setup? – mirtheil

+0

Cảm ơn bạn đã hướng dẫn - điều này đã được phát triển bởi một bên thứ ba và tôi đang cố gắng khắc phục các vấn đề về sản xuất. – Surge

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