[VSTS][ClickOnce] 部署 ClickOnce 桌面應用程式到 Azure VM

部署到 Azure VM 麻煩了一些,主要都是安全性上的設定,囉嗦了點,沒甚麼大礙,FTP 這次選用的是 FileZilla Server,版控則是用 GitHub


開發環境

  • Azure VM Windows Server 2016
  • GitHub
  • FileZilla Server

開始之前

產生 HTML

MsBuild 發行 ClickOnce 不會產生HTML,參考以下連結解決該問題
https://dotblogs.com.tw/yc421206/2018/03/13/clickonce_msbuild_generate_html_page

Azure VM 入口網站的網路設定

 

VM 內的防火牆設定

允許 FileZilla Server 應用程式

 

FileZilla Server

這網路上很多安裝教學,自己搜尋一下應該很多,我就跳過了。

我在這裡打開了 Passive mode 的 50001-50003,跟 Azure 入口網站的設定一樣


設定 VSTS Build

Get sources

Visual Studio Build

  • 建置需要的的方案
  • 建置 ClickOnce,MSBuild Arguments 如下

/target:publish /p:MapFileExtensions=true /p:TrustUrlParameters=true /p:UseApplicationTrust=true /p:CreateDesktopShortcut=true /p:BootstrapperEnabled=true /p:IsWebBootstrapper=true /p:InstallFrom=Web /p:UpdateEnabled=false /p:ApplicationVersion=$(Build.BuildNumber) /p:TargetCulture=$(ClickOnce.TargetCulture) /p:ProductName=$(ClickOnce.ProductName) /p:PublisherName=$(ClickOnce.PublisherName) /p:InstallUrl=$(ClickOnce.InstallUrl)

 

 

參數

參數很多,換成自己的

Copy Files

過濾出 app.publish 資料夾必要的檔案,然後複製到 Build.BinariesDirectory

**\app.publish\**\*.deploy
**\app.publish\**\*.manifest
**\app.publish\**\*.htm
**\app.publish\**\setup.exe
**\app.publish\**\*.application

 

Archive Files

壓縮 app.publish 資料夾,然後放到 Build.ArtifactStagingDirectory

這裡又多跑了一次 Build,因為上一個 Build 用了 /target:publish,相關專案的 *.dll 並不會產生,測試不會跑,所以我再跑一次沒有帶參數的

 

Publish Build Artifacts

Build 完後就把檔案放到 Server 存放起來,等一下要給 Release 用

完成之後就開始跑...


VSTS Release

Release 最重要的就是選 Artifacts,它會從 Server (VSTS/TFS) 拿成品

 

Extract Files

解壓縮

 

FTP Upload

用 FTP 上傳成品,記得 Preserve file paths 要勾起來

 

最後,完成的結果長這樣

謝謝觀賞

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2022 .NET

Image result for microsoft+mvp+logo