2016-11-05 13 views
0

私は、自分自身でインストールしてログインするときにAdminパスワードを入力するよう求められているWindows 7のユーザーがいくつかあります。この場合、Inno Setupはそのユーザー用のプログラムをインストールしますが、サンプルのデータファイルは管理者のドキュメントフォルダに保存されます。Inno Setup - ユーザーのファイルを管理文書に入れます

Inno SetupでサンプルデータファイルをユーザーのDocumentsフォルダに保存するには、どうすればよいですか?

[Files] 
Source: "C:\dev\Installer Files\Chess Openings Wizard 2016\Game Trees\*.*"; DestDir: "{code:GetDataDir}\Game Trees"; Flags: uninsneveruninstall recursesubdirs 

function GetDataDir(Param: String): String; 
begin 
    { Return the selected DataDir } 
    Result := DataDirPage.Values[0]; 
end; 

答えて

0

あなたのアプローチは正しくありません。

の2つがあり、正しい方法:

  1. インストーラは、現在(非特権)ユーザーのためのアプリケーションをインストールする場合は、管理者権限を必要としません。

    PrivilegesRequired=lowest 
    

    次に、{userappdata} constant(など)は、現在のユーザーのフォルダを正しく参照します。

  2. インストーラがすべてのユーザー用にアプリケーションをインストールする場合、特定のユーザーのフォルダにファイルを配置するのは意味がありません。すべてのユーザーには、ファイルだけでなく、ファイルが必要です。この場合、推奨される方法は、{commonappdata} constant(または類似のもの)を使用して、ファイルを「共通」フォルダにインストールすることです。そしてアプリケーションが最初の実行時にユーザーフォルダにファイルをコピーさせるようにします。

    How to write to the user's My Documents directory with installer when the user used 'Run As Administrator'も参照してください。

また、ユーザーがこれら2つの方法のどちらかを選択できるようにすることもできます。
Make Inno Setup installer request privileges elevation only when neededを参照してください。別の同様の質問について

が、それは言って


を参照してください、あなたは(あなたが外部コピーユーティリティを実行することで、を求めるものを、行うことができますcopy,xcopy,robocopy)を使用して、ExecAsOriginalUser function(またはrunasoriginaluser flag[Run]のセクションを参照)。

ExecAsOriginalUser(
    'cmd.exe', '/c xcopy.exe "sourcefile" "%APPDATA%"', 
    '', SW_HIDE, ewWaitUntilTerminated, ResultCode); 

この方法の詳細については、Inno Setup Creating registry key for logged in user (not admin user)を参照してください。

関連する問題