WIX:安装服务 - AppId条目被忽略/太迟了?

时间:2017-01-23 13:02:29

标签: wix windows-installer wix3 dcom

我一直在尝试使用WIX(3.10.1.2213)创建安装程序。

我正在安装使用DCOM的Windows服务。

我有一个使用 ServiceInstall ServiceControl 的组件来完成我需要的工作。

但是,对于 AppId 条目,我遇到了问题。 如果我使用以下内容......

<AppId Id="{REALGUID}" Advertise="no" Description="MyDescription" LocalService="MyService" ServiceParameters="-Service" />

...尝试启动服务时我的安装失败 - 使用了非常有用的 “...无法启动。请确认您具有足够的权限来启动系统服务”。

但是,如果我手动添加注册表项 - 在WIX之外(即使通过导出WIX创建的条目 - 所以它们肯定是相同的) - 安装成功。

有谁知道这里会发生什么? 总之,WIX创建了我期望的条目,但安装失败。 如果我导出这些条目并从头开始,将条目合并到注册表中并重新运行安装程序,它就会成功。

我试图将AppId条目移动到wxs文件中的其他位置。我还尝试使用<RegistryValue...>手动设置注册表项,但它似乎有相同的结果(我看到条目已创建,但服务无法启动)。

我不确定这是否相关,但此服务需要HKCR\AppID\{GUID}下的其他条目,我使用<RegistryValue...>创建。我不确定这是否会以某种方式导致冲突,我目前无法调试服务,因为它还远远不够。

此外,从here,我看到......

  

如果此元素嵌套在Fragment,Module或Product下   元素,必须做广告。

但我不完全理解它。这是否意味着'直接'嵌套在...下? 或者这可能是我的问题,我的wxs文件可能被严重排序,因为我需要注册表项而不是广告?

目前是这样的......

<Fragment>
  <Directory...>
    <Component...>
      <File...>
      <AppId...>
      <RegistryValue...>
      <ServiceInstall...>
      <ServiceControl...>

我很困惑 - 但希望遗漏一些明显的东西。 希望有人可以为我阐明它。

此致 广告

如果有帮助,这里是相关组件的编辑摘录......

    <Component Id="ServiceControl" Guid='REALGUID' >
      <File Id="MyApplication.exe" Name="MyApplication.exe" KeyPath="yes" Vital="yes" Source="$(var.MyApplication.TargetDir)\MyApplication.exe" />
      <AppId Id="{REALGUID}" Advertise="no" Description="MyApplication" LocalService="MyApplication" ServiceParameters="-Service" />
      <RegistryValue Root="HKCR" Key="AppID\{REALGUID}" Name="Group" Value="[GROUP]" Type="string" Action="write" />
      <ServiceInstall
                        Id="ServiceInstaller"
                        Type="ownProcess"
                        Name="MyApplication"
                        DisplayName="My Application"
                        Description="Some Description"
                        Start="auto"
                        Account="LocalSystem"
                        Interactive="yes"
                        ErrorControl="normal"
                        Vital="yes" >
        <ServiceDependency Id="[FTPSERVICE]" />
      </ServiceInstall>
      <ServiceControl Id="MyApplication" Name="MyApplication" Start="install" Stop="uninstall" Remove="uninstall" Wait="yes" />
    </Component>

0 个答案:

没有答案