I was searching the internet for an interesting answer to a question like this, but considering I can't find a better solution to what I already have, let's just go ahead and answer this question from years ago for any future wanderers.
First, I would suggest storing your assets into an archive-based system. What I mean by this is organizing your assets into categories that fit into individual indices like so:
Index 0 (Sprites):
- Image 1
- Image 2
- Image 3
Index 1 (Sounds):
- Sound 1
- Sound 3
Index 2 (Scripts):
- Script 1
- Script 2
Once you have them organized like that, go ahead and program a type of Cache Store that holds something called a Checksum Table or Version Table. This table will hold information of all the files within the Cache Store such as the corresponding index it's in, the file size, file type, and file ID.
Now that your Cache system is complete, you can do two things. The first thing is write something up to pack this Cache Store into a Zip, GZip, BZip, 7Zip, Rar, or whatever your preference and send that over to the client from the server and unpack it onto the user's computer, or...you can try it the second way which saves A LOT bandwidth. The second way consists of the client sending an update request from the server once the client is connected to the network. The server then sends the client the Checksum/Version table which consists of the file information in the cache and the client will compare its current cache with the server's and make a list of files to request from the server. The server sends the requested file data to the client and the client will individually update each new file.