Windows 8又はWindows Server 2012に、PostgreSQL 8.2 の導入を試みると、失敗するようです。
次の様なエラーメッセージが表示されます。
Malformed permissions property: 'langid'
原因を特定致しました。
未初期化の変数に対する読み取りアクセスが原因のようです。(これは、PostgreSQL側に問題が有ります。Windows側の問題では有りません。)
修正ファイル編:
mstファイル置き場へのリンクを設置致します。使用方法につきましては、各人にて調査され、対処してください。自己責任でお願いいたします:
https://sites.google.com/site/kaihatsublog/pginstca
分析編:
次にコードを示します。(pgFoundary/pginstaller/pginst/ca/pginstca.cファイル中、RunInitdbから抜粋しています)
serverdir = strchr(langid,';'); if (!datadir) { SendErrorMessage(hInstall,L"Malformed permissions property: 'langid'."); return ERROR_INSTALL_FAILURE; }
serverdirに書き込んでいるのに、datadirを読み取っています。
Windows 8以前では、未使用のスタックが汚れていた(?)ため、発現しなかったようですが、
Windows 8以遠では、未使用のスタックを0で掃除する(?)ようになったため、発現するようです。
この問題は8.2以降で修正されていますが、8.2系列には補修が適用されていないようです。
Orca及びOllyDbg v2.01 (beta 2)の力を借り、解析しました所、次の様になっています。
そこでパッチを当てました。pginstca 3758 EC F0
Stirlingでパッチを適用し、Orcaで書き戻した所、セットアップが成功するようになりました。