Tôi đã tìm hiểu về Google để tìm cách xác định đường dẫn cài đặt do người dùng chọn từ trình hướng dẫn cài đặt.Dự án Cài đặt Visual Studio: Nhận Thư mục Mục tiêu
Về cơ bản tôi đang gặp phải sự cố dịch vụ của tôi không thể tạo tệp trong thư mục riêng vì dịch vụ này thiếu quyền thích hợp. Tôi giả định cách chính xác để giải quyết điều này là để đảm bảo rằng bất kỳ tài khoản dịch vụ đang sử dụng được cấp quyền truy cập tệp phù hợp trên thư mục của nó.
Nhưng trước khi tôi thậm chí có thể giải quyết cách đặt quyền thông qua. Net Tôi cần biết thư mục cài đặt. Tôi đang sử dụng một dự án cài đặt trong đó có một lớp cài đặt có chứa một điều khiển ServiceInstaller
là tốt. Cả hai đều có thuộc tính Context
vì vậy tôi đã kiểm tra xem các tham số có sẵn khi sự kiện AfterInstall kích hoạt cho mỗi trình cài đặt tương ứng. Tôi nghĩ lúc đầu tôi sẽ nhìn thấy bộ tài sản TargetDir
nhưng đó không phải là trường hợp. Tuy nhiên, tôi thấy số AssemblyPath
được đặt và trỏ đến tệp thực thi của thư mục thích hợp.
Về cơ bản tôi chỉ muốn chắc chắn rằng đây là phương pháp thích hợp tôi nên sử dụng:
private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)
{
string InstallPath = System.IO.Path.GetDirectoryName(serviceInstaller1.Context.Parameters["AssemblyPath"]);;
}
Bạn cũng phải thêm một khoảng trắng sau dấu "\". Nếu không, bạn có thể nhận được ngoại lệ FileNotFoundException khi cài đặt hoặc gỡ cài đặt. Xem [tại đây] (http://stackoverflow.com/questions/4516256/how-do-i-fix-setup-project-with-custom-action-file-not-found-exception/4522825#4522825) hoặc [tại đây ] (http://stackoverflow.com/questions/8491095/error-1001-using-custom-installer-with-visual-studio-2008). –
Bạn đang sử dụng đoạn văn bản này ở đâu? Lời giải thích của bạn không hoàn toàn rõ ràng với tôi, xin lỗi. Như một đối số dòng lệnh cho dự án? Một nơi nào đó trong mã? Liên kết đến MSDN cũng bị hỏng. Cảm ơn Microsoft! :-) –
Ồ, tôi hiểu rồi. Tôi tìm thấy câu trả lời trong một bài đăng khác: "Trong dự án triển khai của bạn, hãy thêm Hành động tùy chỉnh cho Cài đặt và Cam kết. Đối với thuộc tính CustomActionData cho hành động tùy chỉnh Cài đặt, hãy nhập/Targetdir =" [TARGETDIR] \ "" –