Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/216.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inno setup 如何使用重新启动管理器在Inno安装卸载中关闭然后重新启动explorer.exe?_Inno Setup_Windows Restart Manager - Fatal编程技术网

Inno setup 如何使用重新启动管理器在Inno安装卸载中关闭然后重新启动explorer.exe?

Inno setup 如何使用重新启动管理器在Inno安装卸载中关闭然后重新启动explorer.exe?,inno-setup,windows-restart-manager,Inno Setup,Windows Restart Manager,是否有人知道一个示例,或者可以提供一个示例,说明如何在Inno安装程序卸载过程开始时使用Windows内置的重新启动管理器关闭explorer.exe,然后在删除文件后重新启动它?我有一些shell项,即使在取消注册后仍然被分配,并且在关闭explorer.exe之前无法删除 蒂娅 下面是一个如何做到这一点的示例: {示例如何使用RestartManager并提供在卸载Inno安装程序期间删除应用程序数据的选项} {找到了多个开源ISS代码,并进行了一些自定义更改} {这可能会被清理一下,我的目

是否有人知道一个示例,或者可以提供一个示例,说明如何在Inno安装程序卸载过程开始时使用Windows内置的重新启动管理器关闭explorer.exe,然后在删除文件后重新启动它?我有一些shell项,即使在取消注册后仍然被分配,并且在关闭explorer.exe之前无法删除


蒂娅

下面是一个如何做到这一点的示例:

{示例如何使用RestartManager并提供在卸载Inno安装程序期间删除应用程序数据的选项}
{找到了多个开源ISS代码,并进行了一些自定义更改}
{这可能会被清理一下,我的目标是让一些东西发挥作用。}
{我也把它精简了一点,因为我有多个应用程序和数据,所以希望}
{所有东西都被删除了,没有问题,但我相信你能找到答案}
{-------------------------------------------------------------------------}
{将以NULL结尾的字符数组复制到字符串。}
函数ArrayToString(Chars:Char的数组):String;
变量
Len,i:Longint;
开始
Len:=GetArrayLength(字符);
设置长度(结果,Len);
i:=0;
while(i=需要);
如果(成功=错误\成功)和(需要>0),则开始
对于i:=0,需要-1开始
{附加到列表末尾}
Have:=GetArrayLength(进程);
SetArrayLength(进程,具有+1);
{为新条目赋值}
进程[Have].ID:=AppList[i].Process.dwProcessId;
进程[Have].Name:=ArrayToString(AppList[i].Name);
进程[Have].Restartable:=AppList[i].bRestartable;
进程[Have].ToTerminate:=True;
结束;
结果:=句柄;
结束;
结束;
如果(结果=无效的句柄值),则
RmEndSession(句柄);
结束;
{-------------------------------------------------------------------------}
{返回当前使用指定模块的正在运行进程的列表。
{模块必须是DLL的完整路径和文件名。这将启动}
{RestartManager并返回其句柄或无效的\u句柄\u值(如果失败)}
{或者什么都没有锁}
函数findProcessUsingModule(模块:字符串;变量进程:进程列表):DWORD;
变量
模块:TArrayOfString;
开始
设置阵列长度(模块,1);
模块[0]:=模块;
结果:=FindProcess使用模块(模块、流程);
结束;
{-------------------------------------------------------------------------}
变量
卸载deldatapage:TNewNotebookPage;
卸载确认页面:TNewNotebookPage;
卸载进程列表页面:TNewNotebookPage;
卸载BackButton:TNewButton;
卸载下一个按钮:TNewButton;
卸载自动关闭b:TNewRadioButton;
DeleteAppDataCheckBox:TNewCheckBox;
AppData:字符串;
{-------------------------------------------------------------------------}
程序更新向导;
开始
如果UninstallProgressForm.InnerNotebook.ActivePage=UninstallDelDataPage,则
开始
UninstallProgressForm.PageNameLabel.Caption:=“选择数据卸载选项”;
UninstallProgressForm.PageDescriptionLabel.Caption:=“应该删除哪些数据(如果有)”;
结束
其他的
如果UninstallProgressForm.InnerNotebook.ActivePage=UninstallConfirmPage,则
开始
UninstallProgressForm.PageNameLabel.Caption:=“确认卸载”;
UninstallProgressForm.PageDescriptionLabel.Caption:=“确认下面的卸载选项。”;
结束
其他的
如果UninstallProgressForm.InnerNotebook.ActivePage=UninstallProcessListPage,则
开始
UninstallProgressForm.PageNameLabel.Caption:=“准备卸载”;
Uninstall ProgressForm.PageDescriptionLabel.Caption:=“Uninstall正在准备从您的计算机上卸载{#MyAppName}。”
结束;
卸载BackButton。可见:=
(UninstallProgressForm.InnerNotebook.ActivePage=UninstallConfirmPage)或
((UninstallProgressForm.InnerNotebook.ActivePage=UninstallDelDataPage)和(UninstallProcessListPagenil));
如果(UninstallProgressForm.InnerNotebook.ActivePage=UninstallDelDataPage)或
((UninstallProgressForm.InnerNotebook.ActivePage=UninstallProcessListPage)和(UninstallDelDataPagenil))然后
开始
卸载下一个按钮。标题:=设置消息(msgButtonNext);
UninstallNextButton.ModalResult:=mrNone;
结束
其他的
开始
卸载下一个按钮。标题:=“卸载”;
{使“卸载”按钮中断ShowModal循环}
UninstallNextButton.ModalResult:=mrOK;
结束;
结束;
{-------------------------------------------------------------------------}
过程CreateUninstallConfirmPage();
变量
PageText:TNewStaticText;
开始
{创建第二页}
如果为(UninstallConfirmPagenil),则为UninstallConfirmPage.Free();
UninstallConfirmPage:=TNewNotebookPage.Create(UninstallProgressForm);
UninstallConfirmPage.Notebook:=UninstallProgressForm.InnerNotebook;
UninstallConfirmPage.Parent:=UninstallProgressForm.InnerNotebook;
UninstallConfirmPage.Align:=alClient;
PageText:=TNewStaticText.Create(UninstallProgressForm);
PageText.Parent:=UninstallConfirmPage;
PageText.Top:=UninstallProgressForm.StatusLabel.Top;
PageText.Left:=UninstallProgressForm.StatusLabel.Left;
PageText.Width:=UninstallProgressForm.StatusLabel.Width;
PageText.Height:=UninstallProgressForm.StatusLabel.Height;
PageText.AutoSize:=真;
PageText.Wordwrap:=True;
PageText.ShowAccelChar:=False;
PageText.Font.Size:=9;
PageText.Caption:=“单击卸载继续删除{#MyAppName}”;
如果删除AppDataCheckBox。选中,则
PageText.Caption:=PageText.Caption+#13#10#10+'警告:应用程序数据将被删除';
结束;
{-------------------------------------------------------------------------}
卸载下一步按钮点击程序(发送方:TObject);
开始
如果卸载