Inno Setup使用上的几个问题

分类: Install Setup 2013-02-02 15:48 1781人阅读 评论(0) 收藏 举报
Inno Setup使用上的几个问题:

【问题一:Inno Setup 执行REG文件代码?】
[Run]
Filename: "{win}\regedit.exe";Parameters:"/s {tmp}\reg.reg" // 静默参数/S


【问题二:安装时,如果已经有同名文件存在,就不更新该文件?】
[Files]
Source: "test.tmp"; DestDir: "{app}"; Flags: onlyifdoesntexist //onlyifdoesntexist表示只有当这个文件不存在的时候才安装这个文件。


【问题三:卸载时不卸载某一个文件?】
[Files]
Source: "CTL3DV2.DLL"; DestDir: "{sys}"; Flags: uninsneveruninstall //uninsneveruninstall 卸载时,不删除


【问题四:Inno Setup 注册OCX】
[Files]
Source: "xxx\xxx.ocx"; DestDir: "{app}"; Flags: onlyifdoesntexist regserver //注册regserver


【问题五:如何在Inno Setup中设置某选项默认被选择?】
[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: checkedonce //参数Flags包含checkedonce即可

【问题六:Inno Setup 安装新版本之前卸载老版本?】
[code]
if
RegQueryStringValue(HKLM,
'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\My_Program_is1',
'UninstallString', ResultStr) then
begin
ResultStr := RemoveQuotes(ResultStr);
Exec(ResultStr, '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ErrorCode)
end

把其中 My_Program 换成自己的 app name 即可!


Flags :该参数是一个额外的可选项,可用空格隔开多个选项。下面是该参数所支持的选项:
createvalueifdoesntexist :当指定该标记时,安装程序只会在同名键值不存在时创建该键值。该标记在数据类型为none或者指定了deletevalue标记时不会生效。
deletekey :当指定该标记时,安装程序将会先删除整个键(若存在的话),包括其中的所有键值和子键。如果ValueType 为none时,它才会创建新的键和键值。
deletevalue :当指定该标记时,安装程序会先删除这个键值(若存在的话)。如果ValueType 为none并且不曾存在时,它才会创建新的键值。
dontcreatekey :当指定该标记时,如果指定的键在用户的系统中未曾存在时,安装程序不会尝试去创建指定的键或键值。如果指定的键已经存在,将不显示错误信息。典型的例子就是该标记与uninsdeletekey标记合用,以此达到在卸载时删除键而在安装时不会创建它们。
noerror :无论任何原因而导致安装程序创建该键失败都不会显示错误信息。
preservestringtype :这只在ValueType参数是string或expandsz时使用。当指定了该标记后,如果键值不存在并且它是字符串类型时,它将被换成先前值的相同类型。
uninsclearvalue :卸载程序时,清空键值的数据(REG_SZ类型)。该标记不能与uninsdeletekey标记合用。
uninsdeletekey :卸载程序时,删除整个键,包括其中所有的键值和子键。显然,在Windows自身的键内时,这不是一个好主意。你只应在你软件的私有键中使用它。
uninsdeletekeyifempty :卸载程序时,如果该键没有键值或子键时将其删除。该标记可以与uninsdeletevalue.标记合用。
uninsdeletevalue :卸载程序时删除键值。该标记可以与uninsdeletekeyifempty标记合用。

Inno Setup使用上的几个问题的更多相关文章

  1. Inno Setup使用上的几个问题 (转)

    Inno Setup使用上的几个问题: [问题一:Inno Setup 执行REG文件代码?][Run]Filename: "{win}\regedit.exe";Paramete ...

  2. 解决Inno Setup制作中文安装包在非中文系统上显示乱码的问题

    尼玛,好几个月没更新了.囧... 目前我司新的客户端开发已经接近尾声,该改的bug已经改完,该重构的地方也都差不多了.视觉效果也已经根据美工的样式改完了.所以,就差制作安装包了.正所谓万事俱备,只欠东 ...

  3. Inno Setup技巧[界面]欢迎页面上添加文字

    原文:Inno Setup技巧[界面]欢迎页面上添加文字 本文介绍在"欢迎页面添加文字"的两种方法. 界面预览: Setup技巧[界面]欢迎页面上添加文字" title= ...

  4. inno setup读取注册表遇到的一个坑

    一.背景 目前,公司针对PR开发的一个插件需要发布到64位系统上.该插件包括一个prm格式的文件和若干个DLL文件.其中,prm文件需要复制到PR公共插件目录下,DLL需要复制到Windows系统目录 ...

  5. Inno Setup 版本 5.5.3+ 简体中文语言包

    ; *** Inno Setup 版本 + 简体中文消息 *** [LangOptions] LanguageName=<7B80><4F53><> Languag ...

  6. Inno Setup制作安装包的几个问题

    1. 卸载时,如何判断应用程序是否运行    InnoSetup 提供变量AppMutex,用来保存应用程序的Mutex名称.现在很多应用程序都是唯一实例运行.这样避免配置文件被错误修改以及其他很多衍 ...

  7. Inno setup定制安装界面

    Innosetup功能很强大,可以通过它提供的Wizard接口来定制界面,但我对PASCAL语言不熟悉,也不清楚通过那种接口可改动的范围有多大,最后做出来的效果是否好,所以选择了通过一个DLL来实现我 ...

  8. Inno Setup 下载安装

    Inno Setup 是一个免费的 Windows 安装程序制作软件.第一次发表是在 1997 年,Inno Setup 今天在功能设置和稳定性上的竞争力可能已经超过一些商业的安装程序制作软件. 目前 ...

  9. Inno Setup制作应用程序安装包

    我最近写了一个MFC应用程序,想发给其他的小伙伴玩一玩,直接发了个exe文件过去,结果发现小伙伴那边打不开.原来这个exe文件虽然是MFC静态编译的,但是还依赖了其他几个.dll文件,需要把这几个dl ...

随机推荐

  1. 如何为Kafka集群选择合适的Partitions数量

    转载:http://blog.csdn.net/odailidong/article/details/52571901 这是许多kafka使用者经常会问到的一个问题.本文的目的是介绍与本问题相关的一些 ...

  2. 所思所想 关于asp.net界面业务分离

    1.体会:使用ASP.NET控件来做前段是有很大的局限性的 2.使用拼接HTML的方式来写代码虽然不符合模式,但是有很大的灵活性 3.如果使用拼接字符串的方式来生成前台的代码,使用NV的话完全可以实现 ...

  3. getWritableDatabase()与getReadableDatabase()方法

    一旦在程序中得到了SQLiteOpenHelper对象之后,程序无须使用SQLiteDatabase的静态方法创建SQLiteDatabase实例,而且可以使用getWritableDatabase( ...

  4. uva 10668

    #include <iostream> #include <cstdlib> #include <cstdio> #include <cmath> us ...

  5. Android的SwipeToDismiss第三方开源框架模拟QQ对话列表侧滑删除,置顶,将头像图片圆形化处理。

      <Android SwipeToDismiss:左右滑动删除ListView条目Item> Android的SwipeToDismiss是github上一个第三方开源框架(github ...

  6. Xcode连接git@osc

    Xcode 已经集成了git,建立新项目时钩选使用git,然后按照下面步骤让Xcode和git@osc 建立连接. 第一步:成生SSH密钥 打开终端命令工具,输入命令:ssh-keygen -t rs ...

  7. c++自己困惑之处

    1 typedef 可以把类型名重命名. 例如 typedef int my_i; my_i a; a为整型变量. typedef struct node *tree;       struct no ...

  8. hdu 4606 Occupy Cities

    http://acm.hdu.edu.cn/showproblem.php?pid=4606 两点之间如果有线段相隔的话,他们的最短路就需要经过线段的端点 把所有线段的端点也加入点数组中,求任意两个点 ...

  9. 让webapi只接受ajax请求

    为了测试先做一个简单的webapi,直接用新建项目时默认的就可以了.   在浏览器中测试request get,得到结果   然后再项目中新建一个AjaxOnly的类   AjaxOnly继承Acti ...

  10. 谷歌 不支持 activeX插件

    因为Chrome浏览器42以上版本已经陆续不再支持NPAPI插件,也就是说,目前的迅雷插件.FLASH插件.支付宝插件.阿里旺旺插件.百度贴吧.网银等网站都受到一定程度的影响,本文分享给大家如何让谷歌 ...