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

Inno Setup新文件替换原文件 [复制链接]

上一主题 下一主题
离线969511048
 

发帖
151
金钱
1440
威望
144
只看楼主 倒序阅读 0 发表于: 2013-12-08
Inno Setup制作安装程序将新文件替换掉原文件
  
    
  
下面的代码是参照两篇文章得到的,不知道对不对?  
离线969511048

发帖
151
金钱
1440
威望
144
只看该作者 1 发表于: 2013-12-08
跟我学汉化-INNO setup 制作补丁
http://teach.hanzify.org/article/702-1274667264.html
示例文件   无法下载
离线969511048

发帖
151
金钱
1440
威望
144
只看该作者 2 发表于: 2013-12-08
用户原文件放在未知目录--》App--》xxx文件夹--》XXX.exe
先从注册表判断应用程序是否存在
无法获取应用程序位置,出现对话框提示,让用户自行决定软件位置

离线969511048

发帖
151
金钱
1440
威望
144
只看该作者 3 发表于: 2013-12-08
请老虎版主帮个忙。。。。。。。。
下面是假设安装原版后会添加如下键值:HKEY_LOCAL_MACHINE\SOFTWARE\Cleanse
离线969511048

发帖
151
金钱
1440
威望
144
只看该作者 4 发表于: 2013-12-08
自己的写法:
#define MyAppName "我的程序"

[Setup]
AppName={#MyAppName}
AppVersion=1.0
UsePreviousAppDir=yes
DefaultDirName={pf}\{#MyAppName}
Uninstallable=false
OutputDir=d:\My Documents\新建文件夹
Compression=lzma
SolidCompression=yes

[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "D:\视频缓存提取工具\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[code]
function ShouldSkipPage(PageID: Integer): Boolean;
begin
result := false;
if PageID = wpSelectDir then result := true;
end;
function InitializeSetup(): Boolean;
begin
  Result := true;
if not RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\Cleanse') then
  begin
  MsgBox('未检测原程序,请选择原程序安装路径', mbInformation, MB_OK);
  Result := False;
end;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  if CurPageID = wpSelectDir then
    Result := FileExists(ExpandConstant('{app}\MyProg.exe'))
  else
    Result := True;
  if not Result then
    MsgBox('你选择的目录没有需要补丁的程序,请选择正确的目录!', mbInformation, MB_OK);
end;
离线969511048

发帖
151
金钱
1440
威望
144
只看该作者 5 发表于: 2013-12-08
正确吗?头疼啊...
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 6 发表于: 2013-12-09
你的代码里面思路有些混乱,具体你根据我下面给你修正的代码自己去研究吧。

#define MyAppName "我的程序"

[Setup]
AppName={#MyAppName}
AppVersion=1.0
UsePreviousAppDir=yes
DefaultDirName={reg:HKLM\Software\Cleanse,InstPath|{pf}\{#MyAppName}}
Uninstallable=false
OutputDir=d:\My Documents\新建文件夹
Compression=lzma
SolidCompression=yes
DirExistsWarning=no


[Languages]
Name: "chinesesimp"; MessagesFile: "compiler:Default.isl"

[Files]
Source: "D:\视频缓存提取工具\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs

[code]
var
  OldPrgInstalled: boolean;
  OldPrgPath: string;
function InitializeSetup(): Boolean;
begin
  Result := true;
  OldPrgInstalled := false;
  if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Cleanse', 'InstPath', OldPrgPath) then
    if FileExists(OldPrgPath+'\MyProg.exe') then
      OldPrgInstalled := true;
end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  result := false;
  if PageID = wpSelectDir then
    result := OldPrgInstalled;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result:= true;
  if (CurPageID = wpSelectDir) and (not FileExists(ExpandConstant('{app}\MyProg.exe'))) then
    begin
      Result := false;
      MsgBox('你选择的目录没有需要补丁的程序,请选择正确的目录!', mbInformation, MB_OK);
    end;
end;
离线969511048

发帖
151
金钱
1440
威望
144
只看该作者 7 发表于: 2013-12-09
真心感谢吧主的无私奉献