mirror of
				https://github.com/winfsp/winfsp.git
				synced 2025-10-30 11:38:39 -05:00 
			
		
		
		
	installer: CustomActions: ServiceRunning
This commit is contained in:
		
							
								
								
									
										83
									
								
								build/VStudio/installer/CustomActions/CustomActions.cpp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										83
									
								
								build/VStudio/installer/CustomActions/CustomActions.cpp
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,83 @@ | ||||
| /** | ||||
|  * @file CustomActions.cpp | ||||
|  * | ||||
|  * @copyright 2015-2016 Bill Zissimopoulos | ||||
|  */ | ||||
| /* | ||||
|  * This file is part of WinFsp. | ||||
|  * | ||||
|  * You can redistribute it and/or modify it under the terms of the | ||||
|  * GNU Affero General Public License version 3 as published by the | ||||
|  * Free Software Foundation. | ||||
|  * | ||||
|  * Licensees holding a valid commercial license may use this file in | ||||
|  * accordance with the commercial license agreement provided with the | ||||
|  * software. | ||||
|  */ | ||||
|  | ||||
| #define WIN32_LEAN_AND_MEAN | ||||
| #include <windows.h> | ||||
| #include <msiquery.h> | ||||
| #include <wcautil.h> | ||||
| #include <strutil.h> | ||||
|  | ||||
| UINT __stdcall ServiceRunning(MSIHANDLE MsiHandle) | ||||
| { | ||||
| #if 0 | ||||
|     WCHAR MessageBuf[64]; | ||||
|     wsprintfW(MessageBuf, L"PID=%ld", GetCurrentProcessId()); | ||||
|     MessageBoxW(0, MessageBuf, L"" __FUNCTION__ " Break", MB_OK); | ||||
| #endif | ||||
|  | ||||
|     HRESULT hr = S_OK; | ||||
|     UINT err = ERROR_SUCCESS; | ||||
|     PWSTR ServiceName = 0; | ||||
|     SC_HANDLE ScmHandle = 0; | ||||
|     SC_HANDLE SvcHandle = 0; | ||||
|     SERVICE_STATUS ServiceStatus; | ||||
|     int Result = 0; | ||||
|  | ||||
|     hr = WcaInitialize(MsiHandle, __FUNCTION__); | ||||
|     ExitOnFailure(hr, "Failed to initialize"); | ||||
|  | ||||
|     WcaGetProperty(L"" __FUNCTION__, &ServiceName); | ||||
|     ExitOnFailure(hr, "Failed to get ServiceName"); | ||||
|  | ||||
|     WcaLog(LOGMSG_STANDARD, "Initialized: \"%S\"", ServiceName); | ||||
|  | ||||
|     ScmHandle = OpenSCManagerW(0, 0, 0); | ||||
|     ExitOnNullWithLastError(ScmHandle, hr, "Failed to open SCM"); | ||||
|  | ||||
|     SvcHandle = OpenServiceW(ScmHandle, ServiceName, SERVICE_QUERY_STATUS); | ||||
|     if (0 != SvcHandle && QueryServiceStatus(SvcHandle, &ServiceStatus)) | ||||
|         Result = SERVICE_STOPPED != ServiceStatus.dwCurrentState; | ||||
|  | ||||
|     WcaSetIntProperty(L"" __FUNCTION__, Result); | ||||
|  | ||||
| LExit: | ||||
|     if (0 != SvcHandle) | ||||
|         CloseServiceHandle(SvcHandle); | ||||
|     if (0 != ScmHandle) | ||||
|         CloseServiceHandle(ScmHandle); | ||||
|  | ||||
|     ReleaseStr(ServiceName); | ||||
|  | ||||
|     err = SUCCEEDED(hr) ? ERROR_SUCCESS : ERROR_INSTALL_FAILURE; | ||||
|     return WcaFinalize(err); | ||||
| } | ||||
|  | ||||
| extern "C" | ||||
| BOOL WINAPI DllMain(HINSTANCE Instance, DWORD Reason, PVOID Reserved) | ||||
| { | ||||
|     switch(Reason) | ||||
|     { | ||||
|     case DLL_PROCESS_ATTACH: | ||||
|         WcaGlobalInitialize(Instance); | ||||
|         break; | ||||
|     case DLL_PROCESS_DETACH: | ||||
|         WcaGlobalFinalize(); | ||||
|         break; | ||||
|     } | ||||
|  | ||||
|     return TRUE; | ||||
| } | ||||
							
								
								
									
										2
									
								
								build/VStudio/installer/CustomActions/CustomActions.def
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								build/VStudio/installer/CustomActions/CustomActions.def
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,2 @@ | ||||
| EXPORTS | ||||
|     ServiceRunning | ||||
							
								
								
									
										112
									
								
								build/VStudio/installer/CustomActions/CustomActions.vcxproj
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										112
									
								
								build/VStudio/installer/CustomActions/CustomActions.vcxproj
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,112 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup Label="ProjectConfigurations"> | ||||
|     <ProjectConfiguration Include="Debug|Win32"> | ||||
|       <Configuration>Debug</Configuration> | ||||
|       <Platform>Win32</Platform> | ||||
|     </ProjectConfiguration> | ||||
|     <ProjectConfiguration Include="Release|Win32"> | ||||
|       <Configuration>Release</Configuration> | ||||
|       <Platform>Win32</Platform> | ||||
|     </ProjectConfiguration> | ||||
|   </ItemGroup> | ||||
|   <PropertyGroup Label="Globals"> | ||||
|     <ProjectGuid>{95C223E6-B5F1-4FD0-9376-41CDBC824445}</ProjectGuid> | ||||
|     <RootNamespace>CustomActions</RootNamespace> | ||||
|     <Keyword>Win32Proj</Keyword> | ||||
|     <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" /> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>DynamicLibrary</ConfigurationType> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|     <WholeProgramOptimization>true</WholeProgramOptimization> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration"> | ||||
|     <ConfigurationType>DynamicLibrary</ConfigurationType> | ||||
|     <PlatformToolset>v140</PlatformToolset> | ||||
|     <CharacterSet>Unicode</CharacterSet> | ||||
|   </PropertyGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" /> | ||||
|   <ImportGroup Label="ExtensionSettings"> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets"> | ||||
|     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||
|   </ImportGroup> | ||||
|   <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets"> | ||||
|     <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" /> | ||||
|   </ImportGroup> | ||||
|   <PropertyGroup Label="UserMacros" /> | ||||
|   <PropertyGroup> | ||||
|     <_ProjectFileVersion>14.0.25123.0</_ProjectFileVersion> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||
|     <OutDir>$(SolutionDir)build\$(Configuration)\</OutDir> | ||||
|     <IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir> | ||||
|     <LinkIncremental>true</LinkIncremental> | ||||
|   </PropertyGroup> | ||||
|   <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||
|     <OutDir>$(SolutionDir)build\$(Configuration)\</OutDir> | ||||
|     <IntDir>$(SolutionDir)build\$(ProjectName).build\$(Configuration)\$(PlatformTarget)\</IntDir> | ||||
|     <LinkIncremental>false</LinkIncremental> | ||||
|   </PropertyGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>Disabled</Optimization> | ||||
|       <AdditionalIncludeDirectories>$(WIX)sdk\VS2015\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <MinimalRebuild>true</MinimalRebuild> | ||||
|       <BasicRuntimeChecks>Default</BasicRuntimeChecks> | ||||
|       <RuntimeLibrary>MultiThreaded</RuntimeLibrary> | ||||
|       <PrecompiledHeader>NotUsing</PrecompiledHeader> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>EditAndContinue</DebugInformationFormat> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;Version.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalLibraryDirectories>$(WIX)sdk\VS2015\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <ModuleDefinitionFile>CustomActions.def</ModuleDefinitionFile> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <SubSystem>Windows</SubSystem> | ||||
|       <TargetMachine>MachineX86</TargetMachine> | ||||
|       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> | ||||
|       <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'"> | ||||
|     <ClCompile> | ||||
|       <Optimization>MaxSpeed</Optimization> | ||||
|       <IntrinsicFunctions>true</IntrinsicFunctions> | ||||
|       <AdditionalIncludeDirectories>$(WIX)sdk\VS2015\inc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> | ||||
|       <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CUSTOMACTIONTEST_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions> | ||||
|       <RuntimeLibrary>MultiThreaded</RuntimeLibrary> | ||||
|       <FunctionLevelLinking>true</FunctionLevelLinking> | ||||
|       <PrecompiledHeader>NotUsing</PrecompiledHeader> | ||||
|       <WarningLevel>Level3</WarningLevel> | ||||
|       <DebugInformationFormat>ProgramDatabase</DebugInformationFormat> | ||||
|       <BufferSecurityCheck>false</BufferSecurityCheck> | ||||
|     </ClCompile> | ||||
|     <Link> | ||||
|       <AdditionalDependencies>msi.lib;dutil.lib;wcautil.lib;Version.lib;%(AdditionalDependencies)</AdditionalDependencies> | ||||
|       <AdditionalLibraryDirectories>$(WIX)sdk\VS2015\lib\x86;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories> | ||||
|       <ModuleDefinitionFile>CustomActions.def</ModuleDefinitionFile> | ||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||
|       <SubSystem>Windows</SubSystem> | ||||
|       <OptimizeReferences>true</OptimizeReferences> | ||||
|       <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||||
|       <TargetMachine>MachineX86</TargetMachine> | ||||
|       <IgnoreAllDefaultLibraries>false</IgnoreAllDefaultLibraries> | ||||
|     </Link> | ||||
|   </ItemDefinitionGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="CustomActions.cpp" /> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <None Include="CustomActions.def" /> | ||||
|   </ItemGroup> | ||||
|   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" /> | ||||
|   <ImportGroup Label="ExtensionTargets"> | ||||
|   </ImportGroup> | ||||
| </Project> | ||||
| @@ -0,0 +1,19 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> | ||||
|   <ItemGroup> | ||||
|     <Filter Include="Source"> | ||||
|       <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier> | ||||
|       <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions> | ||||
|     </Filter> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <ClCompile Include="CustomActions.cpp"> | ||||
|       <Filter>Source</Filter> | ||||
|     </ClCompile> | ||||
|   </ItemGroup> | ||||
|   <ItemGroup> | ||||
|     <None Include="CustomActions.def"> | ||||
|       <Filter>Source</Filter> | ||||
|     </None> | ||||
|   </ItemGroup> | ||||
| </Project> | ||||
		Reference in New Issue
	
	Block a user