Is it possible to use LimeLM and TurboActivate to first require a key before the INNO Installer will install the software, and then use that same key to control the Activation of our application, and manage the extra cost features?
Yes, LimeLM and TurboActivate can solve every step of this problem.
... require a key before the INNO Installer will install the software
We have a tutorial and an example Inno Setup project explaining how to limit the installer. See: Using TurboActivate with Inno Setup. We show how you can add a product key entry box to the installer and the different options you have for limiting the user's ability to install your app.
and the product is developed using C#.net.
We have a tutorial showing how to use TurboActivate in C# apps along with ready-made example code.
We have to trust our dealer to only install the features that have been purchase (we know this isn't a good process). Next, the customer must purchase a yearly service fee.
The way to solve this problem is to use Custom license features. This way when you generate a product key for your customers you can explicitly limit what features they can install (and use) and which features they can't use.
You can also use license feature to limit things like service fees, how long they're update contract allows free updates, etc. The "SaaS and time-limited licensing" article talks about one possible solution to the problem.
The final issue we face is that many of our clients do not allow their security computers on an open network.
For these customers you'll have to use "offline activation" -- which is just the regular online activation process split into 2 parts. This way your customers on closed networks (like banks, certain government institutions, etc.) can still activate your app.
Tell me if this helps.