新的 pg_msvc_generator 工具可用

發布於 2021-08-24,作者 Julien Rouhaud
相關開源

您好,

我很高興宣布 pg_msvc_generator 1.0.0 beta 版發布。

pg_msvc_generator 是一個新的工具,旨在幫助擴充套件作者提供其擴充套件的 Windows 版本。它使用 Perl 編寫,並以 PostgreSQL 許可證開源。

您可以參考專案的 README 以獲得完整的描述,或者參考 bug tracker,如果您遇到任何問題。

此工具由 2 個腳本組成

  • pg_msvc_generator.pl
  • release.pl

主要的 pg_msvc_generator.pl 腳本將在給定的擴充套件目錄中生成一個 msvc 子目錄,其中包含所需的 .sln.vcxproj 檔案,以便能夠使用 Visual Studio 2019 編譯擴充套件,並支援 Debug/Release 和 32/64 位元版本。它還將複製 release.pl 並產生一個 build.bat 腳本,該腳本可以自動編譯並為所有本地安裝的 PostgreSQL 版本建立發布歸檔檔案和安裝程式。

用法

pg_msvc_generator.pl [ options ]

Options:

--default version pgver  : default PostgreSQL version. This is only used
            if you compile the project without specifying a specific major
            version, or when the project is opened with Visual Studio
            IDE.  If not provided, a default value based on the year will
            be chosen (13 for 2021, 14 for 2022 and so on).
-d | --dir ext_directory : root directory of the extension source code.
-e | --extension         : extension name.  If not provided, the extension
            name will be assumed using the last part of the given root
            directory.
-h | --help              : Show this message.

例如

pg_msvc_generator.pl -d C:\git\hypopg

需求

在專案生成時:

  • 一個安裝了 Perl 的 Windows 主機,用於生成專案檔案

在擴充套件編譯時:

  • Perl
  • Visual Studio 2019
  • 您想要建置擴充套件的所有主要 PostgreSQL 版本,從 PGDG 套件以預設位置安裝 (C:\Program Files\PostgreSQL\$MAJOR_VERSION)
  • 可選地,NSIS 安裝在預設位置 (`C:\Program Files (x86)\NSIS) 以生成安裝程式

發布您的擴充套件

您需要做的就是執行 msvc\release.bat 腳本。它將設定 MSVC 環境並呼叫 release.pl 腳本。該腳本將準備好在 msvc\${extension_name}-${extension_version} 目錄下發布所需的一切。

它將自動找到已安裝的 PostgreSQL 版本,讀取 HKLM/SOFTWARE/PostgreSQL/Installations/ 登錄檔,使用所有這些版本編譯擴充套件,並為每個版本生成一個子目錄,其中包含 dll 和 SQL 腳本(如果有)、具有相同內容的 zip 歸檔檔案,以及可選的安裝程式。

例如,假設您已安裝 PostgreSQL 12 和 13,並發布了 HypoPG 1.3.2,並且已安裝 NSIS,則您的 msvc 目錄現在將具有以下額外內容

  • msvc\hypopg-1.3.2\12-x64\lib\hypopg.dll
  • msvc\hypopg-1.3.2\12-x64\share\extension\hypopg.control
  • msvc\hypopg-1.3.2\12-x64\share\extension\*.sql
  • msvc\hypopg-1.3.2\13-x64\lib\hypopg.dll
  • msvc\hypopg-1.3.2\13-x64\share\extension\hypopg.control
  • msvc\hypopg-1.3.2\13-x64\share\extension\*.sql
  • msvc\hypopg-1.3.2\hypopg-1.3.2-pg12-x64.exe
  • msvc\hypopg-1.3.2\hypopg-1.3.2-pg12-x64.zip
  • msvc\hypopg-1.3.2\hypopg-1.3.2-pg13-x64.exe
  • msvc\hypopg-1.3.2\hypopg-1.3.2-pg13-x64.zip

安裝程式

如果您已在預設位置 (C:\Program Files (x86)\NSIS) 安裝 NSIS,則 release.pl 腳本將生成一個 .nsi 檔案,並使用 makensis.exe 編譯它,以為執行 release.pl 腳本時找到的每個 PostgreSQL 主要版本生成一個特定的安裝程式。在執行時,安裝程式將嘗試讀取登錄檔機碼 HKEY_LOCAL_MACHINE\SOFTWARE\PostgreSQL\Installations\postgresql-$architecture-$majorversion\Base Directory 來發現伺服器的 PostgreSQL 安裝路徑。

如果找到該機碼,安裝程式將通知使用者並將其用作預設安裝位置。 否則,安裝程式將通知使用者未自動找到任何安裝,並將強制使用者選擇位置,然後才能繼續安裝。