2017-11-09 13 views
0

レジストリを利用してInnoでODBC接続を作成する作業をしています。私が進めてきた問題は、Innoが私が設定したすべてのキーを作成しないということです。私は64ビットバージョンのWindowsを使用しており、32ビットInnoインストーラを使用して32ビットアプリケーションをインストールしています。これは、32ビットODBCアドミニストレータの接続を作成し TESTDBF1InnoセットアップですべてのODBC REGキーが作成されない

:私は値を保持している接続TESTDBF1を持って :私は使用していますパスはHKLM \ SOFTWARE \ WOW6432NODE \ ODBC \ ODBC.INI

例です表示されるカスタムdBaseバージョン(IV)とディレクトリ(C:\ DIR)も指定する必要があります。これを行うには、以下のサブキーを追加する必要があります。または、ODBC管理者はデフォルトのdBaseバージョン(V)と現在のディレクトリのみを表示します。また

This Xbase directory is needed to hold the custom settings specified in the main TESTDBF1 section

The keys in the Xbase directory.

、私は名前を追加:文字列としてTESTDBF1をWOW6432NODE \ ODBC \ ODBC.INI \ ODBCデータソースに "ドライバMicrosoftのdBase(*。DBF)を行います"。

これらのコマンドをすべて実行するには、機能を確認するためにTESTDBF1.regを作成しました。このファイルを実行している/マージの際


Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1] 
"Driver"="C:\\WINDOWS\\system32\\odbcjt32.dll" 
"DefaultDir"="C:\\IBS" 
"DriverId"=dword:00000115 
"FIL"="dBase IV;" 
"SafeTransactions"=dword:00000000 
"UID"="" 

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1\Engines] 

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1\Engines\Xbase] 
"CollatingSequence"="ASCII" 
"Deleted"=hex:00 
"ImplicitCommitSync"="" 
"PageTimeout"=dword:00000005 
"Statistics"=hex:00 
"Threads"=dword:00000003 
"UserCommitSync"="Yes" 

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\ODBC\ODBC.INI\ODBC Data Sources] 
"TESTDBF1"="Driver do Microsoft dBase (*.dbf)" 

、すべてのキーが正常に作成されていると私は値がODBCアドミニストレータに表示されているカスタムを確認することができます。

だから、私は思っている - ちょっと働いて!今私はInnoに追加することができます! No. 私はInno Script Studioをコンパイラとして使用しています。 レジストリファイルTESTDBF1.regをインポートします。スクリプトに使用したばかりで、インストーラを実行しました。そのような運はありません。 \ WOW6432Node \ ODBC \ ODBC.INI \ TESTDBF1のキーはすべて作成されますが、次のサブディレクトリは作成されません(\ Engines \ Engineines \ Xbase)。注意:XbaseはODBC.INI \ ODBC管理者を開くと、TESTDBF1が保持されます。

のでTESTDBF1.regが再び動作を確認した後、私は革新に書いたコードを見て:

; Imported Registry File: "C:\Users\Support\Documents\test\TESTDBF1.reg" 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1; ValueType: string; ValueName: "Driver"; ValueData: "C:\WINDOWS\system32\odbcjt32.dll"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1; ValueType: string; ValueName: "DefaultDir"; ValueData: "C:\DIR"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1; ValueType: dword; ValueName: "DriverId"; ValueData: "$00000115"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1; ValueType: string; ValueName: "FIL"; ValueData: "dBase IV;"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1; ValueType: dword; ValueName: "SafeTransactions"; ValueData: "$00000000"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1; ValueType: string; ValueName: "UID"; ValueData: ""; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1\Engines\Xbase; ValueType: string; ValueName: "CollatingSequence"; ValueData: "ASCII"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1\Engines\Xbase; ValueType: binary; ValueName: "Deleted"; ValueData: "00"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1\Engines\Xbase; ValueType: string; ValueName: "ImplicitCommitSync"; ValueData: ""; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1\Engines\Xbase; ValueType: dword; ValueName: "PageTimeout"; ValueData: "$00000005"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1\Engines\Xbase; ValueType: binary; ValueName: "Statistics"; ValueData: "00"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1\Engines\Xbase; ValueType: dword; ValueName: "Threads"; ValueData: "$00000003"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1\Engines\Xbase; ValueType: string; ValueName: "UserCommitSync"; ValueData: "Yes"; Flags: uninsdeletekey; 
Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\ODBC Data Sources; ValueType: string; ValueName: "TESTDBF1"; ValueData: "Driver do Microsoft dBase (*.dbf)"; Flags: uninsdeletekey; 

うーん。私はそれに間違って何かを見つけることができません。私はインストールスクリプトを何度も何度も実行しましたが、何をしていてもインストールスクリプトの中から\ Engines \ Xbaseキーを書き込むことはできません。

ここで、インストールの最後に.regファイルを実行するだけですか?

私のスクリプトの一部は、これらのregキーの一部としてインストールディレクトリ(変更)を使用するためです。 ValueDataをメモします。例:

Root: HKLM; Subkey: SOFTWARE\WOW6432Node\ODBC\ODBC.INI\TESTDBF1; ValueType: string; ValueName: "DefaultDir"; ValueData: "{app}\IBS"; Flags: uninsdeletekey; 

インストーラを実行した後、これはすべてのヘルプははるかに高く評価されるだろう

Post Install Key

HKLM \ SOFTWARE \ WOW6432NODE \ ODBC \ ODBC.INI \ TESTDBF1で作成されたキーであります - 私はこの時点でかなり困惑しています。

答えて

0

私はそれを考え出したと思う - 投稿後数分。このポストは物事をまっすぐにするのに役立つでしょう。

32ビットのアプリケーションと32ビットのインストーラを使用して32ビットのキーを書き込む場合は、64ビットのレジストリディレクトリに書き込みます。あなたはInnoのバックエンドのものなので、WOW6432Nodeに書き込まないでください。それは単に書いていない。

64ビットディレクトリに書き込む必要があり、InnoとWindowsが何らかの形で通信し、32ビットの情報を自動的に取得してWOW6432Nodeに入れます。あなたは自分でそれをすることはできません。

私の実際の修正はすべての私のregエントリをHKLM \ SOFTWARE \ ODBC \ ODBC.INI \ testdbf1etcに変更することでしたし、そうすることですべてがうまくいってHKLM \ SOFTWARE \ WOW6432Node \ ODBC \ ODBC.INIに正しく書き込まれました\ testdbf1etc。

この部分がInnoでよく分かったと思います。上記のことを覚えていれば、私の.regファイルがうまくいった! Innoはキーを正しく書いていない人でしたが、デフォルトのWindows関数を参照するのではなく、アプリケーションであるため、予想通りです。

これはあなたの残りの部分に役立ちますように!

関連する問題