The KillMeSoftly library contains fairly simple code. It contains an 
entry point, named "KillMeSoftly", which, when called, reads the value 
of MSI property "CustomActionData". The value of "CustomActionProperty" 
contains the name of the process to kill. The 
"CustomActionProperty"property is set within installation, as already 
described in my previous post. "KillMeSoftly" function than calls 
KillMeSoftlyInternal function, which does all the heavy lifting:
* calls the CreateToolhelp32Snapshot Win32 API function to get all 
currently running processes
* iterate through processes and compares the name of the running process 
to the value, contained within "CustomActionData" property; if process 
name matches the value within "CustomActionData" property, it will call 
the TerminateApp function.

The TerminateApp function enumerates all windows (using EnumWindows 
Win32 API function) and finds those windows, that belong to the process 
we are about to terminate. If a window belongs to that process, it posts 
a WM_CLOSE message to its message que. After all process's windows have 
received WM_CLOSE message, the TerminateApp function waits for maximal 2 
seconds if the process was actually terminated. If not, the TerminateApp 
function will call the TerminateProcess Win32 API function to forcibly 
terminate the process.

I believe that this post should be posted to some Win32 Programming 
group rather than here, but I hope anyone will find it useful :)

Cheers,
  Boris

P.S. How to "softly" terminate an application is described

http://support.microsoft.com/kb/178893 as already pointed out within my 
previous post. The code sample also contains extensive comments for better 
understanding.



Anidil wrote:
> Hi Boris..
>
> I am going through the KillMeSoftly code and trying to create a similar
> wrapper custom action for another DLL to make it MSI compatible.Do you have
> any pointers or links which would help me understand how the code works?
>
> thanks
> Praveen
>
> Boris Krivonog wrote:
>   
>> Attached is a simple VS 2005 project which locates a process by name and 
>> sends it a WM_CLOSE. If that doesn't close the app, it will forcibly 
>> kill the app; as specified by http://support.microsoft.com/kb/178893.
>> In order to use it, build the attached project, add the build library 
>> (KillMeSoftly.dll) to WiX project: If you would want to terminate 
>> notepad.exe, you would add something like:
>>
>> <Binary Id="KillMeSoftlyDll" SourceFile="<path to KillMeSoftly.dll>" />
>>
>> Add a custom action:
>>
>> <CustomAction Id="TerminateNotepad.SetProperty" Return="check" 
>> Property="CustomActionData" Value="Notepad.exe" />
>> <CustomAction Id="TerminateNotepad" BinaryKey="KillMeSoftlyDll" 
>> DllEntry="KillMeSoftly" />
>>
>> Add custom actions to i.e. InstallExecuteSequence:
>>
>> <InstallExecuteSequence>
>>      <Custom Action="TerminateNotepad.SetProperty" 
>> After="CostFinalize">1</Custom> <!-- Adjust your condition properly -->
>>      <Custom Action="TerminateNotepad" 
>> After="TerminateNotepad.SetProperty">1</Custom> <!-- Adjust your 
>> condition properly -->
>> </InstallExecuteSequence>
>>
>> KillMeSoftly.dll will read the name of the process to "softly" terminate 
>> from CustomActionData property, therefore you must set its value prior 
>> calling it. This way you can terminate more processes without modifying 
>> the KillMeSoftly.dll.
>> Of course, use the attached code on your own risk.
>>
>> P.S. Rename attached file to KillMeSoftly.zip.
>>
>>     
>>> Anidil wrote:
>>>       
>>>> Thanks for the reply Boris.
>>>> As per my understanding, there is a feature <CloseApplication/> with Wix
>>>> v3.0 which sends the WM_CLOSE message to the systray.exe.But right 
>>>> now i'm
>>>> using WiX v2.0; any idea how to implement the same here?
>>>>
>>>>
>>>> Boris Krivonog wrote:
>>>>  
>>>>         
>>>>> You should terminate your system tray application "softly", meaning 
>>>>> that you send WM_CLOSE message to systray.exe. This way, the 
>>>>> systray.exe application is notified that it is about to shut down 
>>>>> and has time to remove icon from tray. See link for details: 
>>>>> http://support.microsoft.com/kb/178893. Off course, systray.exe must 
>>>>> have a valid window which will shut down you app when this message 
>>>>> is received.
>>>>>
>>>>> Hope this helps.
>>>>>
>>>>> Anidil wrote:
>>>>>    
>>>>>           
>>>>>> Oki..I could get the systray process killed but the tray icon waits 
>>>>>> for a
>>>>>> mouse over to disapear, because of that the installer throws an 
>>>>>> icon file
>>>>>> in
>>>>>> use dialog.Is there a way to avoid this ?
>>>>>>
>>>>>>
>>>>>> Alexander Shevchuk wrote:
>>>>>>        
>>>>>>             
>>>>>>> "Files In Use" dialog is shown by InstallValidate action.  
>>>>>>> Schedule your
>>>>>>> custom action before InstallValidate.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: [EMAIL PROTECTED]
>>>>>>> [mailto:[EMAIL PROTECTED] On Behalf Of Anidil
>>>>>>> Sent: Friday, February 22, 2008 3:16 AM
>>>>>>> To: wix-users@lists.sourceforge.net
>>>>>>> Subject: [WiX-users] Custom action sequencing problem
>>>>>>>
>>>>>>>
>>>>>>> I use the following custom action to kill systray process befre the
>>>>>>> uninstall.
>>>>>>> <Binary Id= ...... />
>>>>>>> <CustomAction Id="StopUserExe" BinaryKey="taskkill" ExeCommand ="/im
>>>>>>> systray.exe /t /f" Impersonate="yes" Return="asyncNoWait" />
>>>>>>>
>>>>>>>
>>>>>>> <InstallExecuteSequence>
>>>>>>>       <Custom Action="StopUserExe"
>>>>>>> Before="RemoveFiles">Installed</Custom>
>>>>>>> </InstallExecuteSequence>
>>>>>>>
>>>>>>> This works fine but i get the Files in Use dialog before the CA 
>>>>>>> actually
>>>>>>> runs.How do i be sequencing the CA to run at the start of 
>>>>>>> uninstall? Or
>>>>>>> is
>>>>>>> there any way to sequence 'Files in Use' dialog? Please help
>>>>>>> -- 
>>>>>>> View this message in context:
>>>>>>> http://www.nabble.com/Custom-action-sequencing-problem-tp15632069p15632069.html
>>>>>>>  
>>>>>>>
>>>>>>> Sent from the wix-users mailing list archive at Nabble.com.
>>>>>>>
>>>>>>>
>>>>>>> -------------------------------------------------------------------------
>>>>>>>  
>>>>>>>
>>>>>>> This SF.net email is sponsored by: Microsoft
>>>>>>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>>>>>>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>>>>>>> _______________________________________________
>>>>>>> WiX-users mailing list
>>>>>>> WiX-users@lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>>>>>>
>>>>>>> -------------------------------------------------------------------------
>>>>>>>  
>>>>>>>
>>>>>>> This SF.net email is sponsored by: Microsoft
>>>>>>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>>>>>>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>>>>>>> _______________________________________________
>>>>>>> WiX-users mailing list
>>>>>>> WiX-users@lists.sourceforge.net
>>>>>>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>>>>>>
>>>>>>>
>>>>>>>             
>>>>>>>               
>>>>>>         
>>>>>>             
>>>>> ------------------------------------------------------------------------- 
>>>>>
>>>>> This SF.net email is sponsored by: Microsoft
>>>>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>>>>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>>>>> _______________________________________________
>>>>> WiX-users mailing list
>>>>> WiX-users@lists.sourceforge.net
>>>>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>>>>
>>>>>
>>>>>     
>>>>>           
>>>>   
>>>>         
>>  
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by: Microsoft
>> Defy all challenges. Microsoft(R) Visual Studio 2008.
>> http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
>> _______________________________________________
>> WiX-users mailing list
>> WiX-users@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/wix-users
>>
>>
>>     
>
>   


-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
WiX-users mailing list
WiX-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wix-users

Reply via email to