InstallShield 2012 InstallScript MSI プロジェクトがあり、Oracle SQL スクリプトを実行する必要があります。
私のテストスクリプトは次のようになります。
update zversion set comments = 'Oracle' where version = '1.30.1'
インストールを実行すると、「カスタム アクション。SQL インストール スクリプトを実行しています...」というダイアログが表示されてハングします。
ログ ファイルの最後のエントリ:
MSI (s) (70:30) [16:05:31:054]: op を実行しています: CustomActionSchedule(Action=ISSQLServerInstall,ActionType=1025,Source=BinaryData,Target=ISSQLServerInstall,CustomActionData=C:\Users\P\AppData \Local\Temp\~E303.tmp) MSI (s) (70:D4) [16:05:31:367]: リモート カスタム アクションを呼び出しています。DLL: C:\Windows\Installer\MSIEF3A.tmp、エントリポイント: ISSQLServerInstall 1: SQL 接続 'SQLServer' を処理しています... 1: SQL 接続 'SQLServer' をスキップします。この接続は、IS_SQLSERVER_CXNS_ABSENT_FROM_INSTALL プロパティで指定されます。1: SQL 接続 'Oracle' を処理しています... 1: 接続で実行する予定の SQL スクリプトが少なくとも 1 つあるかどうかを判断しています... 1: SQL スクリプト 'SqlScript5.sql1' の実行が予定されています。このスクリプトに指定されたスキーマ バージョンがある場合、最終決定は後で行われることに注意してください。スクリプトの実行 = RunOnInstall、アクション = インストール、コンポーネントの状態 = インストール、スキーマ = 1: SQL 接続を確立しようとしています... サーバー: P.PO.COM、データベース: MSOW 1: [Microsoft][ODBC ドライバー マネージャー] ドライバーの SQLSetConnectAttr失敗しました 1: SQL スクリプトを実行しようとしています... 1: SQL スクリプト 'SqlScript5.sql1' が実行されるかどうかを判断しています... 1: ターゲット データベースにスキーマ バージョンが見つからないため、SQL スクリプトが実行されます。1: 実行中の SQL スクリプト ファイル 'SqlScript5.sql1' を準備します。パス: 'C:\Users\P\AppData\Local\Temp\~E314.tmp' 1: 行 3 で SQL を実行 >>> SQL スクリプトを実行しようとしています... 1: SQL スクリプト 'SqlScript5.sql1' が実行されるかどうかを判断しています... 1: ターゲット データベースにスキーマ バージョンが見つからないため、SQL スクリプトが実行されます。1: 実行中の SQL スクリプト ファイル 'SqlScript5.sql1' を準備します。パス: 'C:\Users\P\AppData\Local\Temp\~E314.tmp' 1: 行 3 で SQL を実行 >>> SQL スクリプトを実行しようとしています... 1: SQL スクリプト 'SqlScript5.sql1' が実行されるかどうかを判断しています... 1: ターゲット データベースにスキーマ バージョンが見つからないため、SQL スクリプトが実行されます。1: 実行中の SQL スクリプト ファイル 'SqlScript5.sql1' を準備します。パス: 'C:\Users\P\AppData\Local\Temp\~E314.tmp' 1: 行 3 で SQL を実行 >>>