Im not sure what you mean about 'include search options' .. what I offer for info is this - I have a process that builds a custom PDF - it cant be generated from Crystal or the like, custom data is 'stamped' onto the PDF
The program needs to offer a 'preview generated report' function - so, it uses
AssocQueryString function (Windows)[
^] and such to make sure there's a program capable of displaying the PDF (and on two different machines, one's using Adobe Acrobat Reader and another something completely different).
Once I've checked that there is a viewer available, at the point where a 'Preview' is required, I do a 'Shell Execute' with the filename of the PDF on disk, and set the Operation to 'Open' which then pops up the PDF in the associated viewer on the machine.
So, flipping around your issue a little bit, I would include the powerpoint ppt and/or pptx as resources in the exe, use reflection to find these resources and give the user a choice on which one(s) to view, then extract from the exe to disk and do a Shell Execute 'open' on the file ..
There are other whistles and bells to add here, like waiting/detecting that the view process has finished and tidying up the extracted file cleanly
My suggestion - start simple
A Winforms app
a) On Form Load run code to check if there's an app associated with .ppt or .pptx and handle if not
b) add a listbox and a 'view button'
c) reflect for a list of resource names and display them in the listbox
d) when the user has a listbox item selected and click's the 'view' button, extract that resource to disk, perform the ShellExecute process, wait for it to finish, tidy up the file