HOW TO:建立產品資訊清單
若要部署應用程式的必要條件,您可以建立啟動載入器套件。 啟動載入器套件只包含一個產品資訊清單檔案,但是包含每種地區設定的套件資訊清單。 套件資訊清單包含套件中與當地語系化有關的部分。 這包括字串、使用者授權合約和語言套件。
如需產品資訊清單的詳細資訊,請參閱 HOW TO:建立封裝資訊清單。
建立產品資訊清單
若要建立產品資訊清單
建立啟動載入器套件的目錄。 這個範例會使用 C:\package。
在 Visual Studio 中,建立名為 product.xml 的新 XML 檔,並將它儲存至 C:\package 資料夾中。
加入下列 XML 程式碼,以描述套件的 XML 命名空間和產品代碼。 請將產品代碼取代為套件的唯一識別項。
<Product xmlns="https://schemas.microsoft.com/developer/2004/01/bootstrapper" ProductCode="Custom.Bootstrapper.Package">
加入 XML 程式碼以指定套件具有相依性。 這個範例會使用對 Microsoft Windows Installer 3.1 的相依性。
<RelatedProducts> <DependsOnProduct Code="Microsoft.Windows.Installer.3.1" /> </RelatedProducts>
加入 XML 程式碼以列出啟動載入器套件中的所有檔案。 這個範例會使用套件檔案名稱 CorePackage.msi。
<PackageFiles> <PackageFile Name="CorePackage.msi"/> </PackageFiles>
將 CorePackage.msi 檔案複製或移動至 C:\package 資料夾。
加入 XML 程式碼,以使用啟動載入器命令來安裝套件。 啟動載入器會自動將 /qn 旗標加入至將以無訊息模式自動安裝的 .msi 檔案中。 如果檔案是 .exe 檔,則啟動載入器會使用殼層執行 .exe 檔。 下列 XML 程式碼未顯示 CorePackage.msi 的引數,但您可以將命令列引數放到 Arguments 屬性中。
<Commands> <Command PackageFile="CorePackage.msi" Arguments="">
加入下列 XML 程式碼,以檢查是否已安裝這個啟動載入器套件。 請將產品代碼取代為可轉散發元件的 GUID。
<InstallChecks> <MsiProductCheck Property="IsMsiInstalled" Product="{XXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/> </InstallChecks>
加入 XML 程式碼,以視是否已安裝啟動載入器元件來變更啟動載入器行為。 如果已安裝該元件,則啟動載入器套件不會執行。 因為這個元件需要系統管理權限,所以下列 XML 程式碼會檢查目前使用者是否為系統管理員。
<InstallConditions> <BypassIf Property="IsMsiInstalled" Compare="ValueGreaterThan" Value="0"/> <FailIf Property="AdminUser" Compare="ValueNotEqualTo" Value="True" String="NotAnAdmin"/> </InstallConditions>
加入 XML 程式碼,以設定安裝成功和需要重新開機時的結束代碼。 下列 XML 程式碼示範 Fail 和 FailReboot 結束代碼,這些結束代碼表示啟動載入器不會繼續安裝套件。
<ExitCodes> <ExitCode Value="0" Result="Success"/> <ExitCode Value="1641" Result="SuccessReboot"/> <ExitCode Value="3010" Result="SuccessReboot"/> <DefaultExitCode Result="Fail" String="GeneralFailure"/> </ExitCodes>
加入下列 XML 程式碼,以結束啟動載入器命令的區段。
</Command> </Commands>
將 C:\package 資料夾移至 Visual Studio 啟動載入器目錄中。 如果是 Visual Studio 2010,則這是 \Program Files\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages 目錄。
範例
產品資訊清單會包含安裝自訂必要條件的指示。
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="https://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="Custom.Bootstrapper.Package">
<RelatedProducts>
<DependsOnProduct Code="Microsoft.Windows.Installer.3.1" />
</RelatedProducts>
<PackageFiles>
<PackageFile Name="CorePackage.msi"/>
</PackageFiles>
<InstallChecks>
<MsiProductCheck Product="IsMsiInstalled"
Property="{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"/>
</InstallChecks>
<Commands>
<Command PackageFile="CorePackage.msi" Arguments="">
<InstallConditions>
<BypassIf Property="IsMsiInstalled"
Compare="ValueGreaterThan" Value="0"/>
<FailIf Property="AdminUser"
Compare="ValueNotEqualTo" Value="True"
String="NotAnAdmin"/>
</InstallConditions>
<ExitCodes>
<ExitCode Value="0" Result="Success"/>
<ExitCode Value="1641" Result="SuccessReboot"/>
<ExitCode Value="3010" Result="SuccessReboot"/>
<DefaultExitCode Result="Fail" String="GeneralFailure"/>
</ExitCodes>
</Command>
</Commands>
</Product>