我正在努力将一组安装程序从VS2010移动到WIX,并且遇到了NT服务应用程序的错误。
使用WIX安装程序创建和安装NT服务后,该服务不会查找按预期命名的app.config(ApplicationName.exe.config)。我们的应用程序名称类似于XXX.YYYYYYYY,并且在启动期间将调试器注入服务时,我可以看到它正在查找XXX.config而不是XXX.YYYYYYY.exe.config。
我尝试通过控制台运行应用程序,当我这样做时,它会查找正确的app.config文件名。使用VS2010安装程序还可以查找正确的app.config文件名。
wxi3.8中是否有一些我缺少的设置,或者输入的值不正确,会导致这种情况?以下是控制服务的wx段:
<Component Id="Service" Guid="DCE18608-D25F-4DC0-9E1B-C2E3575D0BFE">
<File Id="ServiceComponentMain" Name="$(var.XXX.YYYYYYY.TargetName)" Source="$(var.HHG.SpecOrderLoadSync.TargetPath)"
DiskId="1" Vital="yes" KeyPath="yes"/>
<ServiceInstall Id="Service" Name="$(var.XXX.YYYYYYY.TargetName)" Type="ownProcess" DisplayName="$(var.XXX.YYYYYYY.TargetName)"
Description="$(var.XXX.YYYYYYY.TargetName)" Start="auto" Account="NT AUTHORITY\LocalService" ErrorControl="normal">
<util:PermissionEx User="Everyone" ServicePauseContinue="yes" ServiceQueryStatus="yes"
ServiceStart="no" ServiceStop="yes" ServiceUserDefinedControl="yes"/>
</ServiceInstall>
<ServiceControl Id="Service" Stop="both" Remove="both" Name="$(var.XXX.YYYYYYY.TargetName)" Wait="no"/>
答案 0 :(得分:0)
在挖掘了这个注册表之后终于弄明白了。看来,使用我当前的wsx文件,它没有注册可执行文件的完整路径,包括最后的“.exe”。这是导致配置文件名混淆的原因。为什么在这个世界上这有所作为超出了我的想法,但是另一件让我烦恼的事情就是我猜...
要修复,将上面段中的File元素上的Name更改为$(var.XXX.YYYYYYY.TargetName).exe而不仅仅是$(var.XXX.YYYYYYY.TargetName)似乎有效。