title: Installing a driver using Inno Setup
body: <p>I'm creating setup for my application in <code>Inno Setup</code>, and I will probably need to install <strong>driver</strong> sometime in the future. However, I need to know some tips about installing drivers in <code>Inno Setup</code> now, so I can easily add the driver into the setup when it's needed.</p>
  
  <hr>
  
  <ol>
  <li><p>Should I force the user to install program only into <code>C:\Program Files\&lt;app&gt;\</code>, or it doesn't matter and I should let him install it even on <code>network drive</code>?</p></li>
  <li><p>Should I install the driver in <code>C:\Windows\</code>, to make it available anytime (even without network drive), or it doesn't matter as well?</p></li>
  <li><p><strong>Is it possible to start driver on-demand?</strong> I want to release new versions of my program, and I need to create the setup <strong>so it doesn't require reboot</strong> after <a href="http://www.vincenzo.net/isxkb/index.php?title=Upgrades" rel="nofollow noreferrer">updating my app</a>. So is it possible to shutdown the driver, overwrite it with new version, and turn on again (as you can with services) without restarting Windows?</p></li>
  <li><p>Is it possible to overwrite the driver so easily (as mentioned in question <strong>3</strong>), or is it recommended to always fully <a href="https://stackoverflow.com/questions/2000296/innosetup-how-to-automatically-uninstall-previous-installed-version">uninstall the program, and then again install</a> the new version?</p></li>
  <li><p>Could you please include some additional tips about <strong>installing/uninstalling/updating drivers</strong> you find important? I'm sure I've missed some important points.</p></li>
  </ol>
  
  <hr>
  
  <p>I don't have much driver-experience nor knowledge, so I apologize for somewhat confused questions.</p>
  
  <p>And it is probably important what kind of driver would it be, so there is a related question, which should answer that:
  <a href="https://stackoverflow.com/questions/3223406/low-level-mouse-hook-and-directx">Low level mouse hook and DirectX</a></p>
  
  <h2>Driver Development Resources</h2>
  
  <p>I've found some helpful links regarding driver development. Use this as a reference.</p>
  
  <p>Driver Development at CodeProject - <a href="http://www.codeproject.com/KB/system/driverdev.aspx" rel="nofollow noreferrer">Part 1</a>, <a href="http://www.codeproject.com/KB/system/driverdev2.aspx" rel="nofollow noreferrer">Part 2</a>, <a href="http://www.codeproject.com/KB/system/driverdev3.aspx" rel="nofollow noreferrer">Part 3</a>, <a href="http://www.codeproject.com/KB/system/driverdev4asp.aspx" rel="nofollow noreferrer">Part 4</a>, <a href="http://www.codeproject.com/KB/system/driverdev5asp.aspx" rel="nofollow noreferrer">Part 5</a>, <a href="http://www.codeproject.com/KB/system/driverdev6asp.aspx" rel="nofollow noreferrer">Part 6</a><br>
  <a href="http://www.catch22.net/tuts/kernel1.asp" rel="nofollow noreferrer">http://www.catch22.net/tuts/kernel1.asp</a>
  <a href="http://www.catch22.net/tuts/kernel101" rel="nofollow noreferrer">Introduction to Device Drivers</a><br>
  <a href="http://www.rohitab.com/discuss/topic/24166-windows-driver-development-tutorial/" rel="nofollow noreferrer">Windows Driver Development Tutorial</a></p>