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# System.IO.FileLoadException from.msi,但手动启动服务时不例外_C#_Wix - Fatal编程技术网

C# System.IO.FileLoadException from.msi,但手动启动服务时不例外

C# System.IO.FileLoadException from.msi,但手动启动服务时不例外,c#,wix,C#,Wix,这件事我已经玩弄了好几天了,现在我正在寻求帮助。我有一个使用WiX构建的.msi文件。它相当简单,它将一些文件复制到一个目录,并安装和运行一个服务。该服务(在我的示例中)只在OnStart启动的线程中调用Environment.Exit(0)。一旦该线程启动,我就会得到FileLoadException。我尝试过x32和x64配置。我试过Fuslogvw,但总是空的。我不知道还要做什么才能让它工作。我很乐意提供我的.xml(用于.msi)和我的C#程序,如果有人愿意看的话,这就是服务 谢谢 我让

这件事我已经玩弄了好几天了,现在我正在寻求帮助。我有一个使用WiX构建的.msi文件。它相当简单,它将一些文件复制到一个目录,并安装和运行一个服务。该服务(在我的示例中)只在OnStart启动的线程中调用Environment.Exit(0)。一旦该线程启动,我就会得到FileLoadException。我尝试过x32和x64配置。我试过Fuslogvw,但总是空的。我不知道还要做什么才能让它工作。我很乐意提供我的.xml(用于.msi)和我的C#程序,如果有人愿意看的话,这就是服务

谢谢


我让它工作了。我不确定它为什么会工作,但我猜是因为我正在从.msi中复制一个以前从未复制过的必需的.dll。(这个.dll已经存在了,所以我不认为我需要这个.msi来再次复制它。)我的猜测是,这个.msi以某种方式为它负责的所有文件分配了一个版本或其他东西,并且由于已经存在的.dll没有按照这个.msi进行版本控制,所以当它试图运行使用这个.dll的线程时失败了。合理猜测?

在什么帐户下安装此服务以启动?默认帐户,应该是LocalSystem帐户。我确实试着把它改成我自己的帐户,但不管怎样,我都犯了同样的错误。(我在Administrators组中。)Process Monitor是您的朋友()。对流程进行筛选,查找与访问文件相关的故障。好主意。我会试着看看发生了什么,然后再报告。谢谢。托管代码引用(除其他外)依赖于AssemblyVersion,MSI不关心它,它使用文件版本。依赖程序集的生成可能在AssemblyVersion中的某个地方有一个*符号,因此它可能与服务期望链接的内容不一致。GAC中的依赖项在StartService之后才可用,但所有DLL都在应用程序文件夹中,是吗?或者可能只是因为某些原因,所需的程序集没有出现在最终的MSI中,也许这就是它的全部。