我需要为使用本机扩展的 AIR 桌面应用程序进行自动静默更新(air Updater 类不支持的本机签名安装程序)我遵循了这个对话,所以现在我有一个 bat 文件可以卸载、安装并启动完美运行的应用程序,
taskkill /IM Project.exe
taskkill /IM adl.exe
wmic product where name="Project" call uninstall /nointeractive
"%HOMEPATH%\AppData\Roaming\com.Project\Local Store\Project.exe" -silent -eulaAccepted -location "\"%PROGRAMFILES(X86)%\" -desktopShortcut
"%PROGRAMFILES(X86)%\Project\Project.exe"
taskkill /IM cmd.exe
我制作了一个运行它的 java 程序,它也运行良好,甚至比我预期的还要好,它甚至没有显示 cmd,而且完全无声,
try {
String ls_str;
Process ls_proc = Runtime.getRuntime().exec("Bat/update.bat");
// get its output (your input) stream
DataInputStream ls_in = new DataInputStream(
ls_proc.getInputStream());
try {
while ((ls_str = ls_in.readLine()) != null) {
System.out.println(ls_str);
}
} catch (IOException e) {
System.exit(0);
}
} catch (IOException e1) {
System.err.println(e1);
System.exit(1);
}
但我无法真正实现这个 java 解决方案,AIR 不支持
所以我做了一个本机扩展,它将启动 .bat 文件,它可以工作,
system("cmd /C \"%HOMEPATH%\\AppData\\Roaming\\com.Project\\Local Store\\update.bat\"");
但我对这种方法有两个问题:
- CMD 保持打开状态,
- 该软件的最后一个版本在后台保持冻结状态,因此 bat 文件没有关闭它...
一旦我关闭新安装的软件版本,所有这些都会消失...
那么我应该尝试改进java程序,找到实现它的方法吗?还是有更好的方法使用本机扩展?
谁能帮我这个 ?先感谢您
编辑
现在,我所做的是,我正在使用一个简单的 vbs 文件来运行批处理文件,
CreateObject("Wscript.Shell").Run "update.bat",0,True
并通过本机扩展启动 vbs,这是一个安静的好结果,但现在我在执行期间有一个空白的 cmd,我想隐藏它......一个非常累人的解决方法......
我可以使用它一段时间,但我真的想改进它..