In principle you could roll your own installer, especially if your app is manually downloaded by users. However, you will be missing some benefits that installers typically offer:
Automated removal - all changes added during install can be automatically undone during uninstall
elevated privileges - some installation systems can run with elevated privileges, and can perform administrative tasks at installation time that the user installing the software would not ordinarily be able to perform
Re-installation - if any of your programs files become deleted or corrupted, the installer can reinstall these.
Silent install - installation of the product without a user interface, and sometimes without the user initiating the install (e.g. happens as part of machine startup or user login.)
Rollout, group configuration: for large deployments, installation packages can be deployed to many users at once and upgrades can be managed.
Packaging - often typically package all files in a single package, usually compressed that is then uncompressed at installation time. The package may also be digitally signed for authentication.
You could provide some or all of this in your app, but you'd be re-engineering a lot of code that is available for free already. See for example, AdvancedInstaller, which produces MSI files for windows (free edition available.)
Alternatively, there is the WiX toolset for producing MSIs from an XML desciption.