2011-12-09 4 views
1

InnoScriptGenerator 1.0.3.1を実行してインストールスクリプトを作成しています。 すべてがレジストリの作成を除いて機能します。Inno Script Generator - レジストリエントリを作成できません

スクリプトを実行する[レジストリ]

Root: HKLM; Subkey: SOFTWARE\DocAssist; ValueType: none; Permissions: admins-full; Flags: uninsdeletekey createvalueifdoesntexist; 
Root: HKLM; Subkey: SOFTWARE\DocAssist; ValueType: string; ValueName: InstallDir; ValueData: {app}; Permissions: admins-full; Flags: uninsdeletekey createvalueifdoesntexist 

、エラーを与えるものではありませんが、また、行います。私は2つのエントリを作成したい...

​​

私のスクリプト行は、次のとおりですレジストリにエントリを作成しないでください。私はInnoScriptジェネレータからそれを実行すると

、デバッグログが

Screen Install Log

を示して私が管理者ユーザーとしてこれを実行しています。 Windows 7 64ビット版で動作しています。 情報の唯一の他の興味深い作品ということは、(デルファイを経由して)、それは、レジストリにアクセスしたときに、私のアプリケーションである私がようレジストリを定義する必要がありました...

MyRegistry := TRegistry.Create(KEY_READ OR KEY_WOW64_64KEY); 

MyRegistry := TRegistry.Create(); 

理由だけでこのようなレジストリセクションだけで正常に動作設定...

答えて

2

Inno(別に言わない限り)は、その値をレジストリの32ビットビューに書き込んでいます。 次に、あなたのアプリに(KEY_WOW64_64KEYフラグを使用して)あなたのアプリケーションに64ビットビューのフォームを読むように伝えました。

あなたのアプリが実際には32ビットアプリケーションであるように聞こえますが、HKLMを排他的に使用し、64ビットフラグを忘れてしまいます。 これは、値が正しく32ビットビューでHKEY_LOCAL_MACHINE\SOFTWARE\DocAssistに書き込まれるようになります(64ビットビューでHKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\DocAssistである。)

詳細については、Microsoftのウェブサイト上でvariousarticlesを参照してください。

1

を動作しませんでした:

[registry] 
Root: HKLM; Subkey: SOFTWARE\DocAssist; ValueType: none; Flags: uninsdeletekey  createvalueifdoesntexist; 
Root: HKLM; Subkey: SOFTWARE\DocAssist; ValueType: string; ValueName: InstallDir;  ValueData: {app}; Permissions: admins-full; Flags: uninsdeletekey createvalueifdoesntexist 

既存のキーでは維持を設定できません。また、管理者権限の問題がないため、HKLMではなくHKCUを使用することを検討することもできます。これは、VistaとUAC以来、レジストリを使用する正しい方法です。

+1

Re HKCU vs HKLM。逆のことですが、セットアップでは特定のHKCUへの信頼性の高い書き込みができず、セットアップ用のものはユーザー自身のものと大きく異なる場合があります。このようなグローバルデータはHKLMに入るはずです。 – Deanna

関連する問題