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で書き戻した所、セットアップが成功するようになりました。
後日調べました所、同じ指摘が過去に別の所で議論されていました。
返信削除http://archives.postgresql.org/pgsql-hackers/2011-10/msg00231.php
window8の環境でpostgresql8.2のうまく入りません。
返信削除検索なんとかここまでたどり着きました。ありがとうございます!
しかし、KU様のmst使い
msiexec /i postgresql-8.2.msi TRANSFORMS=new-8.2.22-pginstca.mst
で実行してみたところ、エラー2721が発生しました。
もう少し詳しく説明いただけないでしょうか
なんとか解決したいです!
はじめまして。
返信削除私の知っている方法ですと、ちょっと大変な作業になります。
Orcaを使って、msiファイルにmstファイルを適用する方法です。
改変後の物(27MB)をこっそりdropboxに置きますので、お急ぎでしたら、こちらをどうぞ: http://dl.dropbox.com/u/24560712/new-pg8.2.22w8.zip
手順はこのようになります。
(1) Windows Server 2003 SP1 Platform SDK Web Installから、Orcaのセットアップを入手
http://www.microsoft.com/en-us/download/details.aspx?id=6510
(2) Orcaをセットアップします
(3) Orcaを起動します
(4) [Tools]→[Options]で、[Database]の[Copy embedded streams during 'Save As']をオンにします。
(5) [File]→[Open]で、postgresql-8.2-int.msiを開きます
(6) [Transform]→[Apply Transform]で、new-8.2.22-pginstca.mstを開きます。
(7) [File]→[Save Transformed As]で、別のファイルに保存します。
(8) [File]→[Close]で、閉じます。
(9) 別のファイルの名前をpostgresql-8.2-int.msiに変更します。
(10) postgresql-8.2.msiを実行して、セットアップします。
KU様のインストールファイルで一機に解決しました。
返信削除今まで悩んでた何日間なんだったんだろうと思いました。
この恩を返ししたのですが、連絡先とかもらえるでしょうか
お役に立てて幸いです(^^
返信削除後の事は気にしないでください。