の既定のパスを定義しています。私のアプリケーションの更新プログラムが以前に保存したインストールパスをDefaultDirNameとして取得できるように、Windowsレジストリを読み込もうとしています。Inno Setup - [code]
私は次のように私は、関数を呼び出す必要があることをどこかで読んだ:問題は、私は機能は以前のものを見つけられない場合には、デフォルトのパスを定義する必要があるということです
DefaultDirName="{code:GetPath}"
。たとえば、 'C:\ MyPath'などです。だから私はこれをした:
[Code]
function GetPath(Value: String): String;
var
OrigPath: string;
begin
Result := '{sd}\MyPath';
if RegQueryStringValue(HKCU, 'Software\MyApp', 'PathExec', OrigPath) then
Result := OrigPath;
end;
これは動作していません。セットアップを実行すると、宛先ダイアログボックスで、「C:\ MyPath」ではなく「C:\ PathOfMySetup \ {sd} \ MyPath」になります。
"MyPath"をシステムドライブに作成するには、最初の "Result:="行で何を書きますか?
ありがとうございました。
アプリケーションのみをインストールする場合は、アプリケーションに「HKCU」レジストリキーがありますか? –
これは最初のResultの目的ではなく、デフォルトとして機能するのでしょうか? RegQueryStringValueがキーを見つけられなかった場合、関数はC:\ MyPathを返してdirダイアログを満たします。 – mehrlich
しかし、 'DefaultDirName'は新規インストールのためのデフォルトインストールパスです。再インストール/アップグレードの場合、値は使用されません(デフォルト)。だからあなたのコードは実際に私には意味をなさない。あなたは単純な 'DefaultDirName = {sd} \ MyPath'で同じ動作をします。 –