论坛风格切换切换到宽版
  • 2526阅读
  • 7回复

请教老虎版主,用inno setup打包进行自动安装疑难问题。 [复制链接]

上一主题 下一主题
离线ztsuser
 

发帖
7
金钱
70
威望
7
只看楼主 倒序阅读 0 发表于: 2015-09-09
请教老虎版主,本人菜鸟,我有一个setup.exe和一个update.sql文件想用inno setup打包进行自动安装,其中setup.exe需要加参数/qs /a等参数进行静默安装的,update.sql是SQLServer2008文件,请问这两个文件如何打包进行自动安装?
离线我爱你

发帖
22
金钱
220
威望
22
只看该作者 1 发表于: 2015-09-09
//静默安装
Filename: "{app}\my.exe"; Parameters: "/install /silent"; StatusMsg: "正在安装服务...."; MinVersion: 0.0,5.0; Flags: shellexec
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 2 发表于: 2015-09-10
回答楼主:
我没有使用 SQLServer 2008,所以不知道你说的 update.sql 文件应该安装到哪里。具体应该是自动读取注册表的内容,然后将 update.sql 文件安装到那个地方。
你的脚步文件大致应该是下面这样的,其中 {reg:} 里面的内容要你自己具体确定。

[Setup]
AppName=你的安装程序名称
AppVersion=1.0
DefaultDirName={reg:HKxx\SubkeyName,ValueName}
DefaultGroupName=My Program
DisableDirPage=yes
DirExistsWarning=no
DisableReadyPage=yes
DisableReadyMemo=yes
DisableProgramGroupPage=yes
DisableFinishedPage=yes
Uninstallable=no

[Files]
Source: "update.sql"; DestDir: "{app}"; Flags: onlyifdoesntexist
Source: "setup.exe"; DestDir: "{tmp}"

[Run]
Filename: "{tmp}\setup.exe"; Parameters: "/qs /a"; Flags: runhidden
离线ztsuser

发帖
7
金钱
70
威望
7
只看该作者 3 发表于: 2015-09-10
回 2楼(gnatix) 的帖子
gnatix:回答楼主:我没有使用 SQLServer 2008,所以不知道你说的 update.sql 文件应该安装到哪里。具体应该是自动读取注册表的内容,然后将 update.sql 文件安装到那个地方。你的脚步文件大致应该是下面这 .. (2015-09-10 03:38) 

回版主,这个UPDATE是写到SQL里面的,建表用的,跟注册表是不同的。
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 4 发表于: 2015-09-10
你没有看懂我的帖子。我不是说它是注册表,而是说它所在的 SQL 文件夹应该要读取注册表的内容确定。我说了,我的电脑上没有使用 SQL,所以具体我不知道要把你的 update.sql 安装到哪里,这个要你自己去搞清楚。
离线lovelost

发帖
140
金钱
1060
威望
106
只看该作者 5 发表于: 2015-09-11
回 3楼(ztsuser) 的帖子
简单的办法,用类似下面的语句试试:
[CODE]
procedure CurStepChanged(CurStep: TSetupStep);
var
  ResultCode:integer;
begin
   if not(CurStep=ssPostInstall)then exit;
   Exec(ExpandConstant('{cmd}'),'sqlcmd.exe -E -i "'+ExpandConstant('{app}\update.sql')+'"','',SW_HIDE,ewNoWait,ResultCode);
end;
由于SqlServer的实例名不同,相应的你需要做一些调整.
离线ztsuser

发帖
7
金钱
70
威望
7
只看该作者 6 发表于: 2015-09-11
回 4楼(gnatix) 的帖子
gnatix:你没有看懂我的帖子。我不是说它是注册表,而是说它所在的 SQL 文件夹应该要读取注册表的内容确定。我说了,我的电脑上没有使用 SQL,所以具体我不知道要把你的 update.sql 安装到哪里,这个要 .. (2015-09-10 13:33) 

好的,谢谢版主
离线ztsuser

发帖
7
金钱
70
威望
7
只看该作者 7 发表于: 2015-09-11
回 5楼(lovelost) 的帖子
lovelost:简单的办法,用类似下面的语句试试:procedure CurStepChanged(CurStep: TSetupStep);var  ResultCode:integer;....... (2015-09-11 11:05) 

哇,好强大啊,32个赞!