Có thể thay đổi cập nhật URL thành vị trí khác của ứng dụng ClickOnce đã cài đặt không? Nếu vậy, làm thế nào tôi có thể làm điều đó?Thay đổi URL cập nhật cho ứng dụng ClickOnce
Trả lời
Bạn đề cập đến trong nhận xét của mình rằng bạn muốn thay đổi "ở phía khách hàng". Điều này là không thể. Ứng dụng khách của bạn phải có khả năng kiểm tra bản cập nhật tại vị trí trước đó, sau đó sẽ chuyển hướng đến vị trí mới để triển khai tiếp theo ngay lập tức.
Có thể đặt đường dẫn UNC bằng định dạng \\ Máy chủ \ ApplicationName. Vì vậy, bài đăng này Bạn đã liên kết để gợi ý, rằng tôi phải biết chính xác địa điểm đã được cập nhật sẽ được đặt trong mạng nội bộ của khách hàng tại thời điểm tôi xuất bản ứng dụng của tôi? Và trong trường hợp khách hàng có một số thay đổi (một thư mục được đổi tên thành ví dụ) thì cách duy nhất để thay đổi nơi ứng dụng của tôi tìm kiếm các bản cập nhật sẽ là cài đặt mới (với vị trí cập nhật mới), cài đặt lại phiên bản cũ và cài đặt phiên bản mới ? Có đúng không? Không có cách nào để cấu hình đường dẫn cập nhật này từ phía ứng dụng? – Prokurors
Có thể thực hiện thủ thuật. Bạn có thể triển khai nó đến vị trí xuất bản mặc định. (ứng dụng không nên kiểm tra các bản cập nhật). Sau đó, sao chép triển khai của bạn vào máy chủ khách hàng. Chỉ cần cài đặt ứng dụng của bạn trên các máy khách. Trường System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri chứa vị trí và ứng dụng mà ứng dụng được cài đặt từ đó. Nếu bạn biết điều đó, thì bạn có thể thực thi đơn giản url này. Để kiểm tra xem có bản cập nhật hay không, hãy kiểm tra tệp .application vi dùng thử phiên bản.
đây là lớp helper của tôi:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Xml;
namespace MatemanSC.Utility
{
public class ClickOnceUtil
{
Version _UpdateVersion = null;
public string UpdateLocation
{
get
{
return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri;
}
}
public Version AvailableVersion
{
get
{
if (_UpdateVersion == null)
{
_UpdateVersion = new Version("0.0.0.0");
if (System.Deployment.Application.ApplicationDeployment.IsNetworkDeployed)
{
using (XmlReader reader = XmlReader.Create(System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri))
{
//Keep reading until there are no more FieldRef elements
while (reader.ReadToFollowing("assemblyIdentity"))
{
//Extract the value of the Name attribute
string versie = reader.GetAttribute("version");
_UpdateVersion = new Version(versie);
}
}
}
}
return _UpdateVersion;
}
}
public bool UpdateAvailable
{
get
{
return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion < AvailableVersion;
}
}
public string CurrentVersion
{
get
{
return System.Deployment.Application.ApplicationDeployment.CurrentDeployment.CurrentVersion.ToString();
}
}
public void Update()
{
System.Diagnostics.Process.Start(System.Deployment.Application.ApplicationDeployment.CurrentDeployment.UpdateLocation.AbsoluteUri);
Environment.Exit(0);
}
public void CheckAndUpdate()
{
try
{
if (UpdateAvailable)
Update();
}
catch (Exception)
{
}
}
}
}
Và điều này làm thế nào để sử dụng nó:
public partial class App : Application
{
public App()
{
ClickOnceUtil clickonceutil = new ClickOnceUtil();
clickonceutil.CheckAndUpdate();
}
}
Chúc may mắn và Greetings Marcel
Khi bạn muốn thay đổi địa chỉ mà bạn sẽ sử dụng để nâng cấp chương trình, bạn chỉ có thể sử dụng url viết lại tại web.config: chương trình cũ sẽ trỏ đến url cũ, nhưng nó sẽ mang lại chương trình mới, sẽ có url mới .
nơi bạn muốn thay đổi url cập nhật: từ phía máy khách hoặc phía máy chủ? – Cybermaxs
Điều này dường như chi tiết những gì bạn muốn: http://social.msdn.microsoft.com/Forums/en-US/winformssetup/thread/5309f67e-efe4-40b4-b937-aed18cf87155/ –
@ Cybermaxs-Tôi muốn thay đổi từ phía khách hàng. Khách hàng đã cài đặt ứng dụng nhấp chuột và tôi cần thay đổi url kiểm tra cập nhật. –