Install cycles wallet programatically by sending ICP

It should be possible! You can store canister wasm as a Blob, and then install it using the ic management canister interface: https://mops.one/ic with install_code or install_chunked_code

See this thread: Install_code() - Easiest way to convert a .wasm module to [Nat8]?