Windows程式打包,使用VS2017

NO IMAGE

作者:KwokKwok
連結:https://www.jianshu.com/p/be0ea8c04643
來源:簡書

安裝依賴元件

首先開啟擴充套件和更新:

擴充套件和更新

聯機查詢下面的元件,然後安裝,重啟VS。

安裝依賴元件

建立專案檔案

作為應用的主程式。比如這裡我就建立一個簡單的專案,只有一個視窗:

建立一個簡單的專案

建立一個打包專案

先右鍵解決方案,選擇 新增-新建專案

建立打包專案

我這裡就起名為PackageDemo Installer

建立打包專案

另外,有些人可能會想這麼多安裝型別,怎麼選。因為我們這裡說Windows程式打包,想要輸出.exe.msi,大概看一下介紹就能知道,第一個和第四個是合適的。這兩個又該怎麼選呢?那其實第四個就是對一些屬性多了些引導,最終的專案結構和第一個是沒有區別的。這裡我們就選第一個。


配置

專案資訊

配置專案資訊,這裡開啟屬性視窗。注意:不是在專案上右鍵-屬性,而是選中專案後點選屬性視窗檢視:

檢視專案屬性

然後看各種對資訊進行配置:

專案屬性

這裡對一些屬性做下解釋:

  1. 重要屬性
    1. AuthorManufacturer,分別是作者和製造商的意思,一般都寫公司名。
    2. ProductName,軟體名。預設是專案名,影響到安裝介面和安裝目錄。務必改掉。
    3. Version,版本號,影響安裝流程,後面會說。
    4. TargetPlatform,意思很明顯。表現層面上就是,決定你的安裝目錄是在Program Files還是Program Files (x86),根據專案決定。
    5. RemovePreviousVersion,是否移除之前的版本。務必改為True,不然你更新幾次軟體就會發現,電腦裡多個版本都在安裝著。
  2. 不重要的屬性:
    1. InstallAllUsers,使用者許可權預設值。這個在安裝介面還可以重新設定。
    2. ManufacturerUrl,公司官網。
    3. SupportUrlSupportPhone,技術支援的網址和電話。
    4. Description,軟體描述。
    5. Title,無用。一開始我以為它是安裝介面的標題,但其實並不是,這個值預設和專案名一致,但你修改之後,在哪裡也都看不到。所以無用。

當然,現在我們還不能執行打包。還需要新增一些別的內容。

先看一下專案的檔案系統

檔案系統在專案剛建立的時候會預設開啟,其他時候你也可以通過在專案上右鍵-View-檔案系統開啟。

檔案系統

剛開始就會看到三個入口:

  1. Application Folder,這個是你的應用安裝之後,檔案所處的目錄。
  2. User's Desktop,使用者桌面,我們等下會需要在這裡面放置一個快捷方式。
  3. User's Programs Menu,使用者的程式選單。就是按Windows徽標鍵或者是螢幕左下角的Windows徽標,會出現的一些資料夾和快捷方式。

新增檔案或資料夾

有時候我們會需要手動新增一些預設檔案到安裝目錄裡,比如一些預設配置、一些DLL等。接下來演示怎麼建立資料夾和新增檔案。

新增檔案或資料夾

比如我重複使用上邊的操作,建立了多級的資料夾,接下來我們可以通過新增檔案,往裡面新增一些icon圖示,等下可以用作快捷方式的icon。

新增幾個icon檔案

新增可執行檔案及其快捷方式

先建立專案輸出檔案(一般都是.exe檔案),即快捷方式要指向的檔案:

建立專案輸出
專案輸出配置

上面的流程也可以重複進行。針對多個專案建立多個專案輸出,那樣的話,就可以用啟動不同的專案了。比如我們知道Git有GUI版本,也有命令列版本。就可以通過這種方式,建立多個輸出檔案。

新增完輸出檔案之後,我們就可以為這個輸出建立快捷方式了:

建立輸出快捷方式

比如這裡建立出來的就是上面的那個Shortcut ....balabala的東西。這個快捷方式的名字需要修改,不然會直接在介面上顯示這個名字。這裡重新命名一下即可。

輸出檔案(這裡的主輸出balabala)是不能改名字的,它是對應的安裝目錄裡的輸出檔案。比如我這個專案在安裝後,安裝目錄裡就會有一個PackageDemo.exe的檔案。

也可以多次為這個輸出建立快捷方式。這樣的話,之後可以直接將快捷方式複製到別的入口資料夾裡(User's Desktop/User's Programs Menu)。

這裡我建立了多個快捷方式,併為它們改了不一樣的名字。接下來,也為它們設定不一樣的icon。

設定icon

先修改快捷方式的icon屬性,這裡預設為None,我們需要把它改為之前新增的icon圖示。

修改圖示
選擇介面

在選擇介面開啟Browse...,找到之前新增的圖示點選確認

選擇完成

點選OK即可為快捷方式應用圖示。其他的快捷方式也是一樣的操作。


生成安裝包並安裝

在安裝專案上右鍵,選擇生成或重新生成。會執行打包操作。並會根據你的設定在專案的DebugRelease資料夾下生成一個.msi檔案和一個.exe檔案。使用者可以使用這個安裝包進行安裝。

安裝介面如下:

安裝介面1
安裝介面2
  1. 那個任何人\只有我的選項就是我們之前提到過的InstallAllUsers指定值。

  2. PackageDemo Installer的問題,可以看出來,這個名字很不合適,那我們能不能改掉這個名字呢?這裡就是之前提到過的,專案屬性視窗中的ProductName屬性,將該屬性設定為軟體名稱即可。

再看下安裝之後的效果:

安裝效果

可以看到桌面和程式目錄裡各有一個快捷方式,它們的名字和圖示也正是我們在檔案系統設定的那樣。

再來看看安裝目錄裡的東西:

安裝後資料夾

一些問題

版本號問題

假設,你當前電腦上已經使用一個安裝包安裝了1.0.0版本的軟體:

此時你再次點選同樣的安裝包:

同樣的安裝包

如果,你對專案做了一些修改後重新打包,卻沒修改版本號:

相同版本號,不同的內容

如果,你對專案做了一些修改後,也增加了版本號:

修改版本號

這樣是可以正常安裝的。並且如果你設定了移除舊版本,也會同時解除安裝掉舊版本軟體。

生成失敗

有時你執行了生成或重新生成卻發現左下角提示生成失敗

生成失敗

然後開啟錯誤列表,如果有錯誤的話,去修改錯誤(警告等是不會導致失敗的,只檢視錯誤就可以)。可是,有時候,會出現這種情況:

生成失敗卻沒有提示任何錯誤

明明沒有一個錯誤,卻導致生成失敗了?

這種問題,基本上都是檔案系統引用到的檔案位置發生了改變。就是說,你在上邊執行的新增檔案,其實只是把你電腦上的檔案地址儲存了起來,之後如果你的檔案被刪了或是換了位置,那之前新增的檔案引用自然就會失效。這時候去仔細檢視一下檔案系統。

比如我把幾個圖示檔案移動到別的資料夾之後:

檔案引用錯誤

這時候,把錯誤的引用刪掉,重新將檔案新增進來即可。注意:icon檔案修改後,引用icon的快捷方式也需要修改icon路徑。


一個建議

在安裝專案內建立一個資料夾,專門用於放置安裝專案所依賴的文件、圖示等,避免引用的檔案移動後還需要重新設定。