Я создал установщик (через WiX), который в рамках установки устанавливает службу Windows (написанную на C#) и запускает эту службу Windows. Служба является FileSystemWatcher и следит за установкой подключаемых модулей в конкретный каталог. Первоначально он использовал переменное окружение (который указал на путь я хотел смотреть), который был создан установщиком WiX, но она была создана в отдельном каталоге, как показано ниже:Сервис не способен видеть переменную окружения
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="AppFolder" Name="MyApp">
<Component Id="WatcherService" Guid="[MY GUI ID]">
<File Id="WatcherEXE" Name="watcher.exe" DiskId="1" Source="../Watcher/bin/Release/Watcher.exe" KeyPath="yes" />
<ServiceInstall Id="Watcher" Name="PlugInWatcher" DisplayName="Plug-in Watcher" Type="ownProcess" Start="auto"
ErrorControl="normal" Description="Monitors the plug-in folder for new and deleted plug-ins." Account="[SERVICEACCOUNT]" Password="[SERVICEPASSWORD]" />
<ServiceControl Id="StartWatcherService" Name="PlugInWatcher" Start="install" Wait="no" />
<ServiceControl Id="StopWatcherService" Name="PlugInWatcher" Stop="both" Wait="yes" Remove="uninstall" />
</Component>
</Directory>
</Directory>
<Directory Id="CommonAppDataFolder" Name="CommonAppData">
<Directory Id="MyAppData" Name="MyAppData">
<Directory Id="PluginAppData" Name="Plugins">
<Component Id="PluginDir" Guid="[MY GUI ID]">
<CreateFolder Directory="PluginAppData" />
<RemoveFolder Id="PluginDir" On="uninstall" />
<Environment Id="PluginVar" Name="PLUGIN_DIR" Action="set" Permanent="no" System="yes" Value="[PluginAppData]" />
</Component>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
</Directory>
Теперь, я делаю почти то же самое, но переменная окружения сейчас создается в той же директории (ключевого пути?), как это:
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="AppFolder" Name="MyApp">
<Component Id="PluginDir" Guid="[MY GUI ID]" KeyPath="yes">
<Environment Id="PluginVar" Name="PLUGIN_DIR" Action="set" Permanent="no" System="yes" Value="[MyApp]" />
</Component>
<Component Id="WatcherService" Guid="[MY GUI ID]">
<File Id="WatcherEXE" Name="watcher.exe" DiskId="1" Source="../Watcher/bin/Release/Watcher.exe" KeyPath="yes" />
<ServiceInstall Id="Watcher" Name="PlugInWatcher" DisplayName="Plug-in Watcher" Type="ownProcess" Start="auto"
ErrorControl="normal" Description="Monitors the plug-in folder for new and deleted plug-ins." Account="[SERVICEACCOUNT]" Password="[SERVICEPASSWORD]" />
<ServiceControl Id="StartWatcherService" Name="PlugInWatcher" Start="install" Wait="no" />
<ServiceControl Id="StopWatcherService" Name="PlugInWatcher" Stop="both" Wait="yes" Remove="uninstall" />
</Component>
</Directory>
</Directory>
</Directory
этот вопрос, с первым методом, услуга работала нормально. Он запустится, найдите путь, связанный с переменной окружения, и проверит каталог. Однако со вторым методом этого больше не происходит. Служба NEVER видит переменную окружения. Переменная создается, служба запускается, но она ее никогда не видит ... даже если я перезагружаюсь и т. Д. Это действительно запутанная проблема, потому что и не имеет никакого смысла, почему.
Любые предложения?
Я действительно пробовал это, и это, похоже, не решило проблему. Я был вынужден перезагрузиться, чтобы увидеть изменения переменных среды, которые мне раньше не приходилось делать. – JasCav