Невозможно создать / записать файлы / папки после запуска программы установки Wix для моего приложения, даже после удаления папки - PullRequest
0 голосов
/ 30 марта 2020

В файле 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 проводник покажет, что папка не существует.

Знаете ли вы, что может быть причиной того, что файлы «призраки» таким образом?

1 Ответ

0 голосов
/ 02 апреля 2020

Когда я узнал, что он пишет в виртуальный магазин, я обнаружил следующее:

Проблема с привилегиями / владельцем при записи в C: \ ProgramData \

Это сказало, что подкаталог должен дать разрешающий ACL программой установки.

Я следовал Wix: Как установить разрешения для папки и всех подпапок , чтобы применить это, и теперь приложение снова работает, как и ожидалось.

...