我正在尝试使用自动/自我更新程序构建应用程序。该文件将检查更新,然后立即下载文件并替换必要的文件。我一直在尝试将其放入安装程序包中,但遇到了应用程序文件夹只读的问题。我尝试使用多个 SO this one中的代码删除 readonly 参数,但是在安装程序后,该文件夹仍然是只读的。
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)]
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
try
{
string path = this.Context.Parameters["targetdir"];
path = path.Substring(0, path.Length - 1);
DirectoryInfo di = new DirectoryInfo(path);
di.Attributes &= ~FileAttributes.ReadOnly;
di.Refresh();
}
catch (Exception e)
{
}
}
我也试过把它放在 Commit 方法中。路径肯定被拉了(MessageBox.Show 显示了正确的路径)。
我是否需要做一些不同的事情来更改应用程序的主文件夹?
我不明白为什么更新程序进程在这个问题的上下文中很重要,但它是如何工作的:
- 用户将更新程序应用程序作为主应用程序的一种“门户”启动。
- 更新程序检查服务器以获取特定于该设备的更新。
- 下载新文件并替换当前未锁定的所有文件。
- 然后该 exe 调用一个辅助 exe 并自行关闭。帮助程序 exe 更新剩余的文件(即更新程序本身)
- 助手然后启动主应用程序。