@emad-r One of the main points of using configuration management tools is that when using them properly you create idempotent operations (getting the same result no matter the number of times the operation is executed).
Instead of using cmd.run to execute the install, you could as others have mentioned the chocolatey module, or if you don't want to install chocolatey on your computers you could use the win_pkg which requries a repo created on the salt-master. Both of those modules are idempotent, so once you reach the desired state no matter how many times you run them they will not make any more changes.
https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.win_pkg.html
https://docs.saltstack.com/en/latest/ref/modules/all/salt.modules.chocolatey.html
The software available in the official windows git repo.
https://github.com/saltstack/salt-winrepo-ng
Creating a windows software repository:
On your salt master run
Sync the repo on your Windows minions
salt -G 'os:windows' pkg.refresh_dbNow you can use the pkg module in your states, or adhoc commands.
//Example adhoc command (remote execution) salt -G 'os:Windows' pkg.install salt-minionThat last command will always install the latest version of the salt-minion you could add the version parameter to specify the one you require.