VS2015 打包添加系统必备组件
生活随笔
收集整理的這篇文章主要介紹了
VS2015 打包添加系统必备组件
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
有時我們除了需要安裝系統必備組件之外,還需要做自定義的子安裝程序,如我的需要安裝2007 Office System Driver: Data Connectivity Components!現將操作步驟整理如下,希望能對如我一般陷此困惑的朋友有所幫助,或能拋磚引玉!
(1)將自定義的安裝程序COPY至Bootstrapper文件夾中
VS2015(不同vs版本有不同的Bootstrapper目錄)的系統必備項是用特定文件路徑和xml描述文件一起構成的,這點倒是和JAVA應用服務器很像。這個Bootstrapper是具體路徑在我的機器中是:
“C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages”。在這個目錄中,
您可很清楚地看到在VS2015部署程序中可選的所有的組件,呵呵。我們要依葫蘆畫瓢同樣建一個文件夾“Data Connectivity Components”這樣的系統必備組件。
名稱就起“Access Database Engine”好了。如下:
在“Data Connectivity Components”文件夾中,斷續建一個“en”安裝本地化文件夾(中國的建zh-CHS),將安裝程序COPY進這個文件夾中,如:
(2)創建產品清單和程序包清單
產品清單其實就是“Data Connectivity Components”文件夾下的那個product.xml文件;程序包清單其實就是“en”文件夾下的package.xml文件。 Product.xml文件的清單如下:
<?xml version="1.0" encoding="utf-8" ?> <Productxmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"ProductCode="AccessDatabaseEngine" ><!-- Defines list of files to be copied on build --> </Product>
這倒沒什么可說的,
Package.xml文件的清單如下:
<?xml version="1.0" encoding="utf-8"?> <Package Name="DisplayName" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"><InstallChecks><RegistryFileCheck Property="ACEVERSION" Key="HKLM\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\InstallRoot" Value="Path" FileName="1033\ACEODBCI.DLL" /></InstallChecks><PackageFiles CopyAllPackageFiles="false"><PackageFileName="AccessDatabaseEngine.exe"HomeSite="HomeSiteName_32"/></PackageFiles><Commands Reboot="Defer"><Command PackageFile="AccessDatabaseEngine.exe"><InstallConditions> <BypassIf Property="ACEVERSION" Compare="ValueExists"/> </InstallConditions><ExitCodes><ExitCode Value="0" Result="Success" /><DefaultExitCode Result="Fail" String="Anunexpected" FormatMessageFromSystem="true" /></ExitCodes></Command> </Commands><Strings><String Name="Culture">EN</String><String Name="DisplayName">Access Database Engine</String><String Name="HomeSiteName_32">http://downloads.hotdocs.com/downloads/hd11/player/HotDocs_Player_11_32bit.exe</String> <String Name="AdminRequired">You do not have the permissions required to install this application. Please contact your administrator.</String><String Name="Anunexpected">An unexpected exit code was returned from the installer. The installation failed.</String></Strings></Package>
Package 元素的 Name 屬性的值 其實就是 在VS2015部署程序的系統必備選擇框中顯示的組件名稱。
<PackageFiles>元素用來指定組件包括的文件,要將每個安裝文件要用子元素<PackageFile>指定出來哦,VS2015部署程序在編譯生成安裝文件時,
就是按這個清單將組件的文件COPY過去的。
<InstallChecks> < Commands >這兩個元素是要配對的,和struts框架的控制文件一樣,它們的主要作用就是利用注冊表項或文件來判斷組件是否需要安裝。
我是用注冊表來判斷驅動是否已經在客戶端上安裝,就需要用<RegistryCheck>元素來檢查,用“HKLM\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\InstallRoot”這個注冊表鍵來判斷檢查,
并給這個檢查項目起個名字叫“ACEVERSION”。 <Command>元素則是在<InstallConditions>元素指定的條件滿足時,執行相應的組件安裝程序
,這里我的安裝程序是“AccessDatabaseEngine.exe”,是一個普通的安裝程序,沒有參數。
<InstallConditions>元素我的理解就是指定安裝條件啦,<BypassIf Property="ACEVERSION" Compare="ValueExists"/>一句我的想法是: 如果注冊表存在這個鍵就認為已經安裝了客戶端,就不用執行精簡客戶端安裝,否則視為沒有安裝,就要執行。
(3)配置完畢!
我們到VS2015部署程序的系統必備選擇項中找找,果真發現了“Data Connectivity Components”這個組件了。如下圖:
(1)將自定義的安裝程序COPY至Bootstrapper文件夾中
VS2015(不同vs版本有不同的Bootstrapper目錄)的系統必備項是用特定文件路徑和xml描述文件一起構成的,這點倒是和JAVA應用服務器很像。這個Bootstrapper是具體路徑在我的機器中是:
“C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\Packages”。在這個目錄中,
您可很清楚地看到在VS2015部署程序中可選的所有的組件,呵呵。我們要依葫蘆畫瓢同樣建一個文件夾“Data Connectivity Components”這樣的系統必備組件。
名稱就起“Access Database Engine”好了。如下:
在“Data Connectivity Components”文件夾中,斷續建一個“en”安裝本地化文件夾(中國的建zh-CHS),將安裝程序COPY進這個文件夾中,如:
(2)創建產品清單和程序包清單
產品清單其實就是“Data Connectivity Components”文件夾下的那個product.xml文件;程序包清單其實就是“en”文件夾下的package.xml文件。 Product.xml文件的清單如下:
<?xml version="1.0" encoding="utf-8" ?> <Productxmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"ProductCode="AccessDatabaseEngine" ><!-- Defines list of files to be copied on build --> </Product>
這倒沒什么可說的,
Package.xml文件的清單如下:
<?xml version="1.0" encoding="utf-8"?> <Package Name="DisplayName" Culture="Culture" xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"><InstallChecks><RegistryFileCheck Property="ACEVERSION" Key="HKLM\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\InstallRoot" Value="Path" FileName="1033\ACEODBCI.DLL" /></InstallChecks><PackageFiles CopyAllPackageFiles="false"><PackageFileName="AccessDatabaseEngine.exe"HomeSite="HomeSiteName_32"/></PackageFiles><Commands Reboot="Defer"><Command PackageFile="AccessDatabaseEngine.exe"><InstallConditions> <BypassIf Property="ACEVERSION" Compare="ValueExists"/> </InstallConditions><ExitCodes><ExitCode Value="0" Result="Success" /><DefaultExitCode Result="Fail" String="Anunexpected" FormatMessageFromSystem="true" /></ExitCodes></Command> </Commands><Strings><String Name="Culture">EN</String><String Name="DisplayName">Access Database Engine</String><String Name="HomeSiteName_32">http://downloads.hotdocs.com/downloads/hd11/player/HotDocs_Player_11_32bit.exe</String> <String Name="AdminRequired">You do not have the permissions required to install this application. Please contact your administrator.</String><String Name="Anunexpected">An unexpected exit code was returned from the installer. The installation failed.</String></Strings></Package>
Package 元素的 Name 屬性的值 其實就是 在VS2015部署程序的系統必備選擇框中顯示的組件名稱。
<PackageFiles>元素用來指定組件包括的文件,要將每個安裝文件要用子元素<PackageFile>指定出來哦,VS2015部署程序在編譯生成安裝文件時,
就是按這個清單將組件的文件COPY過去的。
<InstallChecks> < Commands >這兩個元素是要配對的,和struts框架的控制文件一樣,它們的主要作用就是利用注冊表項或文件來判斷組件是否需要安裝。
我是用注冊表來判斷驅動是否已經在客戶端上安裝,就需要用<RegistryCheck>元素來檢查,用“HKLM\SOFTWARE\Microsoft\Office\12.0\Access Connectivity Engine\InstallRoot”這個注冊表鍵來判斷檢查,
并給這個檢查項目起個名字叫“ACEVERSION”。 <Command>元素則是在<InstallConditions>元素指定的條件滿足時,執行相應的組件安裝程序
,這里我的安裝程序是“AccessDatabaseEngine.exe”,是一個普通的安裝程序,沒有參數。
<InstallConditions>元素我的理解就是指定安裝條件啦,<BypassIf Property="ACEVERSION" Compare="ValueExists"/>一句我的想法是: 如果注冊表存在這個鍵就認為已經安裝了客戶端,就不用執行精簡客戶端安裝,否則視為沒有安裝,就要執行。
(3)配置完畢!
我們到VS2015部署程序的系統必備選擇項中找找,果真發現了“Data Connectivity Components”這個組件了。如下圖:
?
?轉載于:https://www.cnblogs.com/fire_to_fire/p/7692056.html
總結
以上是生活随笔為你收集整理的VS2015 打包添加系统必备组件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: forEach 与 map 的区别
- 下一篇: 【很早以前的作品】自编游戏之Nation