inno setup 如何根据系统设置默认的安装路径?

汪宁宇 2015-05-19 11:57:10
经测试,7 X64以下的用默认参数{app} 安装在Program File都没问题

win8.1只能用AppData目录,否则程序CPU异常飚升


有没有办法让inno脚本根据系统版本来自动设置路径?
...全文
2035 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
竹a艟 2015-07-20
  • 打赏
  • 举报
回复
我也在找着方面的资料,有解决方法后大家分享
「已注销」 2015-05-19
  • 打赏
  • 举报
回复
以上是對於 NT6 也就是 Vista 開始的系統。你可以根據要求改一下,比如 > $0601 就是 Windows 8。
「已注销」 2015-05-19
  • 打赏
  • 举报
回复
一个简单的例子:
[Setup]
AppName=MyProgram
AppVersion=1.0
DefaultDirName={code:GetDefaultInstallRoot}\MyProgram

[code]
function GetDefaultInstallRoot(Param: String): String;
begin
    if ((GetWindowsVersion shr 16) >= $0600) then
        Result := ExpandConstant('{userappdata}')
    else  
        Result := ExpandConstant('{pf}');
end;
oyljerry 2015-05-19
  • 打赏
  • 举报
回复
用管理员权限安装,就可以安装到Program Files目录
习惯使用的打包工具就是 Inno Setup,而 Inno Setup 是用于安装软件的流行程序。不幸的是,没有官方的解压程序-将文件从自解压的可执行文件中取出的唯一方法是运行它。对于使用 Inno Setup 创建的安装程序的用户,Inno Setup Unpacker 可以派上用场。该工具严格从命令行运行,可让您从其安装包中快速提取安装文件。 解决此问题的一个软件是 Sergei Wanin 的 InstallExplorer,它是 FAR Manager 的插件,可以解压缩多种安装类型,包括 Inno Setup(IS)。 但是由于它没有及时更新,因此大部分时间都不支持最新的 IS,因此该程序诞生了。 Inno Setup 提取工具 Inno Setup Unpacker 中文版Inno Setup 提取工具 Inno Setup Unpacker 中文版 与 InstallExplorer 相比优点是: Innounp 是开源的,基于IS源码。 因此,它更有可能支持将来的IS版本。 它会恢复安装脚本(.iss文件)的一部分,包括注册表更改和已编译的 Innerfuse/RemObjects Pascal 脚本(如果有)。 Inno Setup 管理变得简单 Inno Setup 是一个流行且可靠的应用程序,可通过帮助您生成脚本来促进程序安装程序的创建。使用 Inno Setup 编译代码会导致从容器中解压缩安装文件,只能通过自解压文件来完成。换句话说,您需要创建一个自解压的可执行文件来封装安装文档。 Inno Setup Unpacker 可以帮助您避免此类操作,这特别有用,因为多种系统安全协议会阻止可执行文件的下载。该程序允许您通过几次按键从存档中提取文件。 从命令行运行程序 Inno Setup Unpacker 没有 GUI,但是您可以查看所有功能并从命令行轻松操作它。可能需要管理权限才能打开程序,但否则程序运行就没有问题。 Inno Setup Unpacker 的功能包括命令和选项。这些命令包括显示安装信息,详细列出文件,将文件提取到当前目录。您也可以提取不带路径的文件并测试它们的完整性。 至于选项,例如,您可以启用批处理模式,提取内部嵌入式文件,使用密码解密安装或提取所有重复文件的副本。 简单的使用说明 在命令行中打开 Inno Setup Unpacker 时,您可以查看命令,选项和使用说明的列表。该程序使您可以快速,轻松地从 Inno Setup 软件包中提取文件。此外,它使用简单,无需安装。 用法 Innounp是一个控制台应用程序,它使用命令行选项来找出要执行的操作。有关使用FAR或Total Commander作为前端的更人性化的界面,请参见下面的MultiArc部分。 Windows资源管理器爱好者:nullz制作了一些.reg脚本,以将innounp添加到右键菜单中,而Richard Santaella为innounp制作了图形包装(在下载页面上获取)。 innounp [command] [options] [@filelist] [filemask …] 命令: (no) 显示常规安装信息 -v 详细列出文件(带有大小和时间戳) -x 从安装中提取文件(到当前目录,另请参见 -d) -e 提取没有路径的文件 -t 测试文件的完整性 选项: -b 批处理(非交互式)模式-不会提示您输入密码或更改磁盘 -q 提取时不指示进度 -m 处理内部嵌入式文件(例如 license 和 uninstall.exe) -pPASS 使用密码解密安装 -dDIR 将文件提取到 DIR 中(可以是绝对路径,也可以是相对路径) -cDIR 指定 DIR 是安装中的当前目录 -n 不要尝试解压缩新版本 -fFILE 与 -p 相同,但是从 FILE 读取密码 -a 处理重复文件的所有副本 -y 在所有查询中均假设为“是”(例如覆盖文件) 如果安装程序具有 setup.0(在不使用 SetupLdr 的情况下进行安装),请在 setup.0 而不是 setup.exe 上运行 innounp。 要从特定目录提取所有文件,请使用 dirname \ *.*,而不仅仅是 dirname。 默认情况下,所有文件都提取到当前目录。使用 -d 替代此行为。例如,-dUnpacked 将在当前目录内创建一个名为 Unpacked 的目录,并将提取的文件放在此处。 -c 选项很难解释。假设您在文件管理器中打开了一个安装,然后浏览到 {app}\subdir\program.exe。现在,如果将 program.exe 复制到另一个位置,将创建整个目录树
Inno Setup 是一个免费的安装制作软件,小巧、简便、精美是其最大特点,支持pascal脚本,能快速制作出标准Windows2000风格的安装界面,足以完成一般安装任务。该软件用Delphi写成,其官方网站同时也提供源程序免费下载。它虽不能与Installshield这类恐龙级的安装制作软件相比,但也当之无愧算是后起之秀。新版功能:添加了新的 [Setup] 段 VersionInfoCopyright 指示,这允许你在安装程序的版本信息中查看版权信息。 Pascal 脚本修正/改进: 新的函数: CustomMessage、FmtMessage。 FileExists 函数不再从指定文件名中删除最后跟随的反斜框符号。在以前,FileExists('c:filename') 会返回 True。 TNewCheckListBox: 添加了新的 RequireRadioSelection 默认为 False 的布尔属性。在 5.1.4 中引进的动作“需要顶层单选按钮组选择”现在是可选的,并且可以按默认在用户创建的 TNewCheckListBoxes 中禁用。 现在可以处理带围绕引号的所有 [Setup] 和 [LangOptions] 段指示的值。在以前,只有某些指示可以删除围绕的引号,现在所有的指示均可这么做。如果你根据老的脚本可能会有不兼容的动作,可能需要调整你的脚本。 在 [INI] 段中那些包含路径的文件名条目,现在可以检查是否目录存在,以及如果需要是否创建。 为保存与 regsvr32 的一致性,在注册和反注册 32 位 DLL 时,FPU 异常现在被屏蔽。 /LOG: 当处理有 32bit 或 64bit 标记的 [Files] 段条目时,现在可以记录是否起作用的消息。 Added official Finnish translation. SetupLdr 的内部数据现在贮存在资源中,而不是在 DOS 文件头。这解决了与替换 DOS 文件头的第三方应用程序兼容性问题。
Editplus 3[1].0 正则表达式类 【1】 正则表达式应用——替换指定内容到行尾 【2】 正则表达式应用——数字替换----------------------------Microshaoft@CCF,jiuk2k@CCF 【3】 正则表达式应用——删除每一行行尾的指定字符 【4】 正则表达式应用——替换带有半角括号的多行 【5】 正则表达式应用——删除空行----------------------------江德华 软件技巧类 ------------------------------------------------------ 【6】 软件技巧——键盘记录的注意事项 【7】 软件技巧——关闭文档标签的便捷方法 【8】 软件技巧——如何去掉 EditPlus 保存文本文件时的添加后缀提示? 【9】 软件技巧——提示找不到语法文件的解决办法 【10】软件技巧——设置editplus支持其它文字,如韩文----------jackywu1978@LJF 【11】软件技巧——FTP 上传的设置----------------------------李应文2.11汉化版 【12】软件技巧——如何禁用备份文件功能? 【13】软件技巧——添加语法文件、自动完成文件、以及剪辑库文件 工具集成类 ------------------------------------------------------ 【14】工具集成——编译器集成例子(Java、Borland C++、Visual C++、Inno Setup、nsis、C#) 【15】工具集成——让Editplus调试PHP程序----------------------avenger,aukw@CCF 【16】工具集成——打造 PHP 调试环境(二)----------------------老七2.11汉化版 【17】在 WINPE 中集成 EDITPLUS 后续添加 ------------------------------------------------------ 【18】支持带UTF-8标记/不带UTF-8标记的文件 每个步骤都说得很详细了,就没有必要贴图了,体积不要太大才好。 【1】正则表达式应用——替换指定内容到行尾 原始文本如下面两行 abc aaaaa 123 abc 444 希望每次遇到“abc”,则替换“abc”以及其后到行尾的内容为“abc efg” 即上面的文本最终替换为: abc efg 123 abc efg 解决: ① 在替换对话框,查找内容里输入“abc.*” ② 同时勾选“正则表达式”复选框,然后点击“全部替换”按钮 其中,符号的含义如下: “.” =匹配任意字符 “*” =匹配0次或更多 注意:其实就是正则表达式替换,这里只是把一些曾经提出的问题加以整理,单纯从正则表达式本身来说,就可以引申出成千上万种特例。 【2】正则表达式应用——数字替换 (Microshaoft@CCF,jiuk2k@CCF) 希望把 asdadas123asdasdas456asdasdasd789asdasd 替换为: asdadas[123]asdasdas[456]asdasdasd[789]asdasd 在替换对话框里面,勾选“正则表达式”复选框; 在查找内容里面输入“[0-9][0-9][0-9]”,不含引号 “替换为:”里面输入“[\0\1\2]”,不含引号 范围为你所操作的范围,然后选择替换即可。 实际上这也是正则表达式的使用特例,“[0-9]”表示匹配0~9之间的任何特例,同样“[a-z]”就表示匹配a~z之间的任何特例 上面重复使用了“[0-9]”,表示连续出现的三个数字 “\0”代表第一个“[0-9]”对应的原型,“\1”代表第二个“[0-9]”对应的原型,依此类推 “[”、“]”为单纯的字符,表示添加“[”或“]”,如果输入“其它\0\1\2其它”,则替换结果为: asdadas其它123其它asdasdas其它456其它asdasdasd其它789其它asdasd 功能增强(by jiuk2k@CCF): 如果将查找内容“[0-9][0-9][0-9]”改为“[0-9]*[0-9]”,对应1 或 123 或 12345 或 ... 大家根据需要定制 相关内容还有很多,可以自己参考正则表达式的语法仔细研究一下 【3】正则表达式应用——删除每一行行尾的指定字符 因为这几个字符在行中也是出现的,所以肯定不能用简单的替换实现 比如 12345 1265345 2345 需要删除每行末尾的“345” 这个也算正则表达式的用法,其实仔细看正则表达式应该比较简单,不过既然有这个问题提出,说明对正则表

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧