I"ve sold 100's of applications with packages using this structure and they all have been able to install and use the packages. And palettes and stylesheets automatically appear on their menus and the documentation is accessible. All they had to do was to unzip into their $UserBaseDirectory/Applications
folder.
So I'm a bit at a loss why this is not working for you, even with a simpler case.
Mathematica knows where to look because of one of the entries on the Path expression. Is it possible that you have somehow changed your Path definitions? Also in GlobalOptions, File Locations, NotebookPath there is an entry that points to:
FrontEnd`FileName[{$UserBaseDirectory, "Applications", Blank[],
"FrontEnd", "Palettes"}]
And on the Path expression there is an entry:
C:\Users\djmpark\AppData\Roaming\Mathematica\Applications
Has one of these somehow gotten changed on your computer? Maybe you could reinitialize your options by holding down Ctrl+Shift when starting Mathematica.
The simplest approach is to give packages a binary name: the application name "PalmerPractice" and the package name "TestPackage". So the BeginPackage statement would be:
BeginPackage[""PalmerPractice`TestPackage`"]
When a user just reads in an application such as:
<< PalmerPractice`
Then it looks to the PalmerPractice/Kernel/init.m file to read in all the packages you might have in the application, and do any other special initializations. That's how it's supposed to work, and how it always has worked for me and people I've sent applications. On Windows and Apple. So it is a bit of a mystery as to what is happening on your system.