当我运行安装程序时,我收到此错误: 此Windows Installer程序包存在问题。无法运行此安装所需的DLL。任何线索?
代码段:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Product Id="*" Name="SetupProject1" Language="1033" Version="1.0.0.0" Manufacturer="GoGo" UpgradeCode="9bfe9221-2d7d-46ee-b483-88f00e14b4b3">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="SetupProject1" Level="1">
<ComponentGroupRef Id="ProductComponents"/>
</Feature>
<!--<Binary Id="WixCA" SourceFile="WixCA.dll" />-->
<Property Id="QtExecDeferredExample" Value="InstallManager.exe"/>
<CustomAction Id="QtExecDeferredExample" BinaryKey="WixCA" DllEntry="WixQuietExec"
Execute="immediate" Return="check" Impersonate="no"/>
<InstallExecuteSequence>
<Custom Action="QtExecDeferredExample" Before="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SetupProject1" >
<Component Id='MainExecutable'>
<File Id='InstallManagerEXE'
Name='InstallManager.exe'
DiskId='1'
Source='InstallManager.exe'
KeyPath='yes'/>
</Component>
</Directory>
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<ComponentRef Id='MainExecutable' />
</ComponentGroup>
</Fragment>
</Wix>
答案 0 :(得分:1)
你的问题有两个答案。
第一个答案:通用DLL
设置自定义操作时,会有一个属性DllEntry="WixQuietExec"
。您需要使用以下代码将DLL包含在包中:
<Binary Id="WixCA" SourceFile="WixQuietExec.dll" />
此标记应在Product
。
所以你的代码就像这样:
...
<Binary Id="WixCA" SourceFile="WixQuietExec.dll" />
<CustomAction Id="QtExecDeferredExample" BinaryKey="WixCA" DllEntry="WixQuietExec"
Execute="deferred" Return="check" Impersonate="no" />
...
请勿忘记匹配CustomAction[BinaryKey]
和Binary[Id]
。
第二个答案:WixUtilExtension
特别是对于 QtExec 等标准自定义操作,您只需要包含对扩展程序的引用。
C:\Program Files (x86)\WiX Toolset v3.8\bin
更改Wix
标记添加xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
。例如,您的代码为:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
答案 1 :(得分:1)
尝试将DllEntry
从WixQuietExec
更改为CAQuietExec
,并使用QtExecCmdLine
请参阅https://www.firegiant.com/wix/tutorial/standard-libraries/silence-please/
答案 2 :(得分:1)
当我从使用CAQuietExec扩展转换为WixQuietExec时,我遇到了同样的问题(错误1157)。我在发生错误时使用了Wix Toolset 3.9。
我解决了安装Wix Toolset 3.10.1(现在是最后一个稳定版)的问题,WixQuietExec扩展按预期工作。
答案 3 :(得分:0)
对于使用C#开发自定义操作时遇到此问题的任何人,我建议确保