技術メモ

ちょっと調べたことを書いてみます。

WDD メモ Windows 7 / Windows Server 2008 R2 アプリケーションの Windows 8 互換性対応

  • WDDのメモです。聞き漏れ、聞き間違えなどもあると思いますのでご参考までに。

Windows 7 から Windows 8 への移行

  • デスクトップアプリ→デスクトップアプリ、メトロスタイルアプリ への移行
  • Webアプリ→Webアプリ、メトロスタイルアプリ
  • デスクトップアプリは、デスクトップアプリへの移行が多いはず。

アプリケーションをインストールしようとしたら「OSのバージョンが違います」というメッセージが表示された場合

  • Windows8の内部バージョンは、6.2
  • 対処策
    • OSのバージョンではなく、機能を検索する。
    • VerifyVersionInfo Win32 API でチェックする

アプリケーションをインストールしようとしたらフォルダへのアクセスが拒否された

  • \program files\WindowsApps はメトロスタイルアプリのインストールフォルダ
    • TrustedInstallerが管理
  • 対処策
    • WindowsApps フォルダにはアクセスしないようにする

pdfファイルが Windows Reader で表示される

  • アプリケーションから規定のアプリケーションを設定することができない。 候補になるだけ。
  • 複数ある場合は、ユーザが選択する
  • IApplicationAssociationRegistration API の以下のメソッドは利用しない
    • QueryAppIsDefault/QueryAppIsDefaultAll
    • QueryCurrentDefault
    • SetAppIsDefault/SetAppIsDefaultAll
  • 解決策
    • IApplicationAssociationRegistrationUI::LaunchAdvancedAssociationUI APIを利用して、選択のダイアログを表示させる

WebサイトへのリンクをクリックしたらIEが全画面で表示される

「互換性」タブに「デスクトップコンポジションを無効にする」がなくなった

  • Vistaからの機能、デスクトップコンポジションを無効にできない。(デスクトップコンポジション:Windowsフィリップ、サムネイルなどが使える。Aeroのみ)Windows8は、Aeroグラス以外でも利用できる
  • DwmEnableComposition API は成功を返却しても何もしない
  • デスクトップコンポジションのShimは無効化されている。
  • Desktop Window Manager Is Always On

サービスの状態がタスクトレイに反映されません

  • セッション0とセッション1のプロセス間通信ができない。電源管理の問題
  • サスペンド状態に移行するとき、起動しているアプリケーションに対して、WM_POWERBROADCASTというメッセージを投げる
  • スリープ状態では、すべてのシステムアクテビティが中断
  • 接続維持スタンバイ(Win8追加)
    • スマートフォーンのような電源管理
    • Metroスタイルアプリ:ライブタイルのお更新、新着メールのダウンロード
    • デスクトップアプリ:Desktop Activity Moderator(DAM)により管理
  • Session1以上のプロセス
    • 接続維持スタンバイ中は中断
  • Session0のプロセス
    • 必要に応じて再開
  • DAMからWM_POWERBROADCASTの通知を受ける?には、Windowがある場合は、RegisterSuspendResumeNotification コンソールアプリの場合は、PowerRegisterSuspendResumeNotification で登録する必要がある
  • または、ソースコードを修正できない場合はPromoteDAM Shim を利用する

.NET 3.5アプリが起動しない

  • Windows7からアップデートした場合は、インストールされているが、通常にインストールするとインストールされない。
    • WindowsUpdatteよりインストール
    • 再配布可能パッケージとしてインストール
  • 解決策
    • イメージからコピー
      • \sources\sxs\
      • xcopy e:\sources\sxs\*.* c:\dotnet35 /s
      • Dismコマンドでインストール
      • Dism.exe /online /enable-feature /featurename:NetFX3 /All /Source:c:\dotnet35 /LimitAccess
    • レジストリに下記を設定しておくと、.NET 3.5アプリを起動時に表示されダイアログで「この機能をダウンロードしてインストールする」を選択すると下記のローカルのファイルを参照する
      • xcopy e:\sources\sxs\*.* c:\dotnet35 /s
    • [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\Servicing] “LocalSourcePath”=”c:\dotnet35”
  • .NET Framework 4.5 Is Default and .NET Framework 3.5 Is Optional

VB6.0

Windows8ネイティブモード

  • マニフェストファイルにWindows8ネイティブであることを記載する
    • {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
    • 何も設定しないと、Vistaモードとなる