2017年3月12日 星期日

[Visual Studio 2017]建立離線安裝(Offline Install)包

「工欲善其事,必先利其器」作為.Net 開發者來說最大的利器就是Visual Studio。

最近Visual Studio剛過完20歲週年並且發佈了最新版本VS 2017,當然要第一時間來試試看到底可以對開發增加多少幫助,這個時候會發現,怎麼都找不到離線安裝的版本了呢?

這篇將會介紹如何建立離線安裝版本的安裝檔。

Visual Studio 的安裝方式

現在軟體開發講究都是快速Release,這個從VS近年來的更新速度完全看的出來,為了趕上這些迭代更新的速度,VS的安裝方式也越來越不一樣。

從早期的光碟方式,到後來變成下載ISO檔案居多,最後到完全透過一個exe檔案邊安裝邊下載的模式 (VS 2017)。

透過EXE邊下載邊安裝好處是未來有更新任何部分,可以使用同一個exe來執行更新(想一下如果要快速迭代更新要建立多少個ISO檔案),但是壞處是如果要裝在一個網路速度很慢或者沒有網路環境的地方,就gg了。

幸好雖然VS 2017只有提供exe安裝方式 - 但是提供了方法讓我們可以建立自己的離線安裝包。

建立離線安裝包

要建立離線安裝包非常簡單,只需要:

  1. 下載對應版本的exe安裝檔
  2. 透過傳入參數的方式來建立離線安裝

1. 下載對應版本的exe檔案

可以到 Visual Studio的官網(https://www.visualstudio.com/downloads/)選擇要裝的版本下載。

2. 建立離線安裝包

下載下來之後,用cmd執行執行以下語法即可:

vs_community.exe --layout c:\vs2017offline
vs_community.exe
下載下來的exe,不同版本名稱不同,這邊用community做範例

--layout
告訴exe檔案要離線安裝

c:\vs2017offline
這個則是要安裝到哪裡的路徑,可以自己改變要存在哪裡

這個時候會出現一個請等待的畫面。

image
請等待

然後會在開啟一個cmd的視窗,並且會自動開始下載:

image
下載中

這個時候就可以放著給他跑了,當下載完成,cmd會自動關掉,不會有任何訊息說下載完成

檔案大小

我這邊只下載英文語系,然後全部功能大約需要 12.7GB。

VS 2013/2015的離線安裝建立方式

其實VS 2013開始的exe安裝方式也可以透過--layout參數來建立離線安裝包。和官方提供的ISO來比,這種方式的下載出來的比較全。

VS 2013/2015的安裝畫面和2017最大差異在於之前版本可以直接用UI選擇要下載什麼,並且完成會有訊息告知完成。

其他參數

上面介紹的是基本建立方式,但是如果想要只安裝部分元件或者只要部分語言的話就需要其他參數,這邊介紹幾個其他參數的用法。

下載特定語系

預設,offline install是下載所有語系,但是通常情況是只會用到需要的語系而已。以我個人來說,習慣使用英文版,這個時候其他語系的檔案只是增加下載時間而已。

語系可以在後面增加參數:--lang $languageCode1

--lang
告訴她要下載特定語系

$languageCode1
要下載的語系名稱,如果有多個,就往下加每個code之間用空白區隔。

整個組合在一起就是:

# 安裝英文版本
vs_community.exe --layout c:\vs2017offline --lang en-US
# 安裝英文和繁體中文版本
vs_community.exe --layout c:\vs2017offline --lang en-US zh-TW

其他語系編號

如果要安裝其他語系版本,語系編碼可以在這看到:https://docs.microsoft.com/en-us/visualstudio/install/use-command-line-parameters-to-install-visual-studio#list-of-language-locales

只下載特定功能

假設不希望下載全部功能,這個時候可以用參數 --add $componentId

--add
告訴它下載特定功能就好

$componentId
要下載的功能清單,多個就用空白區隔即可
# 只安裝 azure和github相關功能
vs_community.exe --layout c:\vs2017offline --add Microsoft.VisualStudio.Workload.Azure Component.GitHub.VisualStudio 

Conponent Id 清單

可以參考https://docs.microsoft.com/en-us/visualstudio/install/workload-and-component-ids找到自己要的component Id

其他更多參數

還有其他參數可以下,在這邊可以找到相關資訊https://docs.microsoft.com/en-us/visualstudio/install/use-command-line-parameters-to-install-visual-studio

如何更新離線安裝包

假設過了一段時間之後,VS 2017的Component有更新,這個時候是否需要重新下載全部的功能呢?

其實是不用的,只需要把你當初下載離線包的指令在執行一次,有更新的部分就會自動更新。

這邊要注意是一樣的指令哦,要不然會下載其他東西。舉例來說,如果當初只安裝英文版,後來沒加上英文版,其他語系也會被下載下來。

結語

這篇介紹了如何建立自己的離線安裝包並且如何客制一些常見的參數。當離線包有了,就可以節省其他人安裝的時間。

其他資訊

官方介紹如何建立離線包
https://docs.microsoft.com/en-us/visualstudio/install/create-an-offline-installation-of-visual-studio

exe其他參數
https://docs.microsoft.com/en-us/visualstudio/install/use-command-line-parameters-to-install-visual-studio

可安裝的component 對應id清單
https://docs.microsoft.com/en-us/visualstudio/install/workload-and-component-ids

7 則留言 :

  1. 離線 12.7GB? 家用小水管 5M ADSL 要抓多久啊?
    這線上安裝可以暫停裝一半關機明天再繼續安裝嗎?
    VS 2017 該不會是有史以來最失敗的版本?沒有提供 ISO 檔給公司海量人員安裝?還要自己手動整合離線版?

    回覆刪除
    回覆
    1. 我不太清楚會需要下載多久 - 基本上我就是開著讓他下然後就沒有理他
      如果沒有辦法一直開著下也沒關係,隨時可以停掉,然後要在下載的時候在執行同樣的指令就好了 - 它會自動判別那些需要下載/更新
      或者說用componentId方式只下載特定功能 - 舉例來說,如果只用VS來做web開發,那其實Xamarin(手機開發)完全可以不需要(那個比較大因為有手機VM模擬器)

      我個人覺得現在改成這種模式主要原因是更新速度 - 以前開發其實都是很久一次大更新,所以釋放ISO還okay,但是現在都講究敏捷開發,迭代更新速度很快,假設每更新一個模組功能就要重新包一個iso太花時間版本也會很多,乾脆就給大家一個網路下載器,隨時可以更新
      可以看到這種趨勢,從VS 2015建議就是這種模式了(VS 2013不確定是不是也是) - 雖然2015也有ISO - 但是那個ISO其實沒有網路下載那種模式來的全面(換句話說2015 ISO其實也沒有包含所有功能,有些功能也是要網路下載)

      刪除
    2. 沒有提供ISO可以接受, 但是那麽多workload, 不給一個選擇界面, 抓哪個全靠參數簡直要老命了.
      雖然安裝的時候還有選項可以選擇, 但是下載這部分沒有界面真的是太不人性化.
      要是下載只下載一個database, 然後通過安裝頁面點選具體下載哪些内容, 對於個人用戶體驗要好很多.

      刪除
    3. 如果有個gui能夠產生指令的確會比較方便
      不過如果只是抓大功能的workload id的話其實也還好啦 - 就是要找一下,小麻煩
      假設空間夠還是全部抓下來比較方便

      刪除
  2. 請問下載好的c:\vs2017offline\資料夾可以copy到別台電腦去安裝嗎?

    回覆刪除
    回覆
    1. 可以的哦 - 基本上copy過去執行就好了
      我記得我之前還有把它做成一個iso(比較好copy)然後把它mount起來執行也沒問題(不過有點久了也不知道有沒有記錯)

      刪除
    2. 作者已經移除這則留言。

      刪除