Что касается # 1, то, как сказал Xstahef, вам необходима предварительная версия .NET framework.
Вы можете поместить распространяемый .NET в ваш установщик, и если вы обнаружите, что среда выполнения .NET не установлена, то предложите пользователю запустить и установить распространяемый .NET, содержащийся в вашем установщике (это мы сделали некоторое время назад). InstallShield предоставил нам эту функциональность). Но это не рекомендуется: среда выполнения .NET значительно увеличилась в размерах (в зависимости от версии, которая вам нужна на компьютере вашего клиента), и многие клиенты (по крайней мере, образованные клиенты) не будут доверять установке среды выполнения из ваш установщик. Кроме того, вам может потребоваться проверить в юридическом отделе вашей компании, прежде чем включать сторонний компонент в вашу установку.