0

我有一个软件。它具有适用于 windows 的 GUI 设置和适用于 linux 的 CLI install.sh。在执行时,它要求用户接受许可证,并在接受时要求安装位置、密钥、服务器 ip、端口,以及一个接一个的更多选项。我想让安装无人值守,以便用户双击文件,下一步是安装软件。任何建议,提前谢谢。

4

3 回答 3

2

答案取决于您使用的 InstallShield 项目类型。我强烈建议基本 MSI。InstallScript 自定义操作可以,但不要使用 InstallScript 或 InstallScript MSI 项目类型。

假设上述情况,您将创建安全的自定义公共属性,以便它们可以在命令行中传递。您还可以创建自定义对话框,以便可以在交互式安装期间输入值。然后,您可以创建验证自定义操作,以防止两种情况下的不良数据。最后,您使用 Registry、INI、XML 等系统更改中的属性,以便可以将它们应用于您的应用程序需要的地方。

您的静默安装如下所示:

msiexec /I foo.msi /qn INSTALLDIR=C:\FOO KEY=12345 SERVERIP=10.0.0.1 PORT=12345 /l*v install.log

还要确保了解 MSI 不会自动保留属性的概念。您将需要一些 AppSearch/系统搜索来检索存储的值,以便在升级/修补/修复方案期间重复使用。

于 2013-05-10T15:39:09.120 回答
1

您需要的称为静音模式。检查您的安装系统手册以获取此关键字。

许多安装系统都支持它 - 如果您尚未开始创建设置,我可以建议您使用 NSIS(/SILENT 参数)或 Inno Setup(/SILENT、/VERYSILENT)。这些是免费(开源)安装系统,它们非常强大。

请注意此功能 - 许多用户在单击应用程序图标时会感到困惑,但没有任何反应(没有打开窗口)。

于 2013-05-10T13:24:32.833 回答
0

Ok I did this using expect tool (free). Here install.sh is the file I want to execute automatically and send are my options in response to the questions it asks during installation. Let me know if any problem following this.

!/usr/local/bin/expect
spawn "./install.sh"
set timeout 2
expect {WARNING: It is strongly recommended that you install RVS as root. Do you wish to run the installer as root [Y/n]}
send "Y\r"
send "xxxxxx\r"
expect {Press enter to read the License Agreement:}
send "ENTER\r"
expect {Do you accept the License Agreement [y/N]?}
send "y\r"
expect {Where do you want to install the tools [/usr/local/pkg/RVS/v3.1a]?}
send "ENTER\r"
expect {Where do you want to create links for tools [/usr/local/bin]?}
send "ENTER\r"
expect {Where do you want to create links for libraries [usr/local/lib]}
send "ENTER\r"
expect {Which license type do you wish to use [N/f/a]?}
send "f\r"
expect {IP address:}
send "1.1.1.1\r"
expect {Port:}
send "33\r"
expect {SERVERKEY}
send "xxxxxxxxxxxx\r"
expect {Do you want to install support for GNAT Pro {6.0, 6.1, 6.4} (You need a GNAT Pro license in order to use this feature) [y/N]?}
send "y\r"
expect {Proceed with the installation [Y/n]?}
send "y\r"
spawn "rvsinfo"
interact

于 2013-05-13T13:06:22.953 回答