[英]Cannot create/write to files/folders after running a Wix Installer for my application, even after deleting folder
在我用於安裝程序的 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;
}
我從 ProgramData 中刪除了 CompanyName 文件夾,以查看它是否允許程序重新創建文件並且程序仍然可以讀取該文件。 Windows 資源管理器將顯示該文件夾不存在。
您知道是什么導致文件以這種方式“重影”嗎?
一旦我發現它正在寫入虛擬商店,我發現了這個:
在 C:\\ProgramData\\ 中寫入時的權限/所有者問題
其中說子目錄必須由安裝程序賦予一個許可的ACL。
我按照Wix: How to set permissions for folder and all sub folders to apply this ,現在應用程序再次按預期工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.