Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .NET3.5中的Wix自定义操作错误_C#_Wix_Installation_Windows Installer - Fatal编程技术网

C# .NET3.5中的Wix自定义操作错误

C# .NET3.5中的Wix自定义操作错误,c#,wix,installation,windows-installer,C#,Wix,Installation,Windows Installer,我已经用Wix和自定义操作创建了一个安装包(msi)。安装在安装了.NET4的系统上运行良好,但是在干净的系统(WIN7.NET3.5)上,安装失败,出现以下错误。我缩小了wxs包的范围,似乎如果我删除对CustomActions的引用,msi就会安装(但没有注册表更改)。CustomActions正在根据用户PC配置向注册表输入新值。同样,同一个项目在.NET4 PC上工作得很完美。目标框架设置为.NET3.5。有什么想法吗 === Logging stopped: 7/13/2014 14

我已经用Wix和自定义操作创建了一个安装包(msi)。安装在安装了.NET4的系统上运行良好,但是在干净的系统(WIN7.NET3.5)上,安装失败,出现以下错误。我缩小了wxs包的范围,似乎如果我删除对CustomActions的引用,msi就会安装(但没有注册表更改)。CustomActions正在根据用户PC配置向注册表输入新值。同样,同一个项目在.NET4 PC上工作得很完美。目标框架设置为.NET3.5。有什么想法吗

=== Logging stopped: 7/13/2014  14:23:19 ===
MSI (c) (00:F4) [14:23:19:249]: Note: 1: 1708 
MSI (c) (00:F4) [14:23:19:249]: Note: 1: 2205 2:  3: Error 
MSI (c) (00:F4) [14:23:19:267]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1708 
MSI (c) (00:F4) [14:23:19:267]: Note: 1: 2205 2:  3: Error 
MSI (c) (00:F4) [14:23:19:267]: Note: 1: 2228 2:  3: Error 4: SELECT `Message` FROM `Error` WHERE `Error` = 1709 
MSI (c) (00:F4) [14:23:19:267]: Product: MyProject -- Installation failed.

MSI (c) (00:F4) [14:23:19:267]: Windows Installer installed the product. Product Name: MyProject . Product Version: 1.0.1. Product Language: 1033. Manufacturer: Me. Installation success or error status: 1603.

我会尽力提供一个答案,尽管我在这个问题上还没有完全跟上进度。如果您的应用程序需要.NET 4,这显然没有帮助,但是您是否尝试编译代码以针对.NET 2.0 framework而不是.NET 4?大多数计算机应该能够运行2.0代码,除非该框架被明确锁定以供使用——这在一些公司可能是这样

运行时限制这样的限制使我更喜欢原生的C++代码(或Installscript,后者在Installshield的更高版本中也是原生的),以便广泛使用

模拟自定义操作代码(.NET代码或有效的活动脚本,如VBScript)可以用于内部操作——它甚至可以让设置透明化,以了解它将执行哪些操作

除了以.NET 2.0为目标之外,您还可以启动并中止安装程序或将其作为一个组件安装

最后,这实际上是我的首选解决方案,您可以让应用程序本身使用所需的设置更新注册表,并将它们排除在您的设置之外。这允许更大的灵活性和错误处理。这完全取决于您添加的设置类型。HKLM设置通常必须由安装程序添加

  • 如果可能的话,通过使用vbscript自定义操作进行操作,麻烦会小得多
  • 最佳实践是仅在本机安装程序的方式绝对无法完成自定义操作时才使用自定义操作。根据您所描述的“CustomActions正在根据用户PC配置向注册表输入新值”,看起来您可以通过创建系统搜索来完成这一任务,搜索PC配置中的任何重要内容,然后在系统搜索返回的属性上使用注册表值对组件进行调整

  • 这是一个相当奇怪的修正,但是,我所要做的就是添加下面的代码片段。我感谢大家的支持

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
      <startup useLegacyV2RuntimeActivationPolicy="true">
        <supportedRuntime version="v4.0" />
        <supportedRuntime version="v2.0.50727" />
      </startup>
    </configuration>
    
    
    
    您好,我正在根据.NET 3.5编译项目。hte应用程序的性质不允许它对注册表进行后期更新。。它必须在应用程序启动之前完成。您可以添加一个设置为忽略的自定义操作,并让它除了将属性(例如CLRGOOD)设置为1之外不执行任何操作。然后,如果安装未成功设置,则可以使用LaunchCondition或键入19自定义操作中止安装。现在您正在测试实际的代码路径。这是一个详细的日志文件吗?如果没有,请尝试创建详细日志文件:
    msiexec.exe/I“C:\Test.msi”/QN/L*V“C:\Temp\msilog.log”
    。可能存在与.NET版本不同的错误。以下是供参考的所有.NET版本的列表,以及它们包含在哪些操作系统上:。这是另一个链接:是的,我同意这两种观点。我们需要更多关于注册表数据性质的信息,以确定它是否可以使用标准MSI功能写入-正如您所说,由于许多原因,这总是比自定义操作更可取(最重要的是可靠性)。这是您添加到Wix代码或应用程序config.xml中的内容吗?这是CustomAction.config文件,如果您使用Wix C#custom action项目模板,它将默认完成。