+ // STEP1. 書庫の展開\r
+ if (package != null && package.Type == InstallerType.ITSELF) {\r
+ // 書庫でない場合展開せずにそのままコピーする\r
+ string destFile = Path.Combine(tempExtractDir, Path.GetFileName(arcFile));\r
+ File.Copy(arcFile, destFile);\r
+ } else {\r
+ extract(arcFile, tempExtractDir);\r
+ }\r
+ \r
+ // インストールの元となるフォルダを決定する\r
+ string installSrc = tempExtractDir;\r
+ // 展開先のトップに唯一のフォルダーしかないのであれば、そのフォルダー内を基準とする\r
+ if (Directory.GetFiles(tempExtractDir).Length == 0 &&\r
+ Directory.GetDirectories(tempExtractDir).Length == 1) {\r
+ installSrc = Directory.GetDirectories(tempExtractDir)[0];\r
+ }\r
+ \r
+ // STEP2. インストール元フォルダでインストールファイルリストの作成\r
+ storeInstalledFileList(installSrc);\r