技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 825|回复: 15
收起左侧

[vfb]关于MSI文件只解压不安装的VFB项目源码

[复制链接]

4

主题

30

帖子

417

积分

用户组: 中·技术宅

UID
7138
精华
0
威望
17 点
宅币
338 个
贡献
15 次
宅之契约
0 份
在线时间
40 小时
注册时间
2021-5-11
发表于 2021-6-15 18:21:13 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
保存为Form1.frm,放到该项目的forms文件夹下
[Visual Basic] 纯文本查看 复制代码
#VisualFreeBasic_Form#  Version=5.5.8
Locked=0

[Form]
Name=Form1
ClassStyle=CS_VREDRAW,CS_HREDRAW,CS_DBLCLKS
ClassName=
WinStyle=WS_THICKFRAME,WS_CAPTION,WS_SYSMENU,WS_MINIMIZEBOX,WS_CLIPSIBLINGS,WS_CLIPCHILDREN,WS_VISIBLE,WS_EX_WINDOWEDGE,WS_EX_CONTROLPARENT,WS_EX_LEFT,WS_EX_LTRREADING,WS_EX_RIGHTSCROLLBAR,WS_POPUP,WS_SIZEBOX
Style=3 - 常规窗口
Icon=
Caption=MSI文件解压助手
StartPosition=1 - 屏幕中心
WindowState=0 - 正常
Enabled=True
Repeat=False
Left=0
Top=0
Width=420
Height=186
TopMost=False
Child=False
MdiChild=False
TitleBar=True
SizeBox=True
SysMenu=True
MaximizeBox=False
MinimizeBox=True
Help=False
Hscroll=False
Vscroll=False
MinWidth=0
MinHeight=0
MaxWidth=0
MaxHeight=0
NoActivate=False
MousePass=False
TransPer=0
TransColor=SYS,25
Shadow=0 - 无阴影
BackColor=SYS,15
MousePointer=0 - 默认
Tag=
Tab=True
ToolTip=
ToolTipBalloon=False
AcceptFiles=False

[TextBox]
Name=Text1
Index=-1
Style=3 - 凹边框
TextScrollBars=0 - 无滚动条
Text=此处显示路径
Enabled=False
Visible=True
MaxLength=0
ForeColor=SYS,8
BackColor=SYS,5
Font=微软雅黑,9,0
TextAlign=0 - 左对齐
PasswordChar=
Locked=False
HideSelection=True
Multiline=False
Uppercase=False
Lowercase=False
Number=False
AutoHScroll=True
AutoVScroll=False
Left=32
Top=17
Width=340
Height=27
Layout=0 - 不锚定
MousePointer=0 - 默认
Tag=
Tab=True
ToolTip=
ToolTipBalloon=False
LeftMargin=0
RightMargin=0
AcceptFiles=False

[Button]
Name=Command1
Index=-1
Caption=选择文件
TextAlign=1 - 居中
Ico=
Enabled=True
Visible=True
Default=False
OwnDraw=False
MultiLine=False
Font=微软雅黑,9,0
Left=32
Top=70
Width=60
Height=50
Layout=0 - 不锚定
MousePointer=0 - 默认
Tag=
Tab=True
ToolTip=
ToolTipBalloon=False

[Button]
Name=Command2
Index=-1
Caption=解压
TextAlign=1 - 居中
Ico=
Enabled=True
Visible=True
Default=False
OwnDraw=False
MultiLine=False
Font=微软雅黑,9,0
Left=312
Top=70
Width=60
Height=50
Layout=0 - 不锚定
MousePointer=0 - 默认
Tag=
Tab=True
ToolTip=
ToolTipBalloon=False


[AllCode]
Sub Form1_Command1_BN_Clicked(hWndForm As hWnd ,hWndControl As hWnd) '单击
   Dim As String MsiFilename = FF_OpenFileDialog(hWndForm ,"msi" , ,ExePath ,"Windows安装程序(*.msi)|*.msi" , ,0 ,1)
   Text1.Text = MsiFilename
   Dim As Integer SpaceStr = InStr(MsiFilename ," ")
   If SpaceStr > 0 Then
      Text1.Text = """" & MsiFilename & """"
   End If
   If MsiFilename <> "" Then
      Command2.Enabled = True
   Else
      Command2.Enabled = False
   End If
   
End Sub

Sub Form1_Command2_BN_Clicked(hWndForm As hWnd ,hWndControl As hWnd) '单击
   Dim As String npath = Text1.Text
   If Left(npath ,1) = """" Then
      npath = Left(npath ,InStrRev(npath ,".msi")-1) & """"
   Else
      npath = Left(npath ,InStrRev(npath ,".msi")-1)
   End If
   'MsgBox npath
   Exec("C:\Windows\System32\msiexec.exe" ,"/a " & Text1.Text & " /qn+ TARGETDIR=" & npath)
   Command2.Enabled = False
End Sub

Sub Form1_Shown(hWndForm As hWnd ,UserData As Integer) '窗口完全显示后。UserData 来自显示窗口最后1个参数。
   Command2.Enabled = False
End Sub
回复

使用道具 举报

1088

主题

2606

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
236
威望
474 点
宅币
21362 个
贡献
45937 次
宅之契约
0 份
在线时间
2059 小时
注册时间
2014-1-26
发表于 2021-6-18 07:47:25 | 显示全部楼层
这是啥?能给个更详细的解释吗?

5

主题

105

帖子

2529

积分

用户组: 上·技术宅

UID
4293
精华
5
威望
43 点
宅币
1894 个
贡献
419 次
宅之契约
0 份
在线时间
152 小时
注册时间
2018-9-19
发表于 2021-6-18 09:53:40 | 显示全部楼层
0xAA55 发表于 2021-6-18 07:47
这是啥?能给个更详细的解释吗?

看起来像是不走安装直接解包提取msi目标安装的文件,以前我用过系统自带的命令行提取过,看样子楼猪这个方式就是GUI调系统的msi解包命令。

4

主题

30

帖子

417

积分

用户组: 中·技术宅

UID
7138
精华
0
威望
17 点
宅币
338 个
贡献
15 次
宅之契约
0 份
在线时间
40 小时
注册时间
2021-5-11
 楼主| 发表于 2021-6-19 14:11:58 | 显示全部楼层
系统消息 发表于 2021-6-18 09:53
看起来像是不走安装直接解包提取msi目标安装的文件,以前我用过系统自带的命令行提取过,看样子楼猪这个 ...

是的,你说对了.敲命令太累了,鼠标点一点舒服多了,而且用这个可以防止空格路径忘记加引号

1088

主题

2606

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
236
威望
474 点
宅币
21362 个
贡献
45937 次
宅之契约
0 份
在线时间
2059 小时
注册时间
2014-1-26
发表于 2021-6-20 18:13:59 | 显示全部楼层
WeaponJang 发表于 2021-6-19 14:11
是的,你说对了.敲命令太累了,鼠标点一点舒服多了,而且用这个可以防止空格路径忘记加引号 ...

原来如此。但主要是你直接把VFB的frm内容放上来了,很多信息都是我觉得没必要需要的,就跳过不看了。

4

主题

30

帖子

417

积分

用户组: 中·技术宅

UID
7138
精华
0
威望
17 点
宅币
338 个
贡献
15 次
宅之契约
0 份
在线时间
40 小时
注册时间
2021-5-11
 楼主| 发表于 2021-6-20 21:16:52 | 显示全部楼层
0xAA55 发表于 2021-6-20 18:13
原来如此。但主要是你直接把VFB的frm内容放上来了,很多信息都是我觉得没必要需要的,就跳过不看了。 ...

代码逻辑只要看[Allcode]里的就行了,其他都是UI方面的

30

主题

203

帖子

2417

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
1835 个
贡献
206 次
宅之契约
0 份
在线时间
386 小时
注册时间
2016-7-12
发表于 2021-6-21 22:26:57 | 显示全部楼层
WeaponJang 发表于 2021-6-19 14:11
是的,你说对了.敲命令太累了,鼠标点一点舒服多了,而且用这个可以防止空格路径忘记加引号 ...

直接注册表里添加一个右键命令更省事吧

4

主题

30

帖子

417

积分

用户组: 中·技术宅

UID
7138
精华
0
威望
17 点
宅币
338 个
贡献
15 次
宅之契约
0 份
在线时间
40 小时
注册时间
2021-5-11
 楼主| 发表于 2021-6-23 21:19:20 | 显示全部楼层
Ayala 发表于 2021-6-21 22:26
直接注册表里添加一个右键命令更省事吧

怎么添加,我百度找了一圈没找到怎么弄这个MSI右键解压

30

主题

203

帖子

2417

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
1835 个
贡献
206 次
宅之契约
0 份
在线时间
386 小时
注册时间
2016-7-12
发表于 2021-6-25 21:28:41 | 显示全部楼层
本帖最后由 Ayala 于 2021-6-25 21:30 编辑
WeaponJang 发表于 2021-6-23 21:19
怎么添加,我百度找了一圈没找到怎么弄这个MSI右键解压


[Bash shell] 纯文本查看 复制代码

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\msiexec]
@="解压msi文件"

[HKEY_CLASSES_ROOT\*\shell\msiexec\command]
@="cmd /k C:\\Windows\\System32\\msiexec.exe /a \"%1\" /qn+ TARGETDIR=c:\\temp & cmd /k start c:\\temp"

4

主题

30

帖子

417

积分

用户组: 中·技术宅

UID
7138
精华
0
威望
17 点
宅币
338 个
贡献
15 次
宅之契约
0 份
在线时间
40 小时
注册时间
2021-5-11
 楼主| 发表于 2021-6-26 09:14:30 | 显示全部楼层
本帖最后由 WeaponJang 于 2021-6-26 09:18 编辑

这样会不会更好点
[Bash shell] 纯文本查看 复制代码
Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Msi.Package\shell\unpack]
@="解压msi文件"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Msi.Package\shell\unpack\command]
@="cmd.exe /c C:\\Windows\\System32\\msiexec.exe /a \"%1\" /qn+ TARGETDIR=c:\\msitemp && start c:\\msitemp"

5

主题

105

帖子

2529

积分

用户组: 上·技术宅

UID
4293
精华
5
威望
43 点
宅币
1894 个
贡献
419 次
宅之契约
0 份
在线时间
152 小时
注册时间
2018-9-19
发表于 2021-6-28 09:49:43 | 显示全部楼层
本帖最后由 系统消息 于 2021-6-28 09:53 编辑
Ayala 发表于 2021-6-25 21:28
[mw_shl_code=bash,true]

Windows Registry Editor Version 5.00


C:\Temp 建议换成 %Temp%,C盘下分User目录你没有狗管理权限无法写入。
另外用户的系统不一定在C盘,请用 %SystemRoot% 环境变量获取正确的Windows目录路径。

30

主题

203

帖子

2417

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
1835 个
贡献
206 次
宅之契约
0 份
在线时间
386 小时
注册时间
2016-7-12
发表于 2021-7-1 21:43:05 | 显示全部楼层
系统消息 发表于 2021-6-28 09:49
C:\Temp 建议换成 %Temp%,C盘下分User目录你没有狗管理权限无法写入。
另外用户的系统不一定在C盘,请用 ...

那么注册表里怎么引用系统变量呢?

30

主题

203

帖子

2417

积分

用户组: 版主

UID
1821
精华
7
威望
69 点
宅币
1835 个
贡献
206 次
宅之契约
0 份
在线时间
386 小时
注册时间
2016-7-12
发表于 2021-7-1 22:02:56 | 显示全部楼层
系统消息 发表于 2021-6-28 09:49
C:\Temp 建议换成 %Temp%,C盘下分User目录你没有狗管理权限无法写入。
另外用户的系统不一定在C盘,请用 ...

原来 需要REG_EXPAND_SZ 类型才行 困扰了很多年的问题

5

主题

105

帖子

2529

积分

用户组: 上·技术宅

UID
4293
精华
5
威望
43 点
宅币
1894 个
贡献
419 次
宅之契约
0 份
在线时间
152 小时
注册时间
2018-9-19
发表于 2021-7-2 09:59:37 | 显示全部楼层
Ayala 发表于 2021-7-1 22:02
原来 需要REG_EXPAND_SZ 类型才行 困扰了很多年的问题

对,我也是研究了很久才发现的

4

主题

30

帖子

417

积分

用户组: 中·技术宅

UID
7138
精华
0
威望
17 点
宅币
338 个
贡献
15 次
宅之契约
0 份
在线时间
40 小时
注册时间
2021-5-11
 楼主| 发表于 2021-7-3 13:08:55 | 显示全部楼层
系统消息 发表于 2021-7-2 09:59
对,我也是研究了很久才发现的

看来您是注册表老手了,有考虑写个你趟注册表的坑的心得吗?

5

主题

105

帖子

2529

积分

用户组: 上·技术宅

UID
4293
精华
5
威望
43 点
宅币
1894 个
贡献
419 次
宅之契约
0 份
在线时间
152 小时
注册时间
2018-9-19
发表于 2021-7-3 14:52:27 | 显示全部楼层
WeaponJang 发表于 2021-7-3 13:08
看来您是注册表老手了,有考虑写个你趟注册表的坑的心得吗?

也没啥特别的心得,就是被REG_SZ和REG_EXPAND_SZ的区别坑过

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2021-10-24 05:10 , Processed in 0.043141 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表