2009-07-30 39 views
26

Chúng tôi có một số triển khai của cùng một hội đồng với các tệp cấu hình khác nhau cho các môi trường khác nhau. Chúng tôi gói những thứ này để tách riêng các triển khai ClickOnce với các Bản sắc triển khai khác nhau (Program_ENV1, Program_ENV2, v.v.).Nhiều cài đặt ClickOnce có Bản sắc triển khai khác nhau, nhưng cùng một Mã nhận dạng ứng dụng

Nhận dạng ứng dụng là Program.exe cho tất cả chúng, bởi vì chúng tôi có một thành phần của bên thứ ba yêu cầu thực thi bằng cách sử dụng nó để có cùng tên như được biên dịch.

Khi chúng tôi muốn có nhiều lượt cài đặt cùng một số phiên bản trên cùng một máy (để thử nghiệm), chúng tôi gặp phải lỗi khi cài đặt có thứ gì đó có cùng danh tính ứng dụng đã tồn tại.

Chúng tôi không muốn tạo các bản dựng riêng biệt với số phiên bản mới cho mỗi lần triển khai (QA đã đăng xuất trên phiên bản X.X.X.45, chứ không phải phiên bản X.X.X.46).

Có cách nào khác xung quanh vấn đề này không?

Trả lời

1

Thử sử dụng MageUI. Mở tệp kê khai triển khai của bạn (tệp kê khai có đuôi .application). Chọn "Tên" từ danh sách ở bên trái và chỉnh sửa hộp văn bản "Tên". Sau đó chọn "Mô tả" từ danh sách và chỉnh sửa trường "Sản phẩm". Bằng cách đó, bạn sẽ có thể phân biệt các cài đặt khác nhau của mình trên menu bắt đầu và trong các chương trình thêm/xóa.

Lưu thay đổi của bạn, ký lại bản kê khai và bạn nên làm tốt.

+1

Tên hiển thị đã khác nhau đối với môi trường khác nhau triển khai. Vấn đề này là họ có cùng một bản sắc ứng dụng và ClickOnce không cho phép chúng được cài đặt cạnh nhau trên cùng một máy. – Karg

+0

Bạn có thực sự thử giải pháp của tôi không? Đặt thuộc tính "Tên" thông qua MageUI thay đổi Nhận dạng ứng dụng của bạn và cho phép nhiều phiên bản ứng dụng của bạn được cài đặt song song. Nếu tên hiển thị của bạn đã khác, thì bạn không cần phải thay đổi thuộc tính "Mô tả". – codeConcussion

+0

@codeConcussion, tôi đã làm theo các bước của bạn. Nhưng tên vẫn được cập nhật không hiển thị khi bắt đầu và thêm/xóa chương trình. Có suy nghĩ gì không? Cảm ơn. –

16

Để chạy phiên bản đồng thời của ứng dụng ClickOnce, bạn phải thay đổi AssemblyName và bạn nên thay đổi ProductName trong thuộc tính Publish, vì vậy bạn có thể biết trong menu bắt đầu cái nào.

Click here to see how to Install Multiple Versions Concurrently

+0

Video trên trang web không hoạt động nữa. –

1

Karg, nếu bạn sử dụng MageUI bạn có thể thay đổi ApplicationIdentity và chạy một số phiên bản đã xuất bản của cùng một ứng dụng cùng một lúc.

3

Tôi đã sử dụng tùy chọn -u -Update để tạo Triển khai mới cho QA dựa trên Sản xuất.

Dưới đây là các bước tôi đã làm để thử nghiệm một xác minh

  1. tạo một ứng dụng WPF đơn giản
  2. sao chép mage.exe cho dự án kể từ Visual Studio không thể giải quyết nó ở thời gian xây dựng
  3. gia tăng các văn bản dưới đây để bài của dự án xây dựng

cd "$ (TargetDir)"

012.

"$ (ProjectDir) mage.exe" -New Ứng dụng -Name $ (ProjectName) -p msil -TrustLevel FullTrust -Phiên bản 1.0.0.0 -FromDirectory. -ToFile ". \ $ (TargetFileName) .manifest"

"$ (ProjectDir) mage.exe" -New Triển khai -Cài đặt sai -Name $ (ProjectName) -p msil -Phiên bản 1.0.0.0 -AppManifest ". \ $ (TargetFileName) .manifest "-ToFile". \ $ (TargetName) .ứng dụng "

" $ (ProjectDir) mage.exe "-Update". \ $ (TargetName) .application "-Cài đặt sai -Name $ (ProjectName) .QA -p msil -Phiên bản 1.0.0.0 -AppManifest ". \ $ (TargetFileName) .manifest" -ToFile ".\ $ (TargetName) .QA.application"

tôi cần phải thay đổi để các "$ (TargetDir)" qua cd "$ (TargetDir)"mage danh bạ quá trình wouln't và filepaths một cách chính xác khi tôi cho nó con đường với không gian được bao bọc trong dấu ngoặc kép. để khắc phục điều đó, tôi đặt thư mục hiện hành đến vị trí của nơi các tập tin được xây dựng để.

dòng thứ 2 tạo file manifest

Dòng thứ 3 tạo ra Productio n tệp triển khai.

Dòng thứ tư tạo tệp triển khai QA từ tệp triển khai sản xuất. (LƯU Ý: tôi thêm QA đến tập tin triển khai và Tên ứng dụng.)

Dòng thứ 4 gây ra một tập tin ứng dụng thứ 2 để tạo ra. Khi cả hai ứng dụng được chạy, chúng sẽ có cùng một tệp nhị phân nhưng ApplicationDeployment.UpdateLocation sẽ khác nhau cho mỗi ứng dụng. Một sẽ có tên tệp $ (TargetName) .ứng dụng và cái còn lại sẽ có tên tệp $ (TargetName) .QA.application. Trong mã của tôi, tôi có thể sử dụng để xác định 'bản' của ứng dụng được chạy (QA hoặc Sản)

+0

Tôi đã tìm thấy vấn đề với các đường dẫn thư mục và đường dẫn thư mục ... Nó không giống như dấu gạch chéo. Điều này có thể được cố định bằng cách thêm dấu chấm ở cuối E.x .: Nó sẽ hoạt động với "C: \ Foo \ Bar \." nhưng không phải "C: \ Foo \ Bar \" –

+0

Bất kỳ ý tưởng nào về cách làm việc này với ứng dụng ClickOnce đã ký? Tôi đang cố gắng hoàn thành nó, nhưng dường như không dễ dàng ... –

-1

Đối với mỗi môi trường, giữ tên lắp ráp và tên sản phẩm riêng biệt với postfix của tên môi trường. Bên cạnh đó, tạo ra một GUID cho từng môi trường, và thêm nó vào AssemblyInfo.cs, ví dụ:

[assembly: GuidAttribute("FA380FBE-11B0-406E-88D3-AF40BE93F7D6")] 

này sau đó làm cho nó có thể chạy cùng một ứng dụng từ các trang web ClickOnce riêng biệt, từng có một cắt ngắn tương ứng vào tên sản phẩm.

+0

Câu trả lời hữu ích, nhưng nó không trả lời câu hỏi ban đầu: "Nhận dạng ứng dụng là Program.exe cho tất cả chúng bởi vì chúng tôi có thành phần của bên thứ ba yêu cầu thực thi bằng cách sử dụng nó để có cùng tên như được biên dịch. ". Downvoting do đó. –

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