3

私のアプリケーションでは、すべてのユーザーが独自の設定を持っており、その設定をそのユーザーのアプリケーションデータディレクトリのサブディレクトリに保存します。アンインストール中に、コンピューター上のすべてのユーザーのこれらの設定を削除したいと思います。Inno Setupでそれを行うにはどうすればよいですか?

つまり、各ユーザーのアプリケーションデータディレクトリ(共有アプリケーションデータディレクトリではない)を含むリストを取得して、MyAwesomeAppそこからディレクトリを削除できるようにする必要があります。それを行う方法はありますか?

4

2 に答える 2

6

Windowsの設計上、できません。同じデザインで、プロファイルフォルダへのアクセスも停止します。

さらに、ユーザーがデータを再インストールしたり、プロファイルをローミングしたりする場合に備えて、ユーザーのデータを残しておくことをお勧めします。

于 2011-09-08T11:14:37.117 に答える
2

アンインストーラーが管理者権限で実行されていると仮定すると、ユーザーディレクトリを取得して、そこにあるすべてのユーザーディレクトリを列挙することができます。

好きな言語で書かれたInnoSetupから実行可能ファイルを実行できます。その中で、 SHGetSpecialFolderPath関数を使用して、最初に現在のユーザーのアプリケーションデータディレクトリを取得できます。Win7の場合は次のようになります。

c:\Users\MyUser\AppData\Roaming\

GetUserNameを使用してユーザーの名前(この場合はMyUser)を取得し、親ディレクトリを見つけて、文字列を親ディレクトリ「C:\Users\」と「AppData\Roaming\」に分割できます。次に、FindFirstFile / FindNextFileを使用してすべてのユーザーディレクトリを列挙し、2番目の部分「AppData \ Roaming \」をそれらに追加して、ファイルが存在するかどうかを確認できます。SHGetSpecialFolderPathから取得したディレクトリを分割することで、XP(C:\ Documents and Settings \ MyUser \ Application Data "などを返す)とWin7の両方で機能するようになります。基本的には、MyUserをすべてのユーザーの名前に置き換えるだけです。 SHGetSpecialFolderPathによって返される文字列内。

これがOSのセキュリティを回避するのか、それとも移動ユーザーで機能するのかはわかりません。

于 2011-09-16T07:06:40.370 に答える