2013年12月14日土曜日

「このプログラムは正しくインストールされなかった可能性があります」を回避する方法

Windows 7 + Delphi XE2で開発していますが、以下のメッセージを抑制する方法をメモしておきます。アプリケーションにインストールと思しきキーワードが入っていると、OS側でアンインストールの手順をきちんと登録したか確認してくるのが、以下のダイアログです。


で、いろいろ調べてみてうまくいった方法を書きます。 $(BDS)\bin にあるdefault_app.manifestを探しだして、compatibilityセクションを書き加えてビルドします。下がmanifestのファイル、この15-20行目が追加したセクションです。 manifestにWindows7互換という条件を加えることで、UAC互換性アシスタントを回避しています。
  1. <!--xml version="1.0" encoding="UTF-8" standalone="yes"?-->  
  2. <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestversion="1.0">  
  3.   <dependency>  
  4.     <dependentassembly>  
  5.       <assemblyidentity type="win32" name="Microsoft.Windows.Common-Controls" version="6.0.0.0" publickeytoken="6595b64144ccf1df" language="*" processorarchitecture="*">  
  6.     </assemblyidentity></dependentassembly>  
  7.   </dependency>  
  8.   <trustinfo xmlns="urn:schemas-microsoft-com:asm.v3">  
  9.     <security>  
  10.       <requestedprivileges>  
  11.         <requestedexecutionlevel level="asInvoker" uiaccess="false">  
  12.         </requestedexecutionlevel></requestedprivileges>  
  13.     </security>  
  14.   </trustinfo>  
  15.   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">  
  16.     <application>  
  17.       <!--Windows 7-->  
  18.       <supportedos id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}">  
  19.     </supportedos></application>  
  20.   </compatibility>  
  21. </assembly>