论坛风格切换切换到宽版
  • 3974阅读
  • 8回复

NSIS:关于程序安装位置选择的两个小问题 [复制链接]

上一主题 下一主题
离线Suntime
 

发帖
523
金钱
40
威望
4
只看楼主 倒序阅读 0 发表于: 2005-11-14
NSIS:关于程序安装位置选择的两个小问题

1、如下图:因为补丁的安装位置是读取注册表,即通过
InstallDirRegKey HKLM "SOFTWARE\UfSoft\UF2000\2.0\Install\CurrentInstPath" ""
来确认安装位置的,在如下页面中,只想告诉用户补丁程序安装在什么位置,但不能让用户更改安装位置,
[attachmentid=17814]

如何才能将“浏览”按钮及“地址栏”置灰,设置为不可选状态?

2、在上述页面中,当读取不到[HKEY_LOCAL_MACHINE\SOFTWARE\UfSoft\UF2000\2.0\Install\CurrentInstPath]键值时,可以确认原程序包没有安装,补丁程序不能继续或退出安装,当读取到键值时,可以确认原程序已经安装,补丁程序可以继续安装,

阿信、蓝MM,该如何办?
图画曾识零陵郡,不到潇湘岂有诗!

欢迎光临我的阳光部落
离线蓝色网际
发帖
1795
金钱
0
威望
0
只看该作者 1 发表于: 2005-11-14
定义一个 MUI_PAGE_CUSTOMFUNCTION_SHOW 函数,然后函数里添加
  FindWindow $0 "#32770" "" $HWNDPARENT
     GetDlgItem $0 $0 1019
     EnableWindow $0 0
就可以,如果目录不存在自然不能进行下一步。
不要在 PM 里问问题,PM 不是用来问问题的。
离线Suntime

发帖
523
金钱
40
威望
4
只看该作者 2 发表于: 2005-11-14
没弄明白,即使读取不到[HKEY_LOCAL_MACHINE\SOFTWARE\UfSoft\UF2000\2.0\Install\CurrentInstPath]键值,即找不到原安装包的安装位置,NSIS也会自动默认安装位置为 X:\Program Files ,用上述函数似乎一点用没有。

还有,这样做,还是禁止不了用户修改安装目录,一修改,补丁文件不能发挥作用了!
图画曾识零陵郡,不到潇湘岂有诗!

欢迎光临我的阳光部落
离线foolman
发帖
220
金钱
0
威望
0
只看该作者 3 发表于: 2005-11-14
  因为你设置的$INSTDIR就是program files目录。可在读取注册表后,将读取到的变量赋予$Instdir即可。
  如果读不到,即没有安装过。 则补丁可直接弹出一个messagebox后quit。 不必再继续到安装目录选择页面了。
  关于禁止修改安装目录选择,可看nsis的MUI相关帮助文档。
离线lkou
发帖
*
金钱
*
威望
*
只看该作者 4 发表于: 2005-11-14
做个自定义的page替换那个目录选择页面就可以了,简单方便
离线蓝色网际
发帖
1795
金钱
0
威望
0
只看该作者 5 发表于: 2005-11-14
你肯定设置了 InstallDir
不要在 PM 里问问题,PM 不是用来问问题的。
离线duskymagus
发帖
178
金钱
100
威望
10
只看该作者 6 发表于: 2005-11-15
其实我觉得楼主的问题的简单解决办法是

Function .onVerifyInstDir
IfFileExists $INSTDIR\你的执行档.exe PathGood
  Abort ; 如果 $INSTDIR 不是你的程序的路径,则不让用户安装在这里
PathGood:
FunctionEnd
离线Suntime

发帖
523
金钱
40
威望
4
只看该作者 7 发表于: 2005-11-15
根据程序位置来确定是不现实的,因为管理类软件的销售机制是模块加站点制,太多了!

我重新看了一下帮助文件,蓝色网际和foolman是可行的,不过这两天没有时间弄!
图画曾识零陵郡,不到潇湘岂有诗!

欢迎光临我的阳光部落
离线iceshell
发帖
194
金钱
0
威望
0
只看该作者 8 发表于: 2005-11-25
QUOTE(duskymagus @ 2005年11月15日 00时45分)
其实我觉得楼主的问题的简单解决办法是

Function .onVerifyInstDir
  IfFileExists $INSTDIR\你的执行档.exe PathGood
    Abort ; 如果 $INSTDIR 不是你的程序的路径,则不让用户安装在这里
  PathGood:
FunctionEnd
[snapback]256055[/snapback]




支持使用这个简单的方法 啊哈哈