В файле Product.wxs, который я использовал для моего установщика, у меня есть функция, которая создает некоторые папки в ProgramData и добавляет некоторые файлы к этим
<Feature Id="IOFilesFeature" Title="Settings and IO Files" Level="1">
<Feature Id="Languages" Title="Languages" Level="2">
<Feature Id="Languages_UK" Title="English" Level="3">
<ComponentGroupRef Id="ProgramData_MFR_PRD_Languages_UK" />
</Feature>
</Feature>
<Feature Id="OpsPC1" Title="Operator PC 1" Level="2">
<Feature Id="OpsPC1_Settings" Title="Settings" Level="3">
<ComponentGroupRef Id="ProgramData_MFR_PRD_Settings_Ops1" />
</Feature>
<Feature Id="OpsPC1_IO" Title="IO" Level="1">
<ComponentGroupRef Id="ProgramData_MFR_PRD_IO_Ops1" />
</Feature>
</Feature>
</Feature>
<Fragment>
<Directory Id="CommonAppDataFolder" Name="ProgramData">
<Directory Id="PD_MFR" Name="CompanyName">
<Directory Id="PD_MFR_PRD" Name="ProductName">
<Directory Id="PD_MFR_PRD_Languages" Name="Languages" />
<Directory Id="PD_MFR_PRD_Settings" Name="Settings" />
<Directory Id="PD_MFR_PRD_IO" Name="IO" />
</Directory>
</Directory>
</Directory>
</Fragment>
Каждый файл похож на это:
<Fragment>
<ComponentGroup Id="ProgramData_MFR_PRD_IO_Ops1" Directory="PD_MFR_PRD_IO">
<Component Id="FileID" Guid="2be6ba39-9496-4985-8317-5bd0b3f88f95">
<File Id="FileID" Name="FileName" Source="SourceLocation" />
</Component>
</ComponentGroup>
</Fragment>
После использования программы установки я заметил, что программа не может редактировать файлы. Ручные изменения будут отображаться только в windows проводнике. Когда я посмотрел содержимое файла после прочтения его из приведенного ниже кода, содержимое не изменилось до того, что я изменил вручную.
public static string ReadFile(string fullPath)
{
string rv = "";
try
{
if (File.Exists(fullPath))
{
FileStream fs = new FileStream(fullPath, FileMode.Open, FileAccess.Read);
if (fs.CanRead)
using (StreamReader sr = new StreamReader(fs))
rv = sr.ReadToEnd();
}
}
catch (Exception ex)
{
ex.WriteToFile();
}
return rv;
}
Я удалил папку CompanyName из ProgramData, чтобы посмотреть, позволит ли она программа для воссоздания файлов, и программа все еще может прочитать файл. Windows проводник покажет, что папка не существует.
Знаете ли вы, что может быть причиной того, что файлы «призраки» таким образом?