我正在编写几个软件包的安装程序/包,我们的客户经常需要安装这些软件包。基本上,它只包含了几个可执行的安装程序。对于用户选择的每个组件,它将安装程序解压缩到临时文件夹并运行它。
这些安装程序之一是AVRStudio5.1,它是由第三方(Atmel)制作的。它可以在这里下载:http://www.atmel.com/Images/as5installer-stable-5.1.208-full.exe (616 MB)。
不幸的是,Atmel在安装程序的末尾添加了一个复选框,为用户提供了启动AVR Studio 5.1的选项,默认情况下会选中:

如果用户只点击"Finish“(大多数用户可能会这样做),那么AVR 5将接管屏幕,我的安装程序将留在后台。用户可能会忘记我的安装程序,而无法完成包的其他组件的安装。
有人能想出一个很好的解决办法吗?我想到了一些:
1)第三方安装程序似乎是用InstallShield编写的。有什么标准的方法可以将命令行选项传递给InstallShield安装程序以禁用复选框或将其默认状态更改为未选中?
2)我目前的解决方案是在第三方安装程序完成后睡眠10秒,然后使用NSIS的BringToFront命令将我的安装程序窗口带到前面。它适用于我在Windows 7 Pro上,但我听说它并不总是工作,可能只是突出窗口。
3)静默安装似乎不起作用。当我从命令行尝试它时,第三方安装程序只运行一点点,然后退出。如果你能让它起作用,就告诉我。
4)不幸的是,我不能只在最后运行第三方安装程序,因为我的另一个安装程序需要在它之后运行并将一些文件复制到它的安装目录中。
我的安装程序是用NSIS编写的,如果这有区别的话。谢谢你的建议!
更新1,2012-02-27,6:30下午:
感谢Michael的提示(InstallShield的技术负责人!)还有克里斯托弗·佩恩特。克里斯托弗说,问题中的安装程序是一个InstallScript InstallShield安装程序,而不是一个基于MSI的InstallShield安装程序。我找到了这篇关于InstallScript与InstallScript MSI的文章,这篇文章帮助我理解了两者之间的区别。
现在我们有两种方法从安装程序中提取文件:使用UniExtract或运行as5installer-stable-5.1.208-full.exe /extract_all:c:\extract。这两种方法似乎提取了相同的文件集,您可以在这里看到:

我无法通过双击*.cab文件或使用UniExtract来提取它们。我无法使用setup.exe提取UniExtract。我可以运行setup.exe,它的行为似乎与5安装程序-稳定-5.1.208-Ful.exe一样。有一个setup.iss文件,它看起来有点类似于我在尝试静默安装时创建的文件。如果你愿意,你可以看到setup.iss含量。
我想知道:在安装程序中有一个setup.exe是正常的,还是Atmel在做一些奇怪的事情?运行此setup.exe是否相当于运行5安装程序-稳定-5.1.208-Ful.exe?另外,在安装程序中有一个setup.iss是正常的吗?它有什么用途呢?
您也可以使用7-zip查看安装程序中的文件,但这是一组不同的文件,似乎没有完全解压缩。
Christopher的建议是,bOpt1、bOpt2或.iss文件末尾的bOpt3选项之一对应于我试图禁用的复选框。结合Michael的建议,我尝试用以下命令安装AVR Studio 5.1:
as5installer-stable-5.1.208-full.exe /v"bOpt1=0 bOpt2=0 bOpt3=0"
as5installer-stable-5.1.208-full.exe /v"bOpt1= bOpt2= bOpt3="
setup.exe /v"bOpt1= bOpt2= bOpt3="不幸的是,我没有观察到任何不同的行为。复选框仍然被选中,当我单击Finish时,它仍然启动AVRStudio5.1。也许我是以错误的方式在命令行上指定了多个属性重写?我有更多的想法要尝试,但我感兴趣的是,如果其他人也有任何想法。是否有任何方法可以使用.iss文件而不进行静默安装,或者这是它的唯一用途?
发布于 2012-02-27 04:40:21
好的,我终于找到了一些空闲的时间来下载这个EXE,下面是我发现的。
这是一个InstallScript安装程序,而不是MSI。因此,运行以下命令(从提升的命令提示符):
as5installer-stable-5.1.208-full /extract_all:c:\extract现在获取C:\提取\disk1 1中找到的文件
对于InstallScript项目,您有记录和回放UI的概念。
这个包已经有了一个setup.iss文件。看看它的结尾:
[{D574D18C-9D52-4B4B-9647-AE6B89FD3F70}-SdFinish-0]
Result=1
bOpt1=0
bOpt2=0
bOpt3=0其中一个布尔选项是您需要更改的值。剩下的我就交给你了。您可能需要记录一个新的ISS文件,而且始终有可能有人编写了一些,它总是将复选框设置为true,不管您做什么。在这种情况下,您必须重新打包工具,并将其转换为MSI格式。
https://stackoverflow.com/questions/9421126
复制相似问题