none
Visual Studio 2015 Installer の File System 上で[ファイルを含むフォルダーの一括削除方法 RRS feed

  • 質問

  • こんにちは。

    タイトルの通りInstallerプロジェクト上で

    File Systemに配置した「ファイルを含むフォルダ」を一括で削除したいのですが、

    フォルダーを削除するときにポップアップで中のファイルを削除してください。

    という旨の警告メッセージが表示されます。

    配置したフォルダ配下のファイル数が千単位である為、とても困っています。

    何か良い方法はありませんか?

    環境

    ・VisualStudio2015Community

    ・VisualStudio2015Insteller(VB)

    2016年2月27日 3:42

回答

  • こちらでも再現しました。削除しようとしたフォルダの中にファイルまたはフォルダがある場合、上記のようなエラーメッセージが表示されました。エラーメッセージ(MessageBoxで表示されているもの)はCtrl+Cでエラー内容をクリップボードへコピーできます。

    エラー内容でGoogle検索してみたところ下記の投稿が見つかりました。

    Delete multiple directory in file system

    問題の解決の方法に*.vdprojをテキストエディタで編集する方法が紹介されています。(UIで行える標準的な方法はない模様・・・マクロなどを使えば可能?)

    以下まとめてみました。

    1.まず、プロジェクトフォルダごと全バックアップを取る(編集を間違えるとプロジェクトファイルが壊れてしまう可能性があるので・・・)

    2.Visual Studio上で削除したいフォルダの名前をプロジェクトの中で一意になるように変更する(例えば「XXXX」など
      ※また、できればそのフォルダ以下に含まれているファイルをソリューションエクスプローラー上で削除する。

    3.Visual Studioでプロジェクトを保存して、Visual Studioを終了させます。

    4.テキストエディタで*.vdprojを開き、2でリネームしたフォルダ名「XXXX」を検索する。

    "{9EF0B969-E518-4E46-987F-47570745A589}:_ED18EFB43C8D4F3F8EF5C363F69486CC"
    {
    "Name" = "8:XXXX"
    "AlwaysCreate" = "11:FALSE"
    "Condition" = "8:"
    "Transitive" = "11:FALSE"
    "Property" = "8:_D22AB8534FAF444AA946BEF11D10F520"
        "Folders"
        {
            "{9EF0B969-E518-4E46-987F-47570745A589}:_B955792F6E444F79BFBB5C6B013E0375"
            {
            "Name" = "8:SubFolder"
            "AlwaysCreate" = "11:FALSE"
            "Condition" = "8:"
            "Transitive" = "11:FALSE"
            "Property" = "8:_22164FBC13C64308A232179D2B5CB2EE"
                "Folders"
                {
                    ・・・
                }
                ・・・
            }
        }
    }

      2.の※ができた場合は、上記のコードを丸ごと削除する。

      2.の※ができなかった場合は、XXXXとそのサブフォルダに含まれているファイル参照をすべて削除する必要があります。

      上記の”_ED18EFB43C8D4F3F8EF5C363F69486CC”がXXXXに含まれるファイルを結びつけるIDになるので

      そのIDで*.vdprojを再検索してのファイル参照を削除します。例えば以下の部分を削除します。

    "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1832FEA9250F4227A64A40B4D9DF9B1E"
    {
    "SourcePath" = "8:SubFolder\\SampleFile01.txt"
    "TargetName" = "8:SampleFile01.txt"
    "Tag" = "8:"
    "Folder" = "8:_ED18EFB43C8D4F3F8EF5C363F69486CC"
    "Condition" = "8:"
    "Transitive" = "11:FALSE"
    "Vital" = "11:TRUE"
    "ReadOnly" = "11:FALSE"
    "Hidden" = "11:FALSE"
    "System" = "11:FALSE"
    "Permanent" = "11:FALSE"
    "SharedLegacy" = "11:FALSE"
    "PackageAs" = "3:1"
    "Register" = "3:1"
    "Exclude" = "11:FALSE"
    "IsDependency" = "11:FALSE"
    "IsolateTo" = "8:"
    }

      この手順でXXXXとそのサブフォルダの中のファイル参照もすべて削除します。その後改めて4.の初めの手順でXXXXフォルダを削除。

    5.フォルダXXXXに含まれるフォルダとファイル参照をすべて削除したら*.vdprojを保存して、Visual Studioで開きます。エラーが表示されたら何か編集が間違っていたということです。







    • 編集済み kenjinoteMVP 2016年2月27日 9:07
    • 回答としてマーク yusuke_jp 2016年2月29日 1:59
    2016年2月27日 8:25

すべての返信

  • こちらでも再現しました。削除しようとしたフォルダの中にファイルまたはフォルダがある場合、上記のようなエラーメッセージが表示されました。エラーメッセージ(MessageBoxで表示されているもの)はCtrl+Cでエラー内容をクリップボードへコピーできます。

    エラー内容でGoogle検索してみたところ下記の投稿が見つかりました。

    Delete multiple directory in file system

    問題の解決の方法に*.vdprojをテキストエディタで編集する方法が紹介されています。(UIで行える標準的な方法はない模様・・・マクロなどを使えば可能?)

    以下まとめてみました。

    1.まず、プロジェクトフォルダごと全バックアップを取る(編集を間違えるとプロジェクトファイルが壊れてしまう可能性があるので・・・)

    2.Visual Studio上で削除したいフォルダの名前をプロジェクトの中で一意になるように変更する(例えば「XXXX」など
      ※また、できればそのフォルダ以下に含まれているファイルをソリューションエクスプローラー上で削除する。

    3.Visual Studioでプロジェクトを保存して、Visual Studioを終了させます。

    4.テキストエディタで*.vdprojを開き、2でリネームしたフォルダ名「XXXX」を検索する。

    "{9EF0B969-E518-4E46-987F-47570745A589}:_ED18EFB43C8D4F3F8EF5C363F69486CC"
    {
    "Name" = "8:XXXX"
    "AlwaysCreate" = "11:FALSE"
    "Condition" = "8:"
    "Transitive" = "11:FALSE"
    "Property" = "8:_D22AB8534FAF444AA946BEF11D10F520"
        "Folders"
        {
            "{9EF0B969-E518-4E46-987F-47570745A589}:_B955792F6E444F79BFBB5C6B013E0375"
            {
            "Name" = "8:SubFolder"
            "AlwaysCreate" = "11:FALSE"
            "Condition" = "8:"
            "Transitive" = "11:FALSE"
            "Property" = "8:_22164FBC13C64308A232179D2B5CB2EE"
                "Folders"
                {
                    ・・・
                }
                ・・・
            }
        }
    }

      2.の※ができた場合は、上記のコードを丸ごと削除する。

      2.の※ができなかった場合は、XXXXとそのサブフォルダに含まれているファイル参照をすべて削除する必要があります。

      上記の”_ED18EFB43C8D4F3F8EF5C363F69486CC”がXXXXに含まれるファイルを結びつけるIDになるので

      そのIDで*.vdprojを再検索してのファイル参照を削除します。例えば以下の部分を削除します。

    "{1FB2D0AE-D3B9-43D4-B9DD-F88EC61E35DE}:_1832FEA9250F4227A64A40B4D9DF9B1E"
    {
    "SourcePath" = "8:SubFolder\\SampleFile01.txt"
    "TargetName" = "8:SampleFile01.txt"
    "Tag" = "8:"
    "Folder" = "8:_ED18EFB43C8D4F3F8EF5C363F69486CC"
    "Condition" = "8:"
    "Transitive" = "11:FALSE"
    "Vital" = "11:TRUE"
    "ReadOnly" = "11:FALSE"
    "Hidden" = "11:FALSE"
    "System" = "11:FALSE"
    "Permanent" = "11:FALSE"
    "SharedLegacy" = "11:FALSE"
    "PackageAs" = "3:1"
    "Register" = "3:1"
    "Exclude" = "11:FALSE"
    "IsDependency" = "11:FALSE"
    "IsolateTo" = "8:"
    }

      この手順でXXXXとそのサブフォルダの中のファイル参照もすべて削除します。その後改めて4.の初めの手順でXXXXフォルダを削除。

    5.フォルダXXXXに含まれるフォルダとファイル参照をすべて削除したら*.vdprojを保存して、Visual Studioで開きます。エラーが表示されたら何か編集が間違っていたということです。







    • 編集済み kenjinoteMVP 2016年2月27日 9:07
    • 回答としてマーク yusuke_jp 2016年2月29日 1:59
    2016年2月27日 8:25
  • kenjinote

    プロジェクトファイル直接編集ですか。

    確かにそれしかないですよね。。。

    むしろプロジェクトファイルから全てのフォルダを削除して

    もう一回VisualStudio上で追加した方が早い場面もありそうですね。

    ご回答ありがとうございました。

    回答としてマークさせていただきます。

    2016年2月29日 1:59