2010-02-04 83 views
7

Tôi có trình cài đặt được viết bằng Java sử dụng Izpack. Nó hoạt động OK trên Windows XP, tuy nhiên trên Windows 7 nó không thể ghi vào c: \ Program Files. Thật kỳ lạ, khi người dùng chạy trình cài đặt này, tôi có thể tạo các thư mục trong các tệp c: \ program, nhưng không phải từ trình cài đặt.Không thể cài đặt vào c: Program files trên Windows 7

Tôi đang thiếu gì?

+0

Ý anh là gì bởi 'như một người dùng chạy trình cài đặt này, vs 'không phải từ bộ cài đặt riêng của mình'. Trình cài đặt tự gọi như thế nào? –

+0

Ý tôi là, bằng cách sử dụng trình thám hiểm, tôi có thể tạo các tệp và thư mục trong các tệp c: \ program, nhưng theo chương trình, tức là từ trình cài đặt Java này - tôi không thể – Demiurg

+0

Cuối cùng tôi đã giải quyết vấn đề bằng cách làm cho trình cài đặt yêu cầu leo ​​thang đặc quyền thích hợp như được đề xuất bên dưới. – Demiurg

Trả lời

6

để ghi vào đường dẫn này, trình cài đặt sẽ cần phải yêu cầu và được cấp chạy dưới dạng tư cách quản trị viên.

Đối với Java: Chạy dấu nhắc CMD dưới dạng quản trị viên hoặc powershell làm quản trị viên và điều hướng đến thư mục Bin của JAVA .... và chạy java.exe -jar #Toàn dẫn tệp jar của bạn # sẽ nhận được thông tin đó

+0

Tôi đang chạy ứng dụng dưới dạng quản trị viên. Như tôi đã đề cập, tôi có thể tạo tệp và thư mục trong tệp c: \ program khi người dùng chạy trình cài đặt, nhưng trình cài đặt không thể! – Demiurg

+0

Có sự khác biệt lớn giữa việc là người dùng quản trị và chạy một ứng dụng 'Là Quản trị viên'. Nhấp chuột phải vào trình cài đặt và bạn sẽ thấy một biểu tượng mờ nhạt chạy với tư cách quản trị viên bên cạnh trình cài đặt. Chọn tùy chọn đó. – Alex

+3

Chạy dấu nhắc CMD dưới dạng quản trị viên hoặc quản trị viên quyền tác giả và điều hướng đến thư mục Bin của JAVA .... và chạy java.exe -jar #Toàn dẫn tệp jar của bạn # sẽ nhận được tư cách riêng – Alex

1

Bạn cần chạy trình cài đặt dưới dạng quản trị viên. Chỉ quản trị viên mới có thể ghi vào thư mục Program Files. Thông thường khi người dùng cố gắng thực hiện thay đổi, UAC sẽ hỏi bạn có chắc chắn không. Điều này không nhất thiết đúng đối với một chương trình.

+0

Tôi đang chạy nó như là quản trị viên, vui lòng xem ở trên để biết thêm chi tiết – Demiurg

+1

Chạy với tư cách quản trị viên trong Windows Vista và 7 không có nghĩa là chạy với tư cách quản trị viên trong Windows XP. Bạn vẫn có quyền cấp phần mềm cho UAC. – Joel

+0

Ngoài ra, những đặc quyền đó không phải là chuyển tiếp. Nếu chương trình lưu trữ của bạn đã được cấp quyền truy cập UAC, thì theo mặc định, con không phải là. – Joel

1

Bạn đã thử chạy với tùy chọn Quản trị viên ...?

+0

Khi trình cài đặt là tệp .jar, tôi không thể sử dụng "chạy dưới dạng", nhưng một lần nữa, đây không phải là vấn đề - Tôi đang chạy nó với tư cách là quản trị viên – Demiurg

+1

Nếu bạn đăng nhập với tư cách quản trị viên, điều này không có nghĩa là ứng dụng bạn chạy sẽ giành được đặc quyền của quản trị viên. – anthares

+1

Để cụ thể hơn, bạn không phải là quản trị viên. Bạn đang chạy với tư cách là người dùng đặc quyền có thể nâng cấp lên quản trị viên, với xác nhận giao diện người dùng. Ví dụ, bất cứ khi nào bạn tạo một thư mục trong Explorer, bạn sẽ nhận được một lời nhắc xác nhận UAC hỏi xem có ổn không. Không có cách nào để làm việc xung quanh một (không tắt UAC) - và nó không được trang trí kỳ diệu trên tất cả các ứng dụng. Ứng dụng của bạn phải biết về vấn đề này và yêu cầu hệ thống nâng cấp (bật lên hộp thoại UAC và yêu cầu người dùng nếu anh ấy đồng ý với điều đó) bất cứ khi nào bạn cần quyền truy cập "quản trị thực". –

1

Thêm

<run-privileged/> 

đến info phần của installer.xml của bạn.

Ví dụ từ here:

<info> 
    <appname>IzPack</appname> 
    <appversion>4.2.0</appversion> 
    <authors> 
     <author email="" name="Julien Ponge (project founder)"/> 
     <author email="" name="The fantastic IzPack developers and contributors"/> 
    </authors> 
    <url>http://izpack.org/</url> 
    <javaversion>1.5</javaversion> 
    <requiresjdk>no</requiresjdk> 
    <run-privileged condition="izpack.windowsinstall.vista|izpack.macinstall"/> 
    <summarylogfilepath>$INSTALL_PATH/installinfo/Summary.htm</summarylogfilepath> 
</info> 
Các vấn đề liên quan