Để trả lời câu hỏi đầu tiên, về mặt kỹ thuật, bạn có thể đặt tệp ở bất cứ đâu bạn muốn, tuy nhiên bạn sẽ phải tự viết mã nó, vì vị trí mặc định mà tệp đi đến là nơi đầu tiên trong hai ví dụ của bạn. ( liên kết đến cách tự làm )
Đối với câu hỏi thứ hai, nó phụ thuộc vào cách bạn triển khai ứng dụng. Nếu bạn triển khai qua .msi, thì có hai hàm băm trong thuộc tính của dự án thiết lập (mà msi được xây dựng từ đó), 'mã nâng cấp' và 'mã sản phẩm'. Những điều này xác định cách msi có thể được cài đặt và nếu nó nâng cấp, ghi đè hoặc cài đặt bên cạnh bất kỳ phiên bản nào khác của cùng một ứng dụng.
Ví dụ: nếu bạn có hai phiên bản phần mềm của mình và chúng có mã 'nâng cấp' khác nhau, thì đối với windows, chúng là những phần mềm hoàn toàn khác nhau bất kể tên là gì. Tuy nhiên, nếu mã 'nâng cấp' giống nhau, nhưng mã 'sản phẩm' khác thì khi bạn cố gắng cài đặt lần thứ 2, msi sẽ hỏi bạn có muốn nâng cấp hay không, lúc đó nó phải sao chép các giá trị từ cấu hình cũ sang cấu hình mới. Nếu cả hai giá trị đều giống nhau và số phiên bản không thay đổi thì cấu hình mới sẽ ở cùng vị trí với cấu hình cũ và nó sẽ không phải làm gì cả. Tài liệu MSDN
ClickOnce hơi khác một chút, vì nó dựa nhiều hơn vào phiên bản ClickOnce # và đường dẫn URL, tuy nhiên, tôi nhận thấy rằng miễn là bạn tiếp tục 'Xuất bản' lên cùng một vị trí, phiên bản mới của ứng dụng sẽ tiếp tục sử dụng cấu hình hiện có. ( liên kết đến cách ClickOnce xử lý các bản cập nhật )
Tôi cũng biết có một cách để hợp nhất các cấu hình theo cách thủ công trong quá trình cài đặt msi bằng cách sử dụng các tập lệnh cài đặt tùy chỉnh, nhưng tôi không nhớ các bước chính xác để thực hiện điều đó ... (xem liên kết này để biết cách thực hiện với web. cấu hình)