ShadowSocks(影梭)不完全指南 | auooo
2015年六月
91011121314
151718192021WIX ***部署教程(六) 为你收集的七个知识点 - 服务器技术综合 - 次元立方网 - 电脑知识与技术互动交流平台
WIX ***部署教程(六) 为你收集的七个知识点
&前段时间整理5篇WIX(Windows Installer XML)的***教程,但还不够完善,这里继续整理了七个知识点分享给大家。WIX最新版本3.8,点击下载
WIX***部署(一)同MSBuild自动生成打包文件 WIX***部署(二)自定义***界面和行为 WIX***部署(三)自定义***界面和行为 WIX***部署(四)添加***文件及快捷方式 WIX***部署(五)Bootstrap 捆绑***
1.设置路径变量
& 有的时候路径过长,文件又比较多,重复粘贴一个地址总是不舒服,而且要改起来也很麻烦,那这个时候就可以用统一的变量了。
& 项目右键--&属性--&Build--&Define Preprocessor variables: &直接 vars= 分号隔开就可以了。
&使用的时候用$(var.yourvars)就可以了
&!--自定义页面元素--&
&WixVariable Id='WixUIDialogBmp' Value='$(var.Photoes)bk.jpg'/&
&WixVariable Id='WixUIBannerBmp' Value='$(var.Photoes)top.jpg'/&
而上图中的Define variables是预先定义Property(在WIX中,Property就是代表变量),
其实元素Directory也是一种Property。也已经为我们定义了目录。可以直接用。
& 比如讲你的数据文件***在C:ProgramData文件中(对应CommonAppDataFolder)
&Directory Id='CommonAppDataFolder'&
&Directory Id='MyDATA' Name='DATA'&
&Directory Id='DemoProject' Name='DemoProject' /&
&/Directory&
&/Directory&
而Culture to build是用于生成不同语言的***包不同语言分号隔开。
&生成对应版本。
2.注册COM组件
& 这个问题困扰我好久,一开始用Action触发bat文件注册,但有个cmd框,有网友提议用QtExecCmdLine静默注册,但没有实现。自己写注册表一个是工作量蛮大,二个是写不对(regedit中一大堆)。最后网友提示File标签支持自己注册。我就呵呵~
&DirectoryRef Id='IORegedit'&
&Component Id='ForIOSERVER' Guid='{B5F03CF3-BBAE-4C03-BA06-4FE211FF41FD}'&
&File Id='CxDrvOPC.dll'
Source='$(var.Runtime)IORegeditCxDrvOPC.dll'
SelfRegCost='1' /&
&File Id='CxDrvModbus.dll'
Source='$(var.Runtime)IORegeditCxDrvModbus.dll'
SelfRegCost='1' /&
&/Component&
&/DirectoryRef&
SelfRegCost&0就可以自动注册,但文档里面描述的又比较晦涩,注册这个文件所需的Bytes?
&3.开机自启动
&***之后,希望程序开机启动。同C#程序一样,需要将程序注册到SOFTWAREMicrosoftWindowsCurrentVersionRun 目录下即可。
&Component Id='Register'&
&RegistryKey Action='create' Id='AutoStarKey' Root='HKLM' Key='SOFTWAREMicrosoftWindowsCurrentVersionRun'&
&RegistryValue Id='autoStarKeyValue' Name='!(loc.AppName)'
KeyPath='yes'
Type='string' Value='[INSTALLFOLDER]HMIRun.exe' /&
&/RegistryKey&
&/Component&
如果是C#程序
private void AutoRun()
//获取程序执行路径..
string starupPath = Application.ExecutableP
//表示Window注册表中项级节点,读取 Windows 注册表基项HKEY_LOCAL_MACHINE
RegistryKey loca = Registry.LocalM
RegistryKey run = loca.CreateSubKey(@'SOFTWAREMicrosoftWindowsCurrentVersionRun');
if (run != null) run.SetValue('YourApp', starupPath);//加入注册,参数一为注册节点名称(随意)
这里要说明的是Root='HKLM'&
Type=&String&
4.删除日志文件
& 打包程序不处理的话,程序卸载之后可能会留下日志文件和一些数据文件,默认只会卸载***时的那些文件,新增的文件不会删除。
& 这时要用RemoveFile和RemoveFolder两个元素
&DirectoryRef
Id='History' &
&Component Id='ForHistory' Guid='5-4BFC-D446401CE' KeyPath='yes'&
&File Source='$(var.DemoProject)HistoryHistoryDB201402.sdf' /&
&File Source='$(var.DemoProject)HistoryHistoryDB201403.sdf'/&
&File Source='$(var.DemoProject)HistoryHistoryDB201404.sdf'/&
&RemoveFile Id='removeDb' Name='*.sdf' On='uninstall' Directory='History'/&
&RemoveFolder Id= 'Rdb1'
Directory='History' On= 'uninstall'/&
&/Component&
&/DirectoryRef&
&要注意的是,如果History目录上面还有父目录,也需要加入RemoveFolder将父目录清除。
&5.用Orca.exe 查看***包
&生成的MSI文件,其实就是一个数据库。不同的元素就是不同的表格,我们可以借助Orca.exe来查看,可以用来纠错和直接修改。点击下载
&我们看到Property表,可以看到已经有很多自带的Property,而且数据是可以编辑的。 有的时候就可以直接修改不必再去生成。
&6.版本更新
&WIX定义了三个级别的更新,以版本信息和产品GUID号是否改变来判断。&
&Product Id='{092B357C-6028-42CF-BCE0-44B}' Name='!(loc.ProjectName)' Language='1033' Version='1.1.1.0' Manufacturer='yourCompany' UpgradeCode='{BA90B701-DB4C-4FF2-9717-88EBA32060D7}'&
&/Product&
&产品ID改变表示这个版本这次是改动很大,Version的前两位可能都改变了(Windows只检查前三位),而UpgradeCode不能变,变了那真就是表示是另外一个产品了。UpgradeCode 在判断版本的时候的有用。比如直接更新版本和防止版本降级。Upgrade的Id就是上面的UpgradeCode
&!--新旧版本检查--&
&Upgrade Id='{BA90B701-DB4C-4FF2-9717-88EBA32060D7}'&
&UpgradeVersion Property='OLD_VERSION_FOUND'
OnlyDetect='no' IgnoreRemoveFailure='yes' MigrateFeatures='yes' Language='1033'
Minimum='1.0.0.0' Maximum='2.0.0.0' IncludeMinimum='yes' IncludeMaximum='no' /&
&UpgradeVersion Property='NEWER_VERSION_FOUND' Minimum='2.0.0.0' IncludeMinimum='no' OnlyDetect='yes' Language='1033' /&
&/Upgrade&
其实比较麻烦的是Minor Upgrade 和 Small Upgrade。他们的做法一样,相当于给我们的程序打补丁。需要4步
&1.在你的WIX工程中先创建一个Patch.WXS文件。Media的Cabinet表示后面要用到的CBA文件的名称,Id越大越好,要高于你MSI文件中要更新的Media的Id,PatchBaseLine的Id会作为后面的一个引用(遗憾的是,我还没有找到为什么...) 而PatchFamily就比较直白了,更新的版本,对应的ProductCode(Product的Id),里面ComponentRef 表示那些组件发生了变化。其他就不用说明了
&?xml version='1.0' encoding='UTF-8'?&
&Wix xmlns='/wix/2006/wi'&
AllowRemoval='yes' Classification='update' Comments='Patch for Your Software v. 1.1.0.0'
Description='Updates Software to v. 1.1.0.0'
DisplayName='Your Software Patch '
Manufacturer='YourCompany' MoreInfoURL='/' TargetProductName='YourProduct'&
&Media Id='1000' Cabinet='MyPatch.cab'&
&PatchBaseline Id='MyPatch' /&
&PatchFamily Id='MyPatch' Version='1.1.1.0' ProductCode='{092B357C-6028-42CF-BCE0-44B}' Supersede='yes'&
&ComponentRef Id='ForHMIRT'/&
&/PatchFamily&
不要包括在你的项目,右键从项目中解除。
2.用candle.exe 生成wixobj 文件。
& 最好先把Wix目录,添加到你的环境变量。我的电脑右键--属性--高级系统设置--环境变量:编辑Path 分号隔开,加上%Wix%
&然后就可以直接调用candle.exe
再用light.exe 生成wixmsp
3.再把你更新版本的pdb文件和当前工程的pdb文件复制到Patch.wxs同一个目录。 调用命令生成wixmst文件,做这些主要是要比较两个版本的差异。当然前提是你现在的工程已经新增了组件或者组件里面已经新增了文件,并生成了一次。
torch.exe -p -xi older.wixpdb newpdb.wixpdb -out Patch.wixmst
4.最后生成一个MSP文件
& 同上,调用Pyro.exe.&
pyro.exe Patch.wixmsp -t MyPatch Patch.wixmst -out Patch.msp
& 生成的MSP文件很小,但***效果和MSI文件一样。和你更新组件的多少有关系。整个过程有点繁杂,而且不清晰。最简单的办法还是改变版本号和ProductCode 重新发布一个版本。上面用到了很多exe,这些都是wix自带的工具。各自有不同的功能
7.用Heat.exe自动生成wxs文件
&我们要打包一个工程,但文件项目非常多,要是一个一个敲xml标签确实有点苦逼,其实WIX已经提供了heat.exe这个神奇来解决这个问题了。在D盘新建一个Runtime文件,随便拖一些文件进去。打开Cmd调用命令
&dir表示目录,-out 表示输出 &瞬间就生成了HeatFile.Wxs. 但一看,不是我们想要的,GuiD没有生成,Component的Id也不直观。 不急有更强大的命令
再看WXS文件,命令中的dr表示建立目录,cg 是建立ComponentGroup -var是创建变量,-gg表示自动生成GUID &-gl表示GUID不带括号,其他命令可以通过heat.exe -?来查看
&?xml version='1.0' encoding='utf-8'?&
&Wix xmlns='/wix/2006/wi'&
&Fragment&
&DirectoryRef Id='RunTime'&
&Directory Id='dirD818D8F3F242F' Name='zh-CHS' /&
&/DirectoryRef&
&/Fragment&
&Fragment&
&ComponentGroup Id='MyFileGroup'&
&Component Id='cmpFA55E9F45A78DE86628F8BCAF841C59C' Directory='RunTime' Guid='{1A0-4DC9-84D5-E9F809D82230}'&
&File Id='filA7DF3B9FBE662641CEBA' KeyPath='yes' Source='$(var.Dir)HMIRun.exe.config' /&
&/Component&
&Component Id='cmp3FFBCF0D3406F15BEA8A' Directory='RunTime' Guid='{0249740B-AF5F-498B-9F5E-E}'&
&File Id='fil55A7C722' KeyPath='yes' Source='$(var.Dir)NLog.config' /&
&/Component&
&Component Id='cmp6E035C559882EEC7EF1A85BECD96EC39' Directory='RunTime' Guid='{E2F60E84-02AB-41ED-A3BF-88C3CEB34DAD}'&
&File Id='fil407F115AC10BEC92A22BDC17267AEC7B' KeyPath='yes' Source='$(var.Dir)TemplateProject.template' /&
&/Component&
&Component Id='cmpCBD00FD180CA24C8FFF612A0' Directory='dirD818D8F3F242F' Guid='{581B54CC-0E55--F5D}'&
&File Id='filD5FE549C3B3FDBBFD3A0' KeyPath='yes' Source='$(var.Dir)zh-CHSSystem.Data.SqlServerCe.Entity.resources.dll' /&
&/Component&
&Component Id='cmpB47F065DAA1F65C' Directory='dirD818D8F3F242F' Guid='{50B28B73--BF13-D7}'&
&File Id='filB140B4B368F3FC0584CDDCA845EDC878' KeyPath='yes' Source='$(var.Dir)zh-CHSSystem.Data.SqlServerCe.resources.dll' /&
&/Component&
&/ComponentGroup&
&/Fragment&
&这样生成的文件就很漂亮了,可以复制你的工程中去。
今天先到这里,希望对你有帮助~&
延伸阅读:
目的:通过挂载的方式,可以类似访问本地磁盘的方式一...
本教程为 李华明 编著的iOS-Cocos2d游戏开发系列教程:教程涵盖关于i......
专题主要学习DirectX的初级编程入门学习,对Directx11的入门及初学者有......
&面向对象的JavaScript&这一说法多少有些冗余,因为JavaScript 语言本......
Windows7系统专题 无论是升级操作系统、资料备份、加强资料的安全及管......&热门系统专题
&Win7系统推荐
&|&&|&本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!
如侵犯到您的权益,请及时通知我们,我们会及时处理。
Copyright @ 2011 系统城以上由提供
您的位置:
> CF连接服务器失败怎么办?Win7系统下CF连接服务器失败的解决方法
CF连接服务器失败怎么办?Win7系统下CF连接服务器失败的解决方法
CF,即穿越火线,一款十分受欢迎的大型网络***战游戏,拥有一群忠实的游戏玩家,已经经过几年的考验仍然熠熠生辉,但最近在Win7系统下有玩家反馈玩CF时经常会提示CF连接服务器失败怎么办?这种情况不少用户都遇到过,官方也给出了详细的解决方法,一起来看一下。
官方解决方法:
1、装好的穿越火线完全卸载(清理注册表,不然会有遗留损坏文件) 。
2、对电脑进行全面清理,彻底查杀(注意使用木马专杀软件)。
3、到穿越火线官方网站下载最新版客户端,如本地上已有客户端,可直接***。
4、注意***方法。不要***到和你已经卸载的CF同一个盘,要装到另外一个盘里。
其他解决方法:
1、可能电脑网速出现的问题所以连接服务器慢或甚至连接不成功。
2、有可能CF游戏系统的问题。
3、可能猫不正常,那个***的灯会一闪一闪的导致网表面连着,实际上断开了。
4、登陆时,系统正准备维护,所以能选择大区却不能进入游戏。
5、中病毒了,有些病毒会影响或者终止一些程序的启动,建议杀毒。
6、文件丢失,有可能是误删或者杀毒软件误杀,总之丢失文件,建议重新***。
7、可能是从别人那里拷贝来的***端,如果是可以重新下载***包括补丁。
8、重做系统。
9、网络不稳定或带宽太小。一般2M的自家就够用。检查网线接口是否松动。
10、服务器。cf有时候就是会出现异常,可能是在线人数太多。或者交换器超负荷运行,也就是上网的人太多。
11、服务器在跟新,换个区就可以玩。
很多玩家都会问为什么CF连接服务器失败,出现这种情况并不是单一的一种因素,尤其是Win7系统下CF连接服务器失败的原因有多种,用户可参考下上述小编介绍的详细的解决方法。
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
Copyright (C)2014 www.xitongcheng.cc All rights reserved
本站发布的系统与软件仅为个人学习测试使用,请在下载后24小时内删除,不得用于任何商业用途,否则后果自负,请支持购买微软正版软件!
黔ICP备号-1&&&& IT技术吧-最专业的电脑技术网
Windows10家庭版无法连接远程服务器如何解决
Windows10家庭版无法连接远程服务器如何解决步骤如下: 1、在桌面上找到【这台电脑】在这个图标上点右键再选择【属性】;
& Windows10家庭版无法连接远程服务器如何解决
& & & & &步骤如下:
1、在桌面上找到【这台电脑】在这个图标上点右键再选择【属性】;
2、进入系统设置界面点击【远程设置】;
3、系统属性界面下的【远程】选项中勾选【允许远程协助连接这台计算机】远程桌面下也要允许远程连接此计算机,【选择用户】;(注:这个设置只针对当前登陆的用户名,如果想让更多的用户可以登陆你的这台电脑上才可以往下面看)
4、点击添加;
5、在这里查找你要想添加的用户,这样的用户才会有权限远程访问你的电脑;
6、如果没有必要是非常建议把这远程访问这个关闭了。这个远程电脑这个端口是比较敏感的。
(责任编辑:IT技术吧)
------分隔线----------------------------
赞助商展区