Wix设置失败,错误1603

时间:2014-07-27 16:02:57

标签: encryption wix windows-installer app-config

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

我正在使用Visual Studio 2012和Wix 3.7。

MSI (s) (E8:1C) [16:51:54:890]: Invoking remote custom action. DLL: C:\windows\Installer\MSIFECD.tmp, Entrypoint: EncryptConfig SFXCA: Extracting custom action to temporary directory: C:\windows\Installer\MSIFECD.tmp-\ SFXCA: Binding to CLR version v4.0.30319 Calling custom action SecureConfig!SecureConfig.CustomActions.EncryptConfig EncryptConfig: Begin An error occurred creating the configuration section handler for security: Could not load file or assembly 'Order.Configuration.Net' or one of its dependencies. The system cannot find the file specified. (C:\Program Files (x86)\Orbit Order System\Orbit Order System.exe.config line 6) CustomAction EncryptConfigurationFile returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox) Action ended 16:51:55: InstallFinalize. Return value 3.

我可以确认目标文件夹中存在`Order.Configuration.Net.dll',应用程序配置文件也是如此。

这是app.config文件:

<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="backup" 
             type="OrderConfiguration.BackupConfig, Order.Configuration.Net"/>
    <section name="general" 
             type="OrderConfiguration.GeneralConfig, Order.Configuration.Net"/>
    <section name="security" 
             type="OrderConfiguration.SecurityConfig, Order.Configuration.Net"/> 
          <-- ** THIS IS LINE 6 **
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5"/>
  </startup>
  <backup configSource="config\backup.config"/>
  <general configSource="config\general.config"/>
  <security configSource="config\security.config"/>
  <connectionStrings>
    <clear/>
    <add name="OrderDb" 
         connectionString="Data Source=(local);Initial Catalog=OrbitOrder;
         User Id=User;Password=Pass;MultipleActiveResultSets=true;"/>
  </connectionStrings>
</configuration>

我还确认目标文件夹中存在config\security.config

我花了三个小时试图找出错误意味着什么,因为所有文件实际存在于目标文件夹中。我实际上复制了我在一年前工作的先前解决方案中设置的WIX,并且一个工作正常,没有任何问题。

失败的自定义操作是尝试加密security配置部分。

我无法解释为什么MSI在没有任何错误时会抛出1603错误。

2 个答案:

答案 0 :(得分:1)

我在将以下代码添加到Wix自定义操作后设法解决了这个问题:

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

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

答案 1 :(得分:0)

根据日志,您编写的自定义操作会返回错误,因此请在安装期间调试自定义操作dll。调试自定义操作的最简单方法是在代码中添加一个消息框(自定义操作开始),并在显示消息框时附加到visual studio中的进程。另一种方法是使用http://msdn.microsoft.com/en-us/library/aa368264%28v=vs.85%29.aspx

中描述的MsiBreak环境变量