DotNet关键知识点——WPF篇(八)

1. 本地化

文化标识
.NET使用Culture对象描述本地文化环境。文化标识是标准的,参照参考资料1。

中间(Neutral)、特定(Specific)和无关性(Invariant)文化
例如de-AT,de标志德语系中间文化,de-AT标识奥地利地区,则标志具体的特定文化。无关性文化表示软件资源中文化无关的内容。特定文化标识串如"de-AT"可代入CultureInfo构造函数创建一个该对象。

System.Threading.Thread.CurrentThread.CurrentCulture和CurrentUICulture标志当前线程采取的文化对象和界面文化对象,是可设的,并影响到当前线程。而System.Globalization.CultureInfo.CurrentCulture和CurrentUICulture则表示当前系统的文化,不能直接改写,一般在控制面板中设置。

标识[assembly: NeutralResourceLanguage(“en-US”, UltimateResourceFallbackLocation.Satellite)]用于指定当一个特定文化的资源未能找到时采用的默认文化,以防止一个文化相关的异常发生。

软件的本地化
默认情况下WPF程序是文化无关的。
1. 文本编辑工程csproj文件,在PropertyGroup标记中添加:<UICulture>特定文化1标识</UICulture>,保存。
2. 手动或用工具msbuild.exe在XAML中为需要本地化的单元(包括资源项)添加x:Uid唯一标识。
3. 生成后,用工具在bin/Debug中:locbaml /parse 特定文化1标识(目录)/工程名.resources.dll
4. 在bin/Debug中,编辑文件“工程名.resources.csv”(用文本编辑即可)
5. 针对另一个特定文化2,修改需要修改的项目(包括翻译等),保存成“工程名.resources.特定文化2标识.csv
6. 在bin/Debug中创建以特定文化2标识命名的文件夹,执行locbaml /generate 特定文化1标识(目录)/工程名.resources.dll /trans:工程名.resources.特定文化2标识.csv /cul:特定文化2标识 /out:特定文化2标识,则基于原始文化资源,根据csv的翻译,在特定文化2标识命名的文件夹中产生该文化的资源文件,名称也是“工程名.resources.dll”,即所谓的卫星程序(Satelite Assembly)。
7. 当程序需要使用某个文化,只要在适当的地方改变线程的当前界面文化即可。一般初始时设置生效,可在Application的Startup事件中完成。

代码中文化相关部分,如前述IValueConverter的Convert和ConvertBack皆有CultureInfo参数,在多文化环境中转换时需要加以考虑。

2. Windows安装部署
可更改/创建文件系统、注册表、文件关联、安装程序界面、多用户、定制动作和启动条件、指定安装路径、在GAC中安装共享组件。

1. 创建Setup工程(其他类型工程,Setup And Deployment)
2. 用File System Editor设置安装的文件和目标文件夹:左侧为目标计算机的文件目录结构(包括Application Folder,User’s Desktop和User’s Programs Menu),右侧为当前目录下内容。在左侧右键菜单选Add Special Folder可添加其他目标路径。
3. 在左侧某个目录下右键菜单中选Add,则可添加安装项,其中Project下拉列表选择欲安装的目标工程,列表中Primary Output表示所有.exe和.dll文件,也可添加其他类型文件如XML、资源等。
4. 在右侧,右键菜单选Create Shortcut,则可在该位置添加快捷方式
5. 在目标工程的属性中选Application卡,可以为其设置图标;将.ico文件通过File System Editor中复制到目标的适当位置,然后通过快捷方式的属性窗口可以为快捷方式选用这个图标。
6. 其他配置工具: Registry, File Types, User Interface, Custom actions, Launch Conditions等编辑器。
3. ClickOnce部署
可更改/创建文件关联、部分信任级(Partial-trust)环境安装、配置自动升级、配置从在线位置运行(必须在线或可离线)。
ClickOnce程序和系统其他应用程序隔离。所有WPF应用程序都可以ClickOnce部署。
Windows和本地浏览程序需要完全信任级(Full-trust)许可集(Permission set)安装;XBAP和在线运行程序默认以Internet安全级或Intranet安全级许可集安装。

1. 在工程属性的Publish卡上配置ClickOnce部署。
2. Publishing Folder Location用于指示部署目标位置,可以是本地路径、共享文件夹、IIS文件夹、HTTP或FTP位置等,它通常就是用户定位安装程序的路径。其右侧的扩展按钮打开Open Web Site对话框,用于配置路标地址和类型。Installation Folder URL(可选),用于设置临时放置路径。
3. 设置安装模式:总是在线(总是从Publishing Folder Location所指位置运行程序,它仍在客户端运行,但并没在客户端安装)或可离线(本地安装,程序位置在特定文件夹中(用户文档和设置文件夹中),在开始菜单中有快捷方式,在控制面板卸载)。
4. 选项设置,“Options…”按钮,可设发布者、产品名称信息,发布页面名称等。在可离线模式下,快捷方式位于开始菜单中“发布者名称/产品名称”目录下。
5. 升级设置,“Updates…”按钮:“Application should check for updates”开启升级检查,随后可选启动前和启动后升级,如选启动前,可以设置升级频率。其他设置项包括:最小版本要求和特定的升级地址(如果和发布地址不同)。

4. ClickOnce中通过程序加载升级
加System.Deployment库,System.Deployment.Application.ApplicationDeployment类用于表示一个ClickOnce部署,获取当前部署,调用:dep = System.Deployment.Application.ApplicationDeployment.CurrentDeployment。
同步模式:检查升级:bool dep.CheckForUpdate();执行升级dep.Update()。
异步模式:dep.CheckForUpdateCompleted += UpdateCheckCompleted (升级检查完成后事件);调用dep.CheckForUpdateAsync()启动异步检查。void UpdateCheckCompleted(object sender, System.Deployment.Application.CheckForUpdateCompletedEventArgs e)中检查bool e.UpdateAvailable确定有否升级,如有则调dep.UpdateAsync()异步进行升级。

5. XBAP的ClickOnce部署
权限设置:
部分信任形式的程序必须注意CAS检查和声明,CAS检查见DotNet关键知识点之相关章节。在ClickOnce部署中,在Security卡上进行权限设置:
选择Enable ClickOnce Security Settings,This is a partial trust application,然后底下是预定义的权限集或自定义权限。XBAP不能访问文件系统,但可用隔离存储(Isolated Storage)和用户设置 (User Settings)。

6. 配置应用程序清单(Manifest)
使用ClickOnce部署,并在Security页中选中“Enable ClickOnce Security Settings”, 则在工程中自动添加app.manifest。Manifest均会在应用程序的输出位置以“工程名称.exe.manifest”出现。
<fileAssociation>单元用于指定文件关联,属性:extension:扩展名,description:描述,progid:文件类型的唯一标识,defaultIcon:指定图标.ico文件,已作为嵌入资源添以Content作为生成动作并始终复制。每个应用程序文件关联最多8个,且只能用于独立应用(stand-alone)。

参考资料
[1] RFC 1766 www.ietf.org/rfc/rfc1766.txt

你可能感兴趣的:(WPF)