因此,我今天才拿起Inno,尝试获取Unity游戏的基本安装程序。不幸的是,Inno的安装程序部分运行正常,不幸的是,该卸载程序根本无法运行。我浏览了所有文档,并浏览了Google,并且在这个确切的问题上没有看到太多东西。 Inno docs建议使用我尝试过的[UninstallDelete]部分,其结果类似。

[Setup]
AppName=Installable Files
AppVersion=1.0
DefaultDirName={pf}\Installable Files
DefaultGroupName=Installable Files
UninstallDisplayIcon={app}\File.exe
Compression=lzma2
UninstallFilesDir={app}\uninst
SolidCompression=yes

[Files]
Source: "File.exe"; DestDir: "{app}"; DestName: "File.exe"
Source: "Files\*"; DestDir: "{app}\Files"; Flags: recursesubdirs
Source: "Files\README.txt"; DestDir: "{app}"; Flags: isreadme

[Icons]
Name: "{group}\Files"; Filename: "{app}\File.exe"; WorkingDir: "{app}"

[UninstallDelete]
Type: filesandordirs; Name: "{pf}\Files"

上面代码的输出表明它正在删除子目录中的所有文件,但是无法删除带有(145)错误代码的目录,然后指出解操作成功。无论是从Inno Setup Compiler,uninst000.exe还是从Windows中的“添加/删除程序”运行卸载程序,都相同。

实际不卸载任何东西的安装程序/卸载程序很烦人,因此,如果对此问题有任何见识,那就太好了。

(请注意,我也曾尝试删除[UninstallDelete]下的单个文件,例如Type: files; Name: "{app}\LGODemo.exe",但成功率为零)

编辑:
After Install

After Uninstall

如图所示,由于145错误,没有文件被删除。然后,卸载程序将再次尝试,并显然删除文件夹,除非它们仍然存在,并且该文件仍是100%可执行的。我仅在初始卸载文件失败时添加了UninstallDelete部分。

很抱歉,Dropbox链接无法发布img,除非我有更好的代表。

最佳答案

除非您另有说明,否则Inno会删除其安装的所有内容。

另外,在文件夹上执行显式的[UninstallDelete]可能会有不利的副作用,尤其是在路径错误的情况下({app}{pf}\blah)。想像一下是否有人将您的应用程序安装到C:\Windows\中?您刚刚删除了他们的Windows安装!

10-07 19:09
查看更多