当安装或者卸载一个程序的时候,这个程序依赖一个自定义的服务,当新的服务文件替换原有的时候提示文件被占用,操作失败。
这时候可以这样解决,设置文件copy的flag如下:
Source: "usbclerk.exe"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete
Source: "JITComVCTK.dll"; DestDir: "{app}"; Flags: ignoreversion
Source: "libwdi.dll"; DestDir: "{app}"; Flags: restartreplace uninsrestartdelete
文件拷贝完成以后
[Run]
Filename:"sc"; Parameters:" stop usbclerk" ;Flags:runhidden
Filename:"{app}\usbclerk.exe"; Parameters:" uninstall"; Flags:runhidden
这样拷贝文件的时候发现文件被占用文件暂时不替换,运行【Run】以后服务停掉了,系统会自动替换你需要替换的文件,卸载同理可得。
还有一个小诀窍如果在inno安装脚本中双引号中想包含双引号你可以param:“ “” ”;中间的两个双引号代表一个双引号(“)