在引导程序中管理先决条件版本
Manage prerequisites version in bootstrapper
我想使用 visualstrudio 2015 为 C# 应用程序创建引导程序。我想为 SharedManagementObject(从 Microsoft 下载 that direct link)设置先决条件。我按照说明进行操作
the microsoft website.
有我的product.xml:
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="Custom.Bootstrapper.SharedManagementObjects2014x86">
<RelatedProducts>
<DependsOnProduct Code="Custom.Bootstrapper.SQLSysClrTypes2014x86" />
</RelatedProducts>
<PackageFiles>
<PackageFile Name="SharedManagementObjects2014x86.msi"/>
</PackageFiles>
<InstallChecks>
<MsiProductCheck Product="IsMsiInstalled"
Property="{4E6202DE-B996-4736-A64B-09EE2A8469E6}"/>
</InstallChecks>
<Commands>
<Command PackageFile="SharedManagementObjects2014x86.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>
安装时,对话框正确要求安装 SharedManagementObjects2014x86.msi,但我有 2 个问题:
- 在 CPU 上与 x86 不兼容,安装 运行s 但失败。是否有检查 CPU 并仅在 x86 上安装的说明?
- 在 x86 CPU 上,安装正常。但是如果我重新运行setup.exe,SharedManagementObjects2014x86.msi就重新安装了。为什么
<BypassIf Property="IsMsiInstalled" Compare="ValueGreaterThan" Value="0"/>
不起作用?
坦克你
终于找到答案了
不重新安装:检查注册表
根据 CPU 安装:检查 ProcessorArchitecture
我的代码:
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="Custom.Bootstrapper.SharedManagementObjects2014">
<RelatedProducts>
<DependsOnProduct Code="Custom.Bootstrapper.SQLSysClrTypes2014" />
</RelatedProducts>
<PackageFiles>
<PackageFile Name="SharedManagementObjects2014x64.msi"/>
<PackageFile Name="SharedManagementObjects2014x86.msi"/>
</PackageFiles>
<InstallChecks>
<!-- Check registry -->
<RegistryCheck Property="IsMsiInstalled"
Key="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion"
Value="Version" />
</InstallChecks>
<Commands>
<!-- Install for x86 : ProcessorArchitecture = Intel -->
<Command PackageFile="SharedManagementObjects2014x86.msi" Arguments="">
<InstallConditions>
<BypassIf Property="IsMsiInstalled"
Compare="ValueGreaterThan" Value="0"/>
<BypassIf Property="ProcessorArchitecture"
Compare="ValueNotEqualTo" Value="Intel"/>
<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>
<!-- Install for x64 : ProcessorArchitecture = amd64 -->
<Command PackageFile="SharedManagementObjects2014x64.msi" Arguments="">
<InstallConditions>
<BypassIf Property="IsMsiInstalled"
Compare="ValueGreaterThan" Value="0"/>
<BypassIf Property="ProcessorArchitecture"
Compare="ValueNotEqualTo" Value="amd64"/>
<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>
我想使用 visualstrudio 2015 为 C# 应用程序创建引导程序。我想为 SharedManagementObject(从 Microsoft 下载 that direct link)设置先决条件。我按照说明进行操作 the microsoft website.
有我的product.xml:
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="Custom.Bootstrapper.SharedManagementObjects2014x86">
<RelatedProducts>
<DependsOnProduct Code="Custom.Bootstrapper.SQLSysClrTypes2014x86" />
</RelatedProducts>
<PackageFiles>
<PackageFile Name="SharedManagementObjects2014x86.msi"/>
</PackageFiles>
<InstallChecks>
<MsiProductCheck Product="IsMsiInstalled"
Property="{4E6202DE-B996-4736-A64B-09EE2A8469E6}"/>
</InstallChecks>
<Commands>
<Command PackageFile="SharedManagementObjects2014x86.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>
安装时,对话框正确要求安装 SharedManagementObjects2014x86.msi,但我有 2 个问题:
- 在 CPU 上与 x86 不兼容,安装 运行s 但失败。是否有检查 CPU 并仅在 x86 上安装的说明?
- 在 x86 CPU 上,安装正常。但是如果我重新运行setup.exe,SharedManagementObjects2014x86.msi就重新安装了。为什么
<BypassIf Property="IsMsiInstalled" Compare="ValueGreaterThan" Value="0"/>
不起作用?
坦克你
终于找到答案了
不重新安装:检查注册表
根据 CPU 安装:检查 ProcessorArchitecture
我的代码:
<?xml version="1.0" encoding="utf-8" ?>
<Product
xmlns="http://schemas.microsoft.com/developer/2004/01/bootstrapper"
ProductCode="Custom.Bootstrapper.SharedManagementObjects2014">
<RelatedProducts>
<DependsOnProduct Code="Custom.Bootstrapper.SQLSysClrTypes2014" />
</RelatedProducts>
<PackageFiles>
<PackageFile Name="SharedManagementObjects2014x64.msi"/>
<PackageFile Name="SharedManagementObjects2014x86.msi"/>
</PackageFiles>
<InstallChecks>
<!-- Check registry -->
<RegistryCheck Property="IsMsiInstalled"
Key="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SharedManagementObjects\CurrentVersion"
Value="Version" />
</InstallChecks>
<Commands>
<!-- Install for x86 : ProcessorArchitecture = Intel -->
<Command PackageFile="SharedManagementObjects2014x86.msi" Arguments="">
<InstallConditions>
<BypassIf Property="IsMsiInstalled"
Compare="ValueGreaterThan" Value="0"/>
<BypassIf Property="ProcessorArchitecture"
Compare="ValueNotEqualTo" Value="Intel"/>
<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>
<!-- Install for x64 : ProcessorArchitecture = amd64 -->
<Command PackageFile="SharedManagementObjects2014x64.msi" Arguments="">
<InstallConditions>
<BypassIf Property="IsMsiInstalled"
Compare="ValueGreaterThan" Value="0"/>
<BypassIf Property="ProcessorArchitecture"
Compare="ValueNotEqualTo" Value="amd64"/>
<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>