Thay đổi cài đặt ClickOnce tùy thuộc vào cấu hình bản dựng đã chọn (chỉ phiên bản .NET Framework)

Trang Cập Nhật :
Ngày tạo trang :

môi trường

khuôn khổ
  • Windows Forms (.NET Framework) nói chung
  • WPF (.NET Framework) nói chung

tiền đề

Nội dung của các mẹo này là các giả định dự án cho .NET Framework. Trong trường hợp .NET (Core), bạn có thể đặt cài đặt xuất bản ClickOnce trong đơn vị cấu hình xây dựng, vì vậy vui lòng xuất bản như bình thường.

Nó cũng giả định rằng bạn có đủ kiến thức để sử dụng ClickOnce bình thường.

Lúc đầu

Bởi vì một dự án .NET Framework có thể chỉ có một thiết đặt xuất bản ClickOnce, Ví dụ: để xuất bản với các tùy chọn cài đặt khác nhau trong bản dựng Debug và bản dựng Bản phát hành, bạn phải thay đổi cài đặt theo cách thủ công mỗi lần trước khi xuất bản.

Bạn có thể có hai cài đặt bằng cách nhóm các dự án thành một DLL và tạo hai dự án riêng biệt để xuất bản. Bạn sẽ có cùng một cấu hình hai lần và nếu có các tệp tài nguyên cần thiết để xuất bản, bạn phải có hai trong số chúng cùng một lúc, vì vậy việc quản lý sẽ rất rắc rối.

Phần này mô tả cách tạo tệp bó (.bat) bao nhiêu cài đặt bạn cần và xuất bản ClickOnce.

Cấu hình ClickOnce

Lần này, "Vị trí thư mục công cộng" và "URL thư mục cài đặt" đã được tách ra cho "Gỡ lỗi xây dựng" và "Phát hành xây dựng". Các cài đặt khác được tạo với chính sách làm cho chúng trở nên phổ biến. Các tham số khác có thể tách biệt, nhưng có thể cồng kềnh khi giữ các "tệp ứng dụng" và "điều kiện tiên quyết" riêng biệt.

Đầu tiên, mở dự án và nhập cài đặt ClickOnce của bạn như bình thường. Nội dung đầu vào được đặt thành các tham số được phát hành bởi Debug, nhưng bất cứ điều gì khác ngoài phần chung là tốt miễn là nó không gây ra lỗi.

Sau đây là một ví dụ về cấu hình:

Khi bạn đã nhập, hãy lưu dự án.

Tạo tệp .bat để xuất bản ClickOnce

Vì nó được cấp lệnh, nó có thể được thực thi trên các phương tiện khác như PowerShell, nhưng lần này nó được tạo dưới dạng tệp BAT.

Bạn có thể tạo tệp ở bất cứ đâu, nhưng vì mục đích đơn giản, tôi sẽ tạo nó ở vị trí của tệp giải pháp (.sln). Vì nó là một tệp BAT, mã hóa ký tự là Shift-JIS. PS1 có thể là UTF-8 (BOM).

Mở tệp BAT trong trình soạn thảo văn bản và nhập: Lưu ý rằng PowerShell có thể xử lý thoát khác nhau.

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

Dòng đầu tiên trỏ đến vị trí của "Dấu nhắc lệnh dành cho nhà phát triển". Đường dẫn này phụ thuộc vào phiên bản Visual Studio bạn đang cài đặt.

Mỗi phần của đường dẫn phụ thuộc vào các điều kiện sau:

Tập tin chương trình
Điều kiện đường dẫn
Tập tin chương trình
  • Nếu bạn đang sử dụng hệ điều hành 32 bit
  • Nếu bạn đang sử dụng phiên bản 64-bit của Visual Studio trên hệ điều hành 64-bit
Tệp chương trình (x86)
  • Nếu bạn đang sử dụng phiên bản 32-bit của Visual Studio trên hệ điều hành 64-bit
2022
Nó phụ thuộc vào phiên bản Visual Studio bạn đang cài đặt.
Cộng đồng
Nó phụ thuộc vào phiên bản Visual Studio bạn đang cài đặt. "Cộng đồng", "Chuyên nghiệp", "Doanh nghiệp", v.v. sẽ được nhập.

Dòng thứ hai di chuyển thư mục hiện tại đến vị trí của tệp BAT.

Dòng thứ ba là lệnh xử lý bản dựng ClickOnce. Ý nghĩa của mỗi tham số như sau.

mô tả tên tham số
msxây dựng Một lệnh thực thi quá trình xây dựng. Bắt buộc và được viết trước.
ClickOnceBuildCấu hình.sln Mô tả tên tệp của giải pháp sẽ được xây dựng.
/t:Publish Cho biết quá trình xây dựng ClickOnce.
/p:Configuration=Debug Chỉ định cấu hình bản dựng mà bạn đã đặt cho giải pháp của mình. Nếu bạn muốn thay đổi cấu hình gỡ lỗi sẽ được xây dựng, hãy thay đổi văn bản trong phần "Gỡ lỗi".
/p:PublishUrl="publish\Debug\\" Ghi đè giá trị của "Vị trí thư mục công cộng" trên màn hình xuất bản Visual Studio bằng chuỗi được chỉ định và thực thi nó.
/p:InstallUrl="\\xxxxServer\publish_Debug\\" Ghi đè giá trị của "URL thư mục cài đặt" trên màn hình xuất bản Visual Studio bằng chuỗi được chỉ định và thực thi nó.

Một số tham số đã được trích xuất, nhưng hãy xem các liên kết sau để biết các tham số khác:

Để làm ví dụ lần này, chúng ta sẽ thay đổi các tham số publishing của ClickOnce trong mỗi build debug và Release, vì vậy chúng ta sẽ tạo nó như sau.

Được xuất bản bởi ClickOnceDebug.bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

ClickOnceRelease đã xuất bản .bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\"

ClickOnce xuất bản thực thi tệp BAT

Hãy thử chạy từng tệp BAT.

Dấu nhắc lệnh được khởi chạy và quá trình xây dựng bắt đầu.

Trên thực tế, tệp BAT được tạo lần này chỉ là một quá trình cho đến khi xây dựng, vì vậy tệp không được tạo ở "vị trí thư mục công cộng". Các tập tin cần thiết để xuất bản đã được tạo ra. Ví dụ: trong trường hợp gỡ lỗi bản dựng, bạn sẽ có một tệp trong đường dẫn "< đường dẫn thư mục dự án >\bin\Debug\app.publish\". Sao chép các tệp này vào "URL của thư mục cài đặt" và nó sẽ hoạt động chính xác như ClickOnce.

Xuất bản đến vị trí thư mục công cộng (nếu đích là thư mục mà bạn có quyền truy cập trực tiếp vào)

Trang web sau đây được sử dụng làm tài liệu tham khảo cho phần này.

Khu vực này không liên quan trực tiếp đến việc xử lý ClickOnce, vì vậy vui lòng tham khảo trang web trên để được giải thích chi tiết.

Đầu tiên, mở tệp dự án (.csproj) trong trình soạn thảo văn bản. Nó không phải là một tập tin giải pháp.

Bên trong là một cấu trúc XML và nếu bạn cuộn xuống dưới cùng, hãy </Project> thêm đoạn mã sau vào dòng phía trên nó. Nếu đó là một quá trình tiền đề sao chép tệp, nội dung được cố định, nhưng phần của là CopyPublishedApplication tùy ý. Bạn sẽ sử dụng tên này sau.

<!-- ここから ClickOnce の発行処理 -->
<Target Name="CopyPublishedApplication">
  <ItemGroup>
    <MySourceFiles Include="$(PublishDir)**\*.*" Exclude="$(PublishDir)$(AssemblyName).exe" />
  </ItemGroup>
  <PropertyGroup>
    <AppricationDir>$(_DeploymentApplicationDir.Substring($(PublishDir.Length)))</AppricationDir>
  </PropertyGroup>
  <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(PublishUrl)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!-- ここまで ClickOnce の発行処理 -->

Lưu nó khi bạn đã nhập nó.

Sau đó, mở từng tệp BAT và thêm vào các /t:CopyPublishedApplication tham số msbuild. CopyPublishedApplication là cái tên tôi đã đặt cho bạn trước đó.

ClickOnceDebug xuất bản.bat (ví dụ)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

Khi bạn chạy tệp BAT, bạn có thể thấy rằng tệp được sao chép vào Vị trí thư mục công cộng. Tại thời điểm này, không có < tên chương trình >.exe tệp, nhưng nó là không cần thiết vì ban đầu nó được bao gồm trong thiết lập.exe.

bổ sung

Nếu có nhiều dự án trong giải pháp, hãy chạy CopyPublishedApplication cho tất cả các dự án. Trong hầu hết các trường hợp, nó chỉ được đặt thành dự án exe, vì vậy một lỗi sẽ được hiển thị khi chạy trong CopyPublishedApplication một dự án khác, Nó là an toàn để bỏ qua nó vì nó chỉ hiển thị một thông báo.

Xuất bản lên vị trí thư mục công cộng (đối với FTP)

Tôi chưa thử nó, nhưng bạn có thể muốn tham khảo các trang web sau.

Những điều khác cần ghi nhớ