Upgrade canister on ic with new dfx version

You’ll have to upgrade your wallet canister and run a command to upgrade your other canisters in order to use dfx 0.9.0. This is documented in the changelog and in the release notes. After running the steps to upgrade, you should not need the --wallet parameter.

Unfortunately we’ve published the dfx 0.9.0 release notes, as well as updated the docs to use dfx 0.9.0, but have not yet promoted dfx 0.9.0.

Breaking change: Canister commands, except for dfx canister create, will make the call directly, rather than via the user’s wallet. The --no-wallet flag is thus removed from dfx canister as its behavior is the default.

When working with existing canisters, use the --wallet flag in conjunction with dfx identity get-wallet in order to restore the old behavior.

You will need to upgrade your wallet and each of your existing canisters to work with the new system. To do so, execute the following in each of your dfx projects:

dfx wallet upgrade
dfx canister --wallet "$(dfx identity get-wallet)" update-settings --all --add-controller "$(dfx identity get-principal)"

To upgrade projects that you have deployed to the IC mainnet, execute the following:

dfx wallet --network ic upgrade
dfx canister --network ic --wallet "$(dfx identity --network ic get-wallet)" update-settings --all --add-controller "$(dfx identity get-principal)"
4 Likes