我正在使用WIX安装程序并不断收到此错误消息:
WIX错误1723 。此Windows Installer存在问题 包。无法运行此安装所需的DLL。
是否还有其他问题会导致找不到与DLL无关的1723错误?
我可以100%确定地说必须找到DLL,因为同一安装程序中的先前自定义操作有效并且它们都使用相同的DLL。
之前我遇到此错误并通过重命名自定义操作解决了这个问题,因此我认为它与自定义操作允许的名称长度有关。这次我尝试了一个较短的名称和一个名称,其他工作自定义操作的确切长度,但仍然会出现此错误。
我调查了1723的原因,最常见的原因似乎是安装程序因访问权限而无法解压缩DLL。虽然这不太可能,因为引用相同DLL的同一文件中的其他自定义操作工作正常,但我确保安装程序尝试访问的文件夹具有该用户的完全访问权限,我也是从管理员命令提示符运行安装程序模式,所以我们应该没有问题。
答案 0 :(得分:4)
WIX 3.x(更具体地说,MakeSfxCA)有一个已知的错误,可能会产生错误的原生dll文件导致错误" 1723"。根据自定义操作的名称(使用" CustomAction"属性修饰的方法)触发错误。
如果您有两个自定义操作具有相同的前缀,后面跟着一个小写字母,另一个跟着一个大写字母(后面会出现在字母表中),您可能会遇到" 1723"错误。例如。两个名为" isactive"的自定义操作和" isBlocked"很麻烦。
这与MakeSfxCA错误地对导出方法的入口点进行排序有关。
比照。 http://wixtoolset.org/issues/4502代表WIX的问题,Adding a new Custom Action to a project prevents an existing Custom Action from being run代表更多技术细节。
答案 1 :(得分:1)
我最近收到此错误,问题是DLL依赖。我的DLL有我的开发机器上存在的其他DLL依赖项,如果我看到错误,则不在目标机器上。您可以使用Dependency Walker http://www.dependencywalker.com检查您的依赖关系,以确定是否是这种情况。这无疑帮助了我。
答案 2 :(得分:1)
我们花了几个月的时间来解决血腥的error 1723
。
在dumpbin /Exports CustomAction.CA.dll
反编译后(可从visual studio开发人员工具中运行),有以下方式排序的条目:
121 78 000039DE Dev*****************
122 79 000039F4 DML*****************
123 80 00003A0A DoN*****************
假设应该使用ASCII进行排序,看起来这是不正确的。大字母M
应该在小写字母e
之前,因此应该替换条目121
和122
。
我们已经在Wix 3.9 R2上重现了这个问题,但是在某些Windows 7 Ultimate虚拟机问题上没有发生但在Windows 7 Enterprise上可以重现。
对于我们来说,解决方案是在CustomAction项目中更改,将CustomAction的名称从DML *********更改为DmL ********,使排序正常工作。
PS:我试图直接在WiX网页上提供反馈,但我无法注册。答案 3 :(得分:0)
在这个同样的问题上,我用头撞了几个星期。我的解决方案不仅重命名自定义操作方法名称,还重命名CustomAction
中的ID。
<CustomAction Id="CA_InstallerDll.install"
BinaryKey="B_CustomAction_CA"
DllEntry="Install_InstallerDll"
Execute="deferred"
Return="check"
Impersonate="no"/>
...到...
<CustomAction Id="CA_DllInstaller.install" //changed InstallerDll to DllInstaller
BinaryKey="B_CustomAction_CA"
DllEntry="Install_DllInstaller" //Changed the CA Method name too
Execute="deferred"
Return="check"
Impersonate="no"/>
我不确定这是否是“重命名自定义操作”的意思,但这就是为我修复它的原因。另一个令人沮丧的事情是,即使我去重新命名为InstallerDll
,它仍然会因同样的原因而失败。
答案 4 :(得分:0)
对我来说,这是对自定义操作方法的重命名。我将一个字母从小写更改为大写,并忘记在XML中更改它。
答案 5 :(得分:0)
就我而言,我必须首先编译CustomActions项目,然后编译安装项目。