• R/O
  • HTTP
  • SSH
  • HTTPS

AppliStation: Commit

AppliStation


Commit MetaInfo

Révisiona8291d5f2a7843820ebdd6bd7d1f03a6a90938ff (tree)
l'heure2009-12-31 15:07:24
Auteurttp <ttp@user...>
Commiterttp

Message de Log

archive-inst,1.3.2b1にてアーカイブのトップに唯一のフォルダーしかないとき、そのアーカイブインストールにそのフォルダもインストールされて階層が深くなってしまっていた不具合を修正
(91e4e4e133a0dde6163d795c3332e948c872b5e8 に伴って入ったバグ)

Change Summary

Modification

--- a/archive-inst/Program.cs
+++ b/archive-inst/Program.cs
@@ -24,13 +24,6 @@ namespace ArchiveInstall
2424
2525 private static void install(string fakeTargetDir, string targetDir)
2626 {
27- string installSrc = fakeTargetDir;
28-
29- if (Directory.GetFiles(installSrc).Length == 0 &&
30- Directory.GetDirectories(installSrc).Length == 1) {
31- installSrc = Directory.GetDirectories(installSrc)[0];
32- }
33-
3427 // ハッシュ比較
3528 if (Directory.Exists(targetDir)) {
3629 InstalledFileList list = null;
@@ -42,7 +35,7 @@ namespace ArchiveInstall
4235 // 変更されたファイル(設定ファイル)をキープする処理
4336 foreach (InstalledFile changedFile in list.Verify(targetDir)) {
4437 string changedFilePath = Path.Combine(targetDir, changedFile.Path);
45- string toBeChangedFilePath = Path.Combine(installSrc, changedFile.Path);
38+ string toBeChangedFilePath = Path.Combine(fakeTargetDir, changedFile.Path);
4639
4740 // 新規のファイルは退避させる
4841 if (File.Exists(toBeChangedFilePath)) {
@@ -64,8 +57,8 @@ namespace ArchiveInstall
6457 }
6558
6659 // まずはフォルダーツリーを作成
67- foreach (string dir in Directory.GetDirectories(installSrc, "*", SearchOption.AllDirectories)) {
68- string dirPath = NaGet.Utils.GetRelativePath(installSrc, dir);
60+ foreach (string dir in Directory.GetDirectories(fakeTargetDir, "*", SearchOption.AllDirectories)) {
61+ string dirPath = NaGet.Utils.GetRelativePath(fakeTargetDir, dir);
6962 string targetDirPath = Path.Combine(targetDir, dirPath);
7063 if (! Directory.Exists(targetDirPath)) {
7164 Directory.CreateDirectory(targetDirPath);
@@ -73,8 +66,8 @@ namespace ArchiveInstall
7366 }
7467
7568 // ファイルをインストール(高速化のため移動)
76- foreach (string file in Directory.GetFiles(installSrc, "*", SearchOption.AllDirectories)) {
77- string filePath = NaGet.Utils.GetRelativePath(installSrc, file);
69+ foreach (string file in Directory.GetFiles(fakeTargetDir, "*", SearchOption.AllDirectories)) {
70+ string filePath = NaGet.Utils.GetRelativePath(fakeTargetDir, file);
7871 string targetFilePath = Path.Combine(targetDir, filePath);
7972 if (File.Exists(targetFilePath)) {
8073 File.SetAttributes(targetFilePath, FileAttributes.Normal);
@@ -321,11 +314,19 @@ namespace ArchiveInstall
321314 extract(arcFile, tempExtractDir);
322315 }
323316
324- // STEP2. 展開フォルダでインストールファイルリストの作成
325- storeInstalledFileList(tempExtractDir);
317+ // インストールの元となるフォルダを決定する
318+ string installSrc = tempExtractDir;
319+ // 展開先のトップに唯一のフォルダーしかないのであれば、そのフォルダー内を基準とする
320+ if (Directory.GetFiles(tempExtractDir).Length == 0 &&
321+ Directory.GetDirectories(tempExtractDir).Length == 1) {
322+ installSrc = Directory.GetDirectories(tempExtractDir)[0];
323+ }
324+
325+ // STEP2. インストール元フォルダでインストールファイルリストの作成
326+ storeInstalledFileList(installSrc);
326327
327328 // STEP3. インストール
328- install(tempExtractDir, targetDir);
329+ install(installSrc, targetDir);
329330
330331 if (package != null) {
331332 // STEP4. カスタマイズ可能な後処理
Afficher sur ancien navigateur de dépôt.