Trojan is a malicious program that doesn't have self replicating or spreading functions. It doesn't infect files and doesn't make copies to infect another computers. Tojans are usually delivered to victim's computer with other malicious programs, spam, exploits, worms, etc.
Virus is a self replicating program that attaches itself to common user executable files (applications, scripts, MS document, whatever) and changes its start code. So when you run infected file attached virus code will be executed at first and then original. It's one of possible scenarios.
Now answering you questions:
a virus is a program that does not self replicate and relies on the
host file being spread, it has malicious intent.
No, viruses are always self replicating
A trojan is a program that is run be deceiving the user into appearing
to be something legitimate and has malicious intent.
How are these different? To get a user to install a virus doesn't it
always require appearing as something legitimate.
Both malicious, but virus self replicates and trojan is spread by another ways(sometimes pretending to be a legitimate program).
Or does a trojan program run as expected so for example if it was a
game it would work fine but have done something malicious without the
user knowing. Where as a virus doesn't?
That is more like viruses do. You expect that you run for example Calculator and it runs, but before it starts virus does its "dirty" work.