3

私たちが開発した製品があり、Windows 8 と Server 2012 でテストしているところです。問題は、Win 8 / 2012 へのインストールが完了した後、互換性シム (私がこれまでに理解していることから) がポップすることです。アプリケーションを正しく実行するには .Net 3.5 が必要であるというダイアログが表示されます。以下のスクリーンショットを参照してください。

.net 必須ダイアログ

私たちの製品はネイティブ プリンター ドライバーなので、その可能性は非常に低いと思います。Win 8 / 2012 の前提条件は、Visual C++ 再配布可能なバージョンです。

また、InstallShield 2010 を使用してインストーラーを作成しています。

アプリケーションが .net 3.5 を必要とすることを Win 8 が誤って示唆しているのを見た人はいますか? アプリケーションが.net 3.5を必要とするかどうかを互換性シムがどのように判断するかを定義する信頼できるソースを知っている人はいますか?

ありがとう!

アンディ

** アップデート **

この msdn ブログ投稿を見つけました: http://blogs.technet.com/b/askcore/archive/2012/05/14/windows-8-and-net-framework-3-5.aspx。簡単に言えば、ダイアログは次の方法でトリガーできることを示唆しています。

  • Microsoft からダウンロードできる再頒布可能パッケージを使用して、.Net 2.0、3.0、または 3.5 をインストールしようとしています。
  • アプリケーションは、独自のインストール プロセス中に、必要なバージョンの再頒布可能パッケージの 1 つをインストールしようとします。
  • レガシー バージョンを必要とするアプリケーションは、必要なバージョンをプレインストールせずに実行されます。

残念ながら、これでなぜ私がそれを見ているのかを説明しているようには見えません!

** アップデート **

明確にするために、マネージド ライブラリや exe はなく、純粋なネイティブ C および C++ だけで、Visual Studio コンパイラ (clr フラグなし) でビルドされたものと DDK でビルドされたものがあります。

…恥ずかしい…!

4

3 に答える 3

1

「失敗した」インストールでトリガーされる PCA メッセージについては、私の方がずっと経験があります。これらの場合、InstallShield\support フォルダー(レベルはまたはまたは) にあるテンプレートアプリ マニフェストを編集することで確実に改善できます。これらの場合、サポートすると主張する追加の OS ごとに要素を追加します。ウィンドウズ8。setupexe.<level>.manifestinvokerhighestadminsupportedOS<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>

それが何らかの形で .NET 検出ケースに役立つかどうかを確認するために、それから始める価値があるかもしれません。息を止めませんが、インストールが完了する前に誰かがキャンセルを押した場合に役立ちます。

(特定のターゲット OS でテストしたコードについては、そこで実際にテストされたバージョンの InstallShield にアップグレードする必要がありますが、多くの場合、正しいsupportedOS要素をコピーするだけで十分です。)

于 2013-02-15T13:24:43.270 に答える
0

うーん、これはちょっと恥ずかしい……。

...CLR 2 でコンパイルされた .net ライブラリがあり、インストーラー内の一部の InstallScript の奥深くで実行されていたことが判明しました。(個人的には、インストーラーはかなり大きいです!!)

だから、これが本当にミステリーだと思っている人には申し訳ありませんが、対話はちょっと正しかったです! また、最初に正しいと推測し、その後投稿を削除した人に謝罪します. この件に関してはかなり参考になりました。お気軽にもう一度追加してください。回答としてマークします。:)

アンディ。

于 2013-02-15T16:25:56.223 に答える