VisualStudio関連のメモ

アプリ開発のことなんか知らんねん...

アプリを管理者として実行させる (app.manifest)

  • 「プロジェクト」→「新しい項目の追加」で「アプリケーション マニフェスト ファイル」を選択し、app.manifest というファイルを作成する。
  • requestedExecutionLevel タグの level 属性の値を "asInvoker" から "requireAdministrator" に変更する。
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
 ↓
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

App.config と Properties

  • Propertiesの「設定」で作成した設定値は App.config に保存される。
  • スコープが「ユーザー」の設定は userSettings 要素に、「アプリケーション」の設定は applicationSettings 要素に保存される。
  • App.config の userSettings / applicationSettings 要素を直接編集して値を変更した場合、Propertiesの「設定」を開くと警告メッセージが出る。

  • 逆にPropertiesの「設定」で設定値を変更して保存すると、App.config は上書きされる。
  • つまり、App.config の userSettings / applicationSettings 要素は直接編集しないほうが無難かも。
  • 設定値の読み書きは下記の要領でおこなう。
var hoge = Properties.Settings.Default.Hoge;
Properties.Settings.Default.Hoge = hoge;
Properties.Settings.Default.Save(); // 保存を忘れずに
  • userSettings はアプリから読み書きできるが、applicationSettings は読み取り専用。
  • applicationSettings はアプリのexeファイルと同じフォルダのconfigファイルに保存される。
  • userSettings は C:\Users\ユーザ名\AppData\Local\アプリ名 の下のフォルダのconfigファイルに保存される。

DebugとRelease

  • DebugとReleaseで条件ビルドしたい場合、C++なら #ifdef _DEBUG を、C#なら #if DEBUG を用いる。
// C++
#ifdef _DEBUG
    // Debugの場合
#else
    // Releaseの場合
#endif
// C#
#if DEBUG
    // Debugの場合
#else
    // Releaseの場合
#endif

Any CPU と x86 と x64

  • ふつうは Any CPU でよい。
  • アプリがC++で作成したDLLに依存している場合、Any CPU ではなく、DLLに合わせて x86 または x64 でビルドする。DLLとアプリをx86 (32bit) に統一するのが無難。

アセンブリのバージョンなど

  • Properties →「アプリケーション」→「アセンブリ情報」で設定する。

インストーラの作成

  • 拡張機能」→「拡張機能の管理」で「Microsoft Vosual Studio Installer Projects」をインストールしておく。
  • ソリューションを右クリックし、「追加」→「新しいプロジェクト」で「setup」で検索し、「Setup Project」か「Setup Wizard」を選択。後者はウィザード形式でインストーラを作成できる。
  • 少なくとも、プロジェクトの「プライマリ出力」(ビルドされたEXE) をインストーラに含める。
  • アプリのインストール先は「Applicatoin Folder」のプロパティの「DefaultLocation」で設定する。[ProgramFilesFolder][Manufacturer]\[ProductName] が既定値。
  • ショートカットは「User's Desktop」や「User’s Programs Menu」に作成する。(「User's Desktop」や「User’s Programs Menu」を選択した状態で、右の欄で右クリックして「ショートカットの作成」、そして「Applicatoin Folder」の「プライマリ」を選択してショートカットを作成し、適当な名前に変更する。)


インストーラのバージョンと ProductCode

  • Setupプロジェクトのプロパティの「Version」でインストーラのバージョンを設定できる。

  • 「Version」を変更すると「ProductCode」を変更するよう推奨される。「はい」をクリックすると「ProductCode」が自動更新される。

  • 「ProductCode」が同じアプリがインストール済みの環境にはインストールできない。(古いアプリを手動でアンインストールする必要がある。コマンドラインでオプションを指定すれば上書きインストールも可能ではある。)
  • 「UpgradeCode」が同じで「ProductCode」が異なるアプリがインストール済みの場合、古いアプリが自動でアンインストールされ、新しいアプリがインストールされる。
  • 「UpgradeCode」が異なるアプリは別物と認識されるので、共存できる。
  • 「ProductCode」と「UpgradeCode」って名前と意味が逆じゃね?
  • 「ProductCode」と「UpgradeCode」はGUIDであり、プロパティで選択して「New Code」をクリックすれば更新できる。

【参考】