Wix安装包权限问题
Wix在安装完成之后,如果遇到非管理员用户(域用户或Win7+系统,UAC权限问题等),修改配置文件(setting.ini)文件时,会遇到文件权限为只读,无法修改问题:
解决方案有两种:
首先添加UtilExtension的dll引用,并在Product.wxs文件头出添加如下代码:
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
1、给文件夹添加权限
<ComponentGroup Id="MainComponentsGrp" Directory="INSTALLFOLDER">
<Component Id="CMP_Permission" Guid="{DC0D5A83-06FE-4351-9063-F3596EC644BC}">
<CreateFolder>
<util:PermissionEx User="Users" GenericAll="yes"/>
</CreateFolder>
</Component>
<Component Id="CMP_LibraryForSnifferdll" Guid="{2C609842-7F2A-44E5-9A5E-50ED034B1825}">
<File Id="LibraryForSnifferdll" Source="$(var.Sniffer.TargetDir)/LibraryForSniffer.dll" KeyPath="yes"/>
</Component>
<Component Id="CMP_Settingconfig" Guid="{1997601A-3FEA-400E-9A82-18100723A647}">
<File Id="Settingconfig" Source="$(var.Sniffer.TargetDir)/Setting.config" KeyPath="yes"/>
</Component>
<Component Id="CMP_SimpleSnifferexe" Guid="{7AD279DE-FD0F-4643-813E-B1C2B5AF3BCC}">
<File Id="SimpleSnifferexe" Source="$(var.Sniffer.TargetDir)/Sniffer.exe" KeyPath="yes"/>
</Component>
</ComponentGroup>
2、给单独的文件添加权限
<Component Id="CMP_Settingconfig" Directory="INSTALLFOLDER" Guid="{1997601A-3FEA-400E-9A82-18100723A647}">
<File Id="Settingconfig" Source="$(var.Sniffer.TargetDir)/Setting.config" KeyPath="yes">
<util:PermissionEx User="Users" GenericAll="yes"/>
</File>
</Component>
GenericAll为用于该文件的所有权限。其它权限请参照本文最后的备注。当然,也可以新建(系统)用户,并添加该用户的权限,当然删除软件之后,新添加的用户也会随之删除,如下:
<Component Id="CMP_Settingconfig" Directory="INSTALLFOLDER" Guid="{1997601A-3FEA-400E-9A82-18100723A647}">
<util:User Id="MyNewUser" CreateUser="yes" Name="pencilzhang" Password="123456" PasswordNeverExpires="yes" RemoveOnUninstall="yes" UpdateIfExists="yes" />
<File Id="Settingconfig" Source="$(var.Sniffer.TargetDir)/Setting.config" KeyPath="yes">
<util:PermissionEx User="pencilzhang" GenericAll="yes"/>
</File>
</Component>
这样,安装完成之后,pencilzhang会出现在操作系统用户列表中,密码为"123456"。
注意事项:如果是中文环境下,需要添加UtilExtension的本地化包。新建WixExt_zh-cn.wxl文件,与Product.wxs放在同目录下即可
<?xml version="1.0" encoding="utf-8"?>
<!--
<copyright file="en-us.wxl" company="Outercurve Foundation">
Copyright (c) 2004, Outercurve Foundation.
This software is released under Microsoft Reciprocal License (MS-RL).
The license and further copyright text can be found in the file
LICENSE.TXT at the root directory of the distribution.
</copyright>
-->
<WixLocalization Culture="zh-cn" xmlns="http://schemas.microsoft.com/wix/2006/localization">
<String Id="msierrUSRFailedUserCreate" Overridable="yes">创建用户失败。 ([2] [3] [4] [5])</String>
<String Id="msierrUSRFailedUserCreatePswd" Overridable="yes">密码无效,创建用户失败。 ([2] [3] [4] [5])</String>
<String Id="msierrUSRFailedUserGroupAdd" Overridable="yes">无法将用户添加到组中。 ([2] [3] [4] [5])</String>
<String Id="msierrUSRFailedUserCreateExists" Overridable="yes">用户已经存在,创建用户失败。 ([2] [3] [4] [5])</String> <String Id="msierrSMBFailedCreate" Overridable="yes">无法创建网络共享。 ([2] [3] [4] [5])</String>
<String Id="msierrSMBFailedDrop" Overridable="yes">无法移除网络共享。 ([2] [3] [4] [5])</String> <String Id="msierrPERFMONFailedRegisterDLL" Overridable="yes">系统监视程序中无法注册DLL. ([2] [3] [4] [5])</String>
<String Id="msierrPERFMONFailedUnregisterDLL" Overridable="yes">系统监视程序中无法卸载DLL. ([2] [3] [4] [5])</String> <String Id="msierrInstallPerfCounterData" Overridable="yes">性能计数器安装失败。 ([2] [3] [4] [5])</String>
<String Id="msierrUninstallPerfCounterData" Overridable="yes">无法卸载性能计数器。 ([2] [3] [4] [5])</String> <String Id="msierrSecureObjectsFailedCreateSD" Overridable="yes">无法为 [3]\[4]建立安全描述符, 系统错误: [2]</String>
<String Id="msierrSecureObjectsFailedSet" Overridable="yes">无法在对象 [3]设置安全描述符, 系统错误: [2]</String>
<String Id="msierrSecureObjectsUnknownType" Overridable="yes">未知对象类型 [3], 系统错误: [2]</String> <String Id="msierrXmlFileFailedRead" Overridable="yes">配置XML文件过程中,有一个失败。</String>
<String Id="msierrXmlFileFailedOpen" Overridable="yes">打开XML文件失败 [3], 系统错误: [2]</String>
<String Id="msierrXmlFileFailedSelect" Overridable="yes">在XML文件中无法找到节点: [3] : [4], 系统错误: [2]</String>
<String Id="msierrXmlFileFailedSave" Overridable="yes">保存XML文件失败 [3], 系统错误: [2]</String> <String Id="msierrXmlConfigFailedRead" Overridable="yes">配置XML过程中有一处失败。</String>
<String Id="msierrXmlConfigFailedOpen" Overridable="yes">打开XML失败 [3], 系统错误: [2]</String>
<String Id="msierrXmlConfigFailedSelect" Overridable="yes">在XML文件中无法找到节点: [3] : [4], 系统错误: [2]</String>
<String Id="msierrXmlConfigFailedSave" Overridable="yes">保存XML文件失败 [3], 系统错误: [2]</String>
</WixLocalization>
备注:其它权限请参照:
Wix安装包权限问题的更多相关文章
- windows下pip安装包权限的问题
md哔了狗了,把scipy弄崩了,还顺带把numpy弄崩了... 然后安装包一直权限不允许: 于是按照下面这篇博客以管理员运行cmd,结果还是没卵用 http://www.cnblogs.com/li ...
- Wix 安装部署教程(十四) -- 多语言安装包之用户许可协议
在上一篇中,留下了许可协议的问题,目前已经解决.感谢网友武全的指点! 问题 一般我们是用WixVariable 来设定许可协议.如下所示: <WixVariable Id="WixUI ...
- Wix 安装部署教程(十三) -- 多语言安装包
这几天摸索WIX的多语言安装包(这里是Wix的setup 工程,不是Bundle),终于走通了,感谢网友uni的指点.WIX的多语言安装包能够根据系统环境自动切换界面语言,你也可以通过命令指定语言.下 ...
- Wix制作安装包
Wix制作安装包,找起资料来很费劲,记录一下: Product.wxs,该文件只能制作出msi形式的安装包,不能做到自动检测framework. <?xml version="1.0& ...
- [加入用户]解决useradd 用户后没有加入用户Home文件夹的情况,Linux改变文件或文件夹的訪问权限命令,linux改动用户password,usermod的ysuum安装包。飞
usermod的yum安装包: shadow-utils 将nobody用户加入到nogroup 组: usermod -g nogroup nobody cat /etc/passwd|grep n ...
- Wix Burn:如何将32位和64位的安装包制作成一个安装包
由于Windows Installer不是平台独立的(即区分32-bit和64-bit),因此用Wix制作的安装包在编译不能像.net应用那样采用Any CPU编译,而必须制定是目标Platform是 ...
- 利用WIX制作安装包(3)
原文 利用WIX制作安装包(3) 利用WIX安装服务非常简单.只需要短短几句话就可以.当我们创建好一个Windows服务之后.我们在项目中创建一个Service.wxs 文件来安装服务,并且编辑代码如 ...
- 利用WIX制作安装包(2)
原文 利用WIX制作安装包(2) 这一篇文章将为大家介绍如何使用WIX自定义UI.上一篇文章我们讲过WIX为我们提供了五种安装界面.每种安装界面都是由不同的Dialog组成.在这里我们挑选一种比较常用 ...
- 利用WIX制作安装包(1)
原文 利用WIX制作安装包(1) #installation 下载最新版本的WIX toolset 并安装DOWNLOAD Wix toolset V3.5之后的版本已经可以集成到visual stu ...
随机推荐
- JS兼容IE浏览器的方法
背景 系统需要兼容蛋疼的IE6... 解决方案 *{ 兼容IE6-8 }* <!--[if lt IE 9]> <script src="@{'/public/mng/ja ...
- C编码-1
两个关键点,一个是要懂C语法,另一个要懂业务知识,即能够分解问题 字节序测试程序 不同cpu平台上字节序通常也不一样,下面写个简单的C程序,它可以测试不同平台上的字节序. 网络字节序说是大端字节序. ...
- 【C语言模拟实现】浮点数-转-定点数
要想超神,就要什么都精! 知识准备: 1. 输出浮点数的十六进制形式?(利用指针输出) 将浮点数指针-转换成-整型指针,以十六进制的格式输出指针内容. 示例程序: #include<stdio. ...
- 九度OJ题目1387斐波那契数列
/*斐波那契数列,又称黄金分割数列,指的是这样一个数列: 0.1.1.2.3.5.8.13.21.…… 在数学上,斐波纳契数列被定义如下: F0=0,F1=1, Fn=F(n-1)+F(n-2)(n& ...
- 【转】C# 重写WndProc 拦截 发送 系统消息 + windows消息常量值(1)
C# 重写WndProc 拦截 发送 系统消息 + windows消息常量值(1) #region 截获消息 /// 截获消息 处理XP不能关机问题 protected ...
- PHP5.3以上版本没有libmysql.dll,以及由此带来的困扰
有朋友下载了PHP5.3,PHP5.4版本想加载mysql支持的时候发现没有libmysql.dll文件,无法完成mysql配置,其实PHP5.3版本开始,使用mysqlnd库,不再使用libmysq ...
- python函数: 内置函数
forthttp://blog.csdn.net/pipisorry/article/details/44755423 Python内置函数 Python内置(built-in)函数随着python解 ...
- SqlServer数据库正在还原的解决办法
1)管理器不会主动刷新,需要手工刷新一下才能看到最新状态(性能方面的考虑) 2)很少情况下,恢复进程被挂起了.这个时候假设你要恢复并且回到可访问状态,要执行: RESTORE database ...
- linux shell 整理收集(不断更新)
1)主从复制延时判断 (转 http://www.cnblogs.com/gomysql/p/3862018.html) 说明: 不要通过Seconds_Behind_Master去判断,该值表示sl ...
- 【svn】 SVN错误:Attempted to lock an already-locked dir
出现这个问题后使用“清理”功能,如果还不行,就直接到上一级目录,再执行“清理”,然后再“更新”. 有时候如果看到某个包里面的文件夹没有SVN的标志,直接用“Ctrl+Delete”手工删除,然后“清理 ...