1

カスタムアクション内からIsIISPropertyテーブルの「Enable32bitAppOnWin64」の値を読み取るか変更する必要があります。これで、プロパティマネージャーからプロパティにアクセスできます。Session.Properties("PropertyName")

プロパティテーブルに対して同じことを行う方法がわかりません。{ISIISProperty1}、[ISIISProperty1]、Session.Properties( "ISIISProperty1")を試しましたが、すべて成功しませんでした。

どうすればこれを達成できますか?

どんな助けでもありがたいです。

ありがとう

4

1 に答える 1

1

カスタムアクションでインストーラーテーブルからプロパティにアクセスするための情報を見つけることができませんでした。私が見つけたのは、カスタムアクションからテーブルを更新するためのインストーラーSQL構文を記述できるということでしたが、これはやり過ぎであり、機能させることができませんでした。

私ができることは、ISIISPropertyテーブルでプロパティ置換を使用することです。

  1. プロパティテーブルにASPBITNESSALLOWTHIRTYTWOBITという2つの新しいプロパティを作成しました。これらは、デフォルトでそれぞれx86とtrueに設定されています。
  2. 次に、ダイレクトエディタでISIISPropertyテーブルを編集し、 Enable32bitAppOnWin64AspNetVerBitnessの値をそれぞれ[ALLOWTHIRTYTWOBIT]と[ASPBITNESS]に置き換えました。興味深いことに、[ALLOWTHIRTYTWOBIT]プロパティがデフォルトでtrueに設定されている場合でも、InstallShieldデザイナーで[32ビットアプリケーションを有効にする]設定は「いいえ」と表示されます。
  3. 最後に、インストールの開始時に条件付きで(REMOVEおよびVersionNT64およびIIS_VERSION> "#6"ではなく)起動して、それに応じてこれらの値を変更するカスタムアクションがあります。

カスタムアクションコードコードは次のとおりです。

On Error Resume Next

' change the properties for x64 systems
if SYSINFO.bIsWow64 <> 0 then
    Session.Property("ASPBITNESS") = "x64"  
    Session.Property("ALLOWTHIRTYTWOBIT") = "false"
end if

MSIログが表示される前:

InstallShield 12:09:19:仮想ディレクトリ
'MyWebApp'、app''の
SetVRootPropertiesInstallShield 12:09:19:IIS7がアプリケーションプール
'MyAPPPool'のASP.NETバージョンビットネスをチェックします。インストールは'x86'を要求してい
ます...
InstallShield 12:09:19:SetAspversion:マシンは64ビットであり、
IISは現在選択されているモード以外のビットモードで実行されています
...
InstallShield 12:09:19:IISRTのエラー:-2172
...
CustomActionISIISInstallが実際のエラーを返しましたコード1603(サンドボックス内で変換が行われた場合、これは100%正確ではない可能性があることに注意してください)

これらの変更後、アプリケーションがインストールされ、ログに次のように表示されます。

MSI(s)(D4:1C)[10:53:18:662]:アクションの実行:Set64Bit
アクション10:53:18:Set64Bit。
アクション開始10:53:18:Set64Bit。
MSI(s)(D4:0C)[10:53:18:678]:PID 912(0x390)でカスタムアクションサーバーを作成しました。
MSI(s)(D4:D0)[10:53:18:709]:サービスとして実行しています。
MSI(s)(D4:D0)[10:53:18:709]:こんにちは、私は32ビットの偽装カスタムアクションサーバーです。
MSI(s)(D4!1C)[10:53:18:725]:プロパティの変更:ASPBITNESSプロパティを変更しています。
現在の値は「x86」です。その新しい値:'x64'。
MSI(s)(D4!1C)[10:53:18:725]:プロパティの変更:ALLOWTHIRTYTWOBIT
プロパティを変更します。現在の値は「true」です。その新しい値:'false'。

その後:

InstallShield 10:53:20:仮想ディレクトリ
'MyWebApp'の
SetVRootProperties、アプリ'' InstallShield 10:53:20:IIS7はアプリケーションプール
'MyAppPool'でASP.NETバージョンのビット数をチェックします。インストールは' x64'InstallShield10:
53を要求しています:20:アプリケーションプールEnable32bitAppOnWin64の値は「false」です
InstallShield 10:53:20:ASP.NETバージョンは64ビットに設定できます。
InstallShield 10:53:20:ASP .NETバージョンの構成:
C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ aspnet_regiis.exe -ir

于 2013-03-07T13:01:41.647 に答える