SqlLocalDB 2019 MSI 忽略来自 Wix 引导程序的 ARPSYSTEMCOMPONENT
SqlLocalDB 2019 MSI ignores ARPSYSTEMCOMPONENT from Wix bootstrapper
我有一个 Wix Bootstrapper 应用程序,它启动 SqlLocalDB 2019 MSI 安装程序。它运行良好,一切都已正确安装。
在 MsiPackage 中,我传递 ARPSYSTEMCOMPONET=0 以确保“Microsoft Sql Server 2019 LocalDB”条目出现在 Windows 10 上的 Add/Remove 程序中。
<?xml version="1.0" encoding="UTF-8"?>
<WixVariable Id="WixUILicenseRtf" Value="$(var.ProjectDir)\Resources\eula_en-us.rtf" />
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication LogoFile="$(var.ProjectDir)\Resources\cs.png"
LicenseFile="$(var.ProjectDir)\Resources\eula_en-us.rtf"
ThemeFile="$(var.ProjectDir)\Resources\customtheme.xml"
SuppressOptionsUI="yes"
SuppressRepair="yes" />
</BootstrapperApplicationRef>
<Chain>
<MsiPackage Id="SqlLocalDBPackage"
DisplayName="Installing Prerequisites... :)" Vital="yes" Visible="yes" Permanent="yes"
SourceFile="$(var.ProjectDir)\Resources\SqlLocalDB2019.msi" >
<MsiProperty Name="ARPSYSTEMCOMPONENT" Value="0"/>
<MsiProperty Name="IACCEPTSQLLOCALDBLICENSETERMS" Value="YES" />
</MsiPackage>
</Chain>
Sql 安装程序的日志文件确实显示 SqlLocalDB2019 MSI 安装程序中的 ARPSYSTEMCOMPONENT=0 和 SYSTEMCOMPONENT=0。
MSI (s) (9C:EC) [10:13:12:576]: Command Line: MSIFASTINSTALL=7 ARPSYSTEMCOMPONENT=0 IACCEPTSQLLOCALDBLICENSETERMS=YES REBOOT=ReallySuppress CLIENTUILEVEL=3 MSICLIENTUSESEXTERNALUI=1 CLIENTPROCESSID=25032
MSI (s) (9C:EC) [10:13:24:346]: Executing op: ProductRegister(UpgradeCode={F0176A51-908A-4240-8853-E229D0AE3F39},VersionString=15.0.2000.5,HelpLink=https://go.microsoft.com/fwlink/?LinkId=230480,,,InstallSource=C:\ProgramData\Package Cache\{F4F4157C-0951-4F00-8530-E3A6B2BE8606}v15.0.2000.5\,Publisher=Microsoft Corporation,,,,,,,,,,,SystemComponent=0,EstimatedSize=264308,,,,)
但是,在注册表中,它将始终设置为 1,并且该包不会出现在 ARP 中。但是,如果我手动将其重置为 0,它确实会出现。
请注意,我还尝试将 ARPSYSTEMCOMPONENT 设置为“YES”、“NO”、“1”和“0”,它们都会导致注册表中的 SystemComponent 为 1。
我被这个难住了....任何想法将不胜感激。
TIA!
删除:
从您的来源中删除整个 属性:
<MsiProperty Name="ARPSYSTEMCOMPONENT" Value="0" />
可见属性:
确保 Visible
属性设置为 "yes"
在 MsiElement
:
<MsiPackage Id="MyMSI" Visible="yes" SourceFile="Test.msi" />
此设置将自动神奇地处理 ARPSYSTEMCOMPONENT
属性 写作。它似乎正确地覆盖了所涉及的第三方 MSI 中专门定义的任何内容。刚刚做了一个冒烟测试。
自定义操作:自定义操作可能会做一些奇怪的事情并设置此 属性 或写入此注册表位置。
我有一个 Wix Bootstrapper 应用程序,它启动 SqlLocalDB 2019 MSI 安装程序。它运行良好,一切都已正确安装。
在 MsiPackage 中,我传递 ARPSYSTEMCOMPONET=0 以确保“Microsoft Sql Server 2019 LocalDB”条目出现在 Windows 10 上的 Add/Remove 程序中。
<?xml version="1.0" encoding="UTF-8"?>
<WixVariable Id="WixUILicenseRtf" Value="$(var.ProjectDir)\Resources\eula_en-us.rtf" />
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense">
<bal:WixStandardBootstrapperApplication LogoFile="$(var.ProjectDir)\Resources\cs.png"
LicenseFile="$(var.ProjectDir)\Resources\eula_en-us.rtf"
ThemeFile="$(var.ProjectDir)\Resources\customtheme.xml"
SuppressOptionsUI="yes"
SuppressRepair="yes" />
</BootstrapperApplicationRef>
<Chain>
<MsiPackage Id="SqlLocalDBPackage"
DisplayName="Installing Prerequisites... :)" Vital="yes" Visible="yes" Permanent="yes"
SourceFile="$(var.ProjectDir)\Resources\SqlLocalDB2019.msi" >
<MsiProperty Name="ARPSYSTEMCOMPONENT" Value="0"/>
<MsiProperty Name="IACCEPTSQLLOCALDBLICENSETERMS" Value="YES" />
</MsiPackage>
</Chain>
Sql 安装程序的日志文件确实显示 SqlLocalDB2019 MSI 安装程序中的 ARPSYSTEMCOMPONENT=0 和 SYSTEMCOMPONENT=0。
MSI (s) (9C:EC) [10:13:12:576]: Command Line: MSIFASTINSTALL=7 ARPSYSTEMCOMPONENT=0 IACCEPTSQLLOCALDBLICENSETERMS=YES REBOOT=ReallySuppress CLIENTUILEVEL=3 MSICLIENTUSESEXTERNALUI=1 CLIENTPROCESSID=25032
MSI (s) (9C:EC) [10:13:24:346]: Executing op: ProductRegister(UpgradeCode={F0176A51-908A-4240-8853-E229D0AE3F39},VersionString=15.0.2000.5,HelpLink=https://go.microsoft.com/fwlink/?LinkId=230480,,,InstallSource=C:\ProgramData\Package Cache\{F4F4157C-0951-4F00-8530-E3A6B2BE8606}v15.0.2000.5\,Publisher=Microsoft Corporation,,,,,,,,,,,SystemComponent=0,EstimatedSize=264308,,,,)
但是,在注册表中,它将始终设置为 1,并且该包不会出现在 ARP 中。但是,如果我手动将其重置为 0,它确实会出现。
请注意,我还尝试将 ARPSYSTEMCOMPONENT 设置为“YES”、“NO”、“1”和“0”,它们都会导致注册表中的 SystemComponent 为 1。
我被这个难住了....任何想法将不胜感激。
TIA!
删除:
从您的来源中删除整个 属性:
<MsiProperty Name="ARPSYSTEMCOMPONENT" Value="0" />
可见属性:
确保 Visible
属性设置为 "yes"
在 MsiElement
:
<MsiPackage Id="MyMSI" Visible="yes" SourceFile="Test.msi" />
此设置将自动神奇地处理 ARPSYSTEMCOMPONENT
属性 写作。它似乎正确地覆盖了所涉及的第三方 MSI 中专门定义的任何内容。刚刚做了一个冒烟测试。
自定义操作:自定义操作可能会做一些奇怪的事情并设置此 属性 或写入此注册表位置。