Encryption Wix安装程序失败,错误为1603

Encryption Wix安装程序失败,错误为1603,encryption,wix,windows-installer,app-config,Encryption,Wix,Windows Installer,App Config,我已经编写了一个.NET 4桌面应用程序,当尝试运行Setup.exe时,我在日志文件中遇到以下错误 我正在使用Visual Studio 2012和Wix 3.7 MSI(E8:1C)[16:51:54:890]:调用远程自定义操作。DLL:C:\windows\Installer\MSIFECD.tmp,入口点:EncryptConfig SFXCA:正在将自定义操作提取到临时目录:C:\windows\Installer\MSIFECD.tmp-\ SFXCA:绑定到CLR v4.0.30

我已经编写了一个.NET 4桌面应用程序,当尝试运行Setup.exe时,我在日志文件中遇到以下错误

我正在使用Visual Studio 2012和Wix 3.7

MSI(E8:1C)[16:51:54:890]:调用远程自定义操作。DLL:C:\windows\Installer\MSIFECD.tmp,入口点:EncryptConfig
SFXCA:正在将自定义操作提取到临时目录:C:\windows\Installer\MSIFECD.tmp-\
SFXCA:绑定到CLR v4.0.30319版
正在调用自定义操作SecureConfig!SecureConfig.CustomActions.EncryptConfig
EncryptConfig:开始
为安全性创建配置节处理程序时出错:无法加载文件或程序集“Order.configuration.Net”或其依赖项之一。系统找不到指定的文件。(C:\Program Files(x86)\Orbit Order System\Orbit Order System.exe.config第6行)
CustomAction EncryptConfigurationFile返回了实际错误代码1603(注意,如果转换发生在沙箱中,则这可能不是100%准确)
行动于16:51:55结束:完成。返回值3。

我可以确认“Order.Configuration.Net.dll”与应用程序配置文件一样存在于目标文件夹中

这是app.config文件:



根据日志,错误由您编写的自定义操作返回,因此请在安装期间调试自定义操作dll。调试自定义操作的最简单方法是在代码中添加一个消息框(自定义操作的开始),并在显示消息框时附加到visual studio中的进程。另一种方法是使用MsiBreak环境变量,如中所述。在向Wix自定义操作添加以下代码后,我设法解决了此问题:

AppDomain.CurrentDomain.AssemblyResolve += ( sender, args ) =>
{
    return Assembly.LoadFrom( string.Format( @"{0}Order.Configuration.Net.dll", installFolder ) );
};

这基本上是说在遇到需要解析的引用时加载程序集。

我已尝试使用消息框附加到进程,但我的断点没有命中,我在VS IDE中收到一条消息,说“没有加载符号”。我已将PDB放置在与msiexec.PDB文件相同的位置,但不幸的是,我使用的方法是使用
wixcatargespath
创建自定义操作xxxx.CA.dll,而这不会创建PDB文件。可能您尝试加载的文件名有错误,或者该文件正在使用中,您无法锁定它,或者该文件甚至可能还不存在于磁盘上,这取决于您使用自己的自定义操作对事情进行排序的方式。另外,您是否在GAC中安装了一些东西?我使用完全相同的代码做了一个测试项目,但仍然出现了相同的错误。当我将
Order.Configuration.Net.dll
复制到测试程序的
bin
文件夹时,它工作了。我觉得这很奇怪,因为我去年为一个类似的项目编写了一个Wix,它运行得很好。对于这个新项目,我使用了相同的设置代码,只是去掉了我不需要的部分。