批處理自動更新檔案部署WinForm應用程式詳解

來源:互聯網
上載者:User

 

先來廢話:

.NET架構的主要目標之一就是簡化部署,為此使用.NET開發的應用程式支援XCOPY部署,這在以前是不可想象的(當然說的是微軟系列)。在.NET之前,安裝一個組件(例如一個COM組件)意味著不僅要把組件複製到適當的目錄,而且還要執行註冊表修改之類的操作。但現在有了.NET,安裝一個組件的全部操作就是將程式集複製到客戶應用程式的bin目錄,由於程式集包含完整的自我描述資訊,應用程式可以立即開始使用程式集。這一切之所以成為可能,是因為編譯器將標識符和中繼資料資訊嵌入到了編譯好的模組之中,而CLR利用這些資訊來裝入程式集的適當版本。標識符包含了裝入和運行模組、尋找程式集引用的其他模組所需的所有資訊。這種安裝也稱為無幹擾(Zero-Impact)安裝,因為系統不會因為修改註冊表、配置組件而受到影響;另外,無幹擾安裝也使得組件卸載操作不會對系統產生任何意外的影響,卸載組件時只要從特定的目錄刪除某些檔案就可以了。

如何進行XCOPY部署呢?

以一個WinForm應用程式為例,在命令列中使用XCOPY命令將必要的檔案複製到用戶端的特定目錄即可。
在命令列中輸入XCOPY/?可以看到如下資訊,這是XCOPY的使用方法:

XCOPY命令選項

XCOPY source [destination] [/A | /M] [/D[:date]] [/P] [/S [/E]] [/V] [/W]
                           [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                           [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
                           [/EXCLUDE:file1[+file2][+file3]...]
  source       指定要複製的檔案。
  destination  指定新檔案的位置和/或名稱。
  /A           只複製有存檔屬性集的檔案,
               但不改變屬性。
  /M           只複製有存檔屬性集的檔案,
               並關閉存檔屬性。
  /D:m-d-y     複製在指定日期或指定日期以後更改的檔案。
               如果沒有提供日期,只複製那些源時間
               比目標時間新的檔案。
  /EXCLUDE:file1[+file2][+file3]...
               指定含有字串的檔案清單。每一個字串
               必須在檔案的單獨行中。如果有任何
               字串與要被複製的檔案的絕對路徑
               相符,那個檔案將不會得到複製。
               例如,指定如 \obj\ 或 .obj 的字串會排除
               目錄 obj 下面的所有檔案或帶有
               .obj 副檔名的檔案。
  /P           建立每個目標檔案前提示。
  /S           複製目錄和子目錄,除了空的。
  /E           複製目錄和子目錄,包括空的。
               與 /S /E 相同。可以用來修改 /T。
  /V           驗證每個新檔案。
  /W           提示您在複製前按鍵。
  /C           即使有錯誤,也繼續複製。
  /I           如果目標不存在,又在複製一個以上的檔案,
               則假定目標一定是一個目錄。
  /Q           複製時不顯示檔案名稱。
  /F           複製時顯示完整的源和目標檔案名。
  /L           顯示要複製的檔案。
  /G           允許將沒有經過加密的檔案複製到
               不支援加密的目標。
  /H           也複製隱藏和系統檔案。
  /R           覆蓋唯讀檔案。
  /T           建立目錄結構,但不複製檔案。
               不包括空目錄或子目錄。/T /E 包括
               空目錄和子目錄。
  /U           只複製已經存在於目標中的檔案。
  /K           複製屬性。一般的 Xcopy 會重設唯讀屬性。
  /N           用產生的短名複製。
  /O           複製檔案所有權和 ACL 資訊。
  /X           複製檔案審核設定(隱含 /O)。
  /Y           複製檔案審核設定(隱含 /O)。
               現存目標檔案。
  /-Y          導致提示以確認改寫一個
               現存目標檔案。
  /Z            用重新啟動模式複製網路檔案。


包含XCOPY命令的批次檔的實際應用:

在開發.NET WinForm應用程式時,如何在區域網路內部部署應用程式?使用包含XCOPY命令的批次檔也許是最方便的方法,在用戶端機器上建立批次檔還可以實現軟體的自動更新功能,下面的例子即實現用戶端的自動更新。有一個小問題先解決以下,用戶端機器的環境設定千差萬別,作業系統也可能從Win9X到Win2003都有,從用戶端機器訪問伺服器需要輸入使用者名稱和密碼,有的甚至無法儲存該使用者名稱密碼,這時候怎麼辦?需要在批次檔中啟用到伺服器的網路連接,這時候可以利用IPC$(注意IPC$是NT/2000後才有的功能)。IPC$(Internet Process Connection)是共用"具名管道"的資源,它是為了讓處理序間通訊而開放的具名管道,通過提供可信任的使用者名稱和口令,串連雙方可以建立安全的通道並以此通道進行加密資料的交換,從而實現對遠端電腦的訪問。可以使用net use \\(Server IP或Server Name)\ipc$ password /user:user來建立到伺服器(Server IP或Server Name)的串連,但是應該注意的一點是,使用IPC$在同一時間內,兩個IP之間只允許建立一個串連,所以在使用該命令建立串連之前最好使用net use * /del刪除可能存在的到伺服器的串連。下面是一個完整的批次檔:

完整的批次檔樣本

@ECHO ————————————————————
@ECHO 開始準備更新……
@ECHO ————————————————————
@ECHO 刪除到伺服器的所有串連……
@NET USE * /del /Y
@ECHO ————————————————————
@ECHO 啟用到伺服器的串連……
@NET USE \\waxdoll\ipc$ password /user:user
@ECHO ————————————————————
@ECHO 正準備複製檔案,請稍候……
@ECHO ————————————————————
@XCOPY \\waxdoll\Debug E:\WinForm /Y/E
@ECHO ————————————————————
@ECHO 更新完成!
@ECHO ————————————————————
@Pause

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.