我们使用包引导程序作为二进制流,在应用程序安装期间使用来执行WebView2运行时安装程序注册表检查。但是我们的安装程序失败了,下面的错误和安装没有发生。
我们试图安装的机器已经安装了webview2运行时。
图像1:

图像2:

我们将在我们的product.wxs文件中执行以下步骤。
步骤1 :
<Property Id="WVRTINSTALLED">
<RegistrySearch Id="WVRTInstalled1" Root="HKLM" Key="SOFTWARE\WOW6432Node\Microsoft\EdgeUpdate\Clients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Name="pv" Type="raw" />
<RegistrySearch Id="WVRTInstalled2" Root="HKLM" Key="SOFTWARE\Microsoft\EdgeUpdate\Clients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Name="pv" Type="raw" />
<RegistrySearch Id="WVRTInstalled3" Root="HKCU" Key="SOFTWARE\Microsoft\EdgeUpdate\Clients{F3017226-FE2A-4295-8BDF-00C3A9A7E4C5}" Name="pv" Type="raw" />
</Property>
<Binary Id="MicrosoftEdgeWebview2Setup.exe" SourceFile="C:\Users\source\setup dependency\MicrosoftEdgeWebview2Setup.exe"/>
<CustomAction Id='InvokeBootstrapper' BinaryKey='MicrosoftEdgeWebview2Setup.exe' Execute="deferred" ExeCommand=' /install' Return='check' />步骤2 :
<Custom Action="CloseAppsPrompt" After="CostFinalize"></Custom>
<Custom Action='InvokeBootstrapper' Before='InstallFinalize'>
<![CDATA[NOT(REMOVE OR WVRTINSTALLED)]]>
</Custom>注意:我们遵循了在这个示例中给出的步骤:https://github.com/MicrosoftEdge/WebView2Samples/blob/main/SampleApps/WV2DeploymentWiXCustomActionSample/Product.wxs
我正在尝试检查webview2的多个注册表,如果用户机器的任何注册表中都没有可用的注册表,我希望进行安装,如果用户计算机中已经存在安装,则跳过安装。
发布于 2022-11-12 16:59:54
这不是一个答案,但我不能简单地评论你的帖子,因为我没有足够的声誉点。但我想提出一些建议,以防它能帮你解决问题。
我正在我的安装程序中安装Webview2,并检查与WVRTInstalled2引用相同的注册表项。我的建议是找出哪些是实际设置的(可能是WVRTInstalled2,就像我的情况一样),并且只包括设置属性的那个RegistrySearch。如果这正确地设置了WVRTINSTALLED属性,那么其他2的包含可能是创建"AND“条件而不是"OR”条件。
如果您永远无法解决WVRTINSTALLED的设置,那么我建议将Webview2安装程序的执行更改为静默,因此所有这些都可以快速处理,无需用户干预。
抱歉,如果这没有你想要的那么有帮助的话。
https://stackoverflow.com/questions/74218408
复制相似问题