ClickOnce のアプリのファイル構成について、インストール時とアンインストール時の比較です。
特に、アンインストールで、綺麗に、全て無くなっているのかと思いましたが、一部が残っています。
投稿では、全てのファイル構成を、cmd.exe の TREE コマンドで見てみます。
ご存知の様に、ClickOnce では、通常のアプリとは異なり、独自のファイル保管場所が利用されます。
ユーザープロファイルの既定の場所に、ユーザー個別に、構成されます。
インストールは、Web ( or Intranet ) 上から、もしくは、光学メディア から 行われます。
発行で、デスクトップにアイコンを作成にチェックが入っていれば、そこから、アプリが起動します。
アンインストールや以前のバージョンに戻す作業は、コントロールパネル の プログラムと機能 を用いて行われます。
さて、冒頭に記した インストール時のファイル構成 と アンインストール時のファイル構成 を 以下に。
ここでは、アプリの中から、独自のフォルダを設けて、そこに データ を置く構成です。
また、SQL Server Compact のデータベース ファイル も 使っていますが、 標準的な発行方法に沿っています。
インストール時のファイル構成
C:¥Users¥UserName>tree /F C:¥Users¥UserName¥AppData¥Local¥Apps¥2.0
フォルダー パスの一覧: ボリューム OS
ボリューム シリアル番号は 00000123 123456789 です
C:¥USERS¥UserName¥APPDATA¥LOCAL¥APPS¥2.0
├─AB3CDEFG.9YZ
│ └─LM5N6OPQ.1PL
│ ├─xxxx...exe_a66b7788cd123456_0000.0009_none_0abc1234d567e8fg
│ │ xxxxxApp.exe.config
│ │ xxxx.ico
│ │ xxxxDB.sdf
│ │
│ ├─xxxx..tion_a66b7788cd123456_0000.0009_6hi78j9q43210r5s
│ │ xxxxxApp.cdf-ms
│ │ xxxxxApp.exe
│ │ xxxxxApp.exe.cdf-ms
│ │ xxxxxApp.exe.config
│ │ xxxxxApp.exe.manifest
│ │ xxxxxApp.manifest
│ │ xxxx.ico
│ │
│ └─manifests
│ xxxx...exe_a66b7788cd123456_0000.0009_none_0abc1234d567e8fg.cdf-ms
│ xxxx...exe_a66b7788cd123456_0000.0009_none_0abc1234d567e8fg.manifest
│ xxxx..tion_a66b7788cd123456_0000.0009_none_45678a1a9bcde0f1.cdf-ms
│ xxxx..tion_a66b7788cd123456_0000.0009_none_45678a1a9bcde0f1.manifest
│
└─Data
├─1VWXYZAB.CDE
│ └─G56HG78F.DEC
└─9ABAB0Z9.S2M
└─D5KLMN55.X09
└─xxxx..tion_a66b7788cd123456_0000.0009_6hi78j9q43210r5s
└─Data
│ xxxxDB.sdf
│
└─Subs
xxxxxInnerData0001.jpg.
アンインストール時のファイル構成
C:¥Users¥UserName>tree /F C:¥Users¥UserName¥AppData¥Local¥Apps¥2.0
フォルダー パスの一覧: ボリューム OS
ボリューム シリアル番号は 00000123 123456789 です
C:¥USERS¥UserName¥APPDATA¥LOCAL¥APPS¥2.0
├─AB3CDEFG.9YZ
│ └─LM5N6OPQ.1PL
│ └─manifests
└─Data
├─1VWXYZAB.CDE
│ └─G56HG78F.DEC
└─9ABAB0Z9.S2M
└─D5KLMN55.X09
尚、アプリの中で、既定のデータフォルダにサブを設ける為に、以下のコードを実行しています。 VB 。
抜粋ですので、単独では、機能しません。 考え方を示すに止めます。
サブの有無を確認し、CD-ROM に用意されたフォルダからデータ転送します。
通常は、インストール時のデータ転送を想定しています。.
このサブフォルダには多量不特定の画像ファイルがあり、ClickOnce のコンテンツ扱いすると間違えそうなので ... 。
実際には、個々の画像は、データベース内に記述されたファイル名から呼び出されます。
数が少ない設定ファイルの類であれば、 こんな事はせず、 通常の、データファイルとして扱い、配置する のが 正解だと思います ... 。
Public Class xxxxApp
Const CommonDataDir As String = Application.UserAppDataPath
Const HomeDir As String = CommonDataDir + "\Subs"
Const InstDir As String = "Subs" 'Add DriveLetter(CD-ROM) on Top Position
Const AppInstLabel As String = "AppName_Inst"
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
' Main
' ...
' Subs Directory Check
If Not IO.Directory.Exists(HomeDir) Then
If IO.Directory.Exists(GetInstDriveLetter() + InstDir) Then
AddSubDir()
End If
End If
End Sub
Private Sub AddSubDir()
IO.Directory.CreateDirectory(HomeDir)
' Copy Files
' ...
End Sub
Private Function GetInstDriveLetter() As String
Dim value As String = ""
Dim drvInf As IO.DriveInfo
For Each drvInf In IO.DriveInfo.GetDrives
If drvInf.IsReady Then
If drvInf.VolumeLabel = AppInstLabel Then
value = drvInf.Name
Exit For
End If
End If
Next
Return value
End Function
' ...
End Class
ご参考になれば ... 。
[2015/03/17] \ 表記を ¥ に変更(TREE コマンド部分のみ)
0 件のコメント:
コメントを投稿