0

Windows Server 2003 Standard Edition で、お客様が .NET 3.5 SP 1 をインストールしました。InstallShield 2009 でビルドしたインストーラーを実行すると、インストーラーはターゲット マシンに .NET 3.5 SP 1 依存関係がないことを訴えます。お客様は .NET 3.5 SP 1 を数回アンインストールして再インストールし、そのたびに再起動しましたが、インストーラーはそれを検出しませんでした。ちなみに、インストーラーは他の場所でも問題なく動作します。

テストのために、.NET 3.5 SP 1 (LINQ を使用) でビルドされたアプリの 1 つを正常に実行しましたが、インストーラーはありません。そこに問題はないので、正しいフレームワークがインストールされていると確信しています。このマシンのレジストリに、InstallShield 2009 の依存関係ロジックを満たさないものがあると思われます。次は何をするの?

4

3 に答える 3

1

http://kb.acresso.com/selfservice/viewContent.do?externalID=Q200284などの前提条件を使用していますか? 前提条件の場合は、前提条件エディターで簡単に開いて、チェック対象のレジストリ キーまたはファイルを特定できます。

于 2009-08-07T06:18:54.470 に答える
0

インストーラーは .net 3.5 sp1 を検出するようにどのように構成されていますか。IS が .net 3.5 sp1 のバージョンを探し、そのレジストリ エントリをチェックするという点で Michael は正しい。前提条件エディターで探すために、より「一般的な」キーを構成できます。

于 2009-08-25T22:44:55.667 に答える
0

.Net Framework をチェックするもう 1 つの方法があります。installshield プロジェクトが Installscript をサポートしている場合は、スクリプトを使用してこれをアーカイブします。

DOTNETFRAMEWORKINSTALLEDを使用することにより、これは、1 つ以上の組み込み関数に渡される値または返される値を表すために使用される定義済みの定数です。事前定義された定数の値は変更できません。

および REGDB_KEYPATH_DOTNET_30 これは定義済みの定数で、値は .NET Framework バージョン 3.0 のレジストリ キーのレジストリの場所 (ルート キーを含まない) です。次のように定義されています。

**ソフトウェア\Microsoft\NET Framework\Setup\NDP\v3.0**

事前定義された定数の値は変更できません。この定数を使用して、一般的なレジストリ関連の関数を呼び出すときにキーを指定できます。この定義済みの定数は、Is関数を使用する場合にもサポートされます。

例えば ​​:

function BOOL DetectDotNet20()
        BOOL bStatus;
        STRING PROGRAM;
        NUMBER nWait; 
    begin 
        bStatus = Is(DOTNETFRAMEWORKINSTALLED, REGDB_KEYPATH_DOTNET_20);
        if (bStatus) then
            MessageBox("Dotnet 2.0  is present on the system.", INFORMATION ); 
            bStatus = TRUE;
        else  
            MessageBox("Dotnet 2.0  is not present on the system.", INFORMATION );
        endif; 
        return bStatus;
    end;
于 2009-09-23T10:07:57.477 に答える