在用户文件夹中创建一个文件夹的.config

问题描述 投票:1回答:2

当安装我的程序,我想创建一个文件夹.config到用户的文件夹中。例如 :

C:\Users\MyUser\.config

这是我试过,但它不工作:

<Directory Id="USERPROFILEFOLDER" Name="[%USERPROFILE]">
 <Directory Id="ConfigUserFolder" Name=".config">
   <Directory Id="UserConfig" Name="Config" >
     <Component Id="ConfigFolder" Guid="GUID">
       <RemoveFolder Id='RemoveConfig' Directory='UserConfig' On='uninstall' />
       <RemoveFolder Id='RemoveConfigUserFolder' Directory='ConfigUserFolder' On='uninstall' />
       <RegistryValue Root='HKCU' Key='Software\MySoftware' Type='string' Value='' KeyPath='yes' />
     </Component>
  </Directory>
 </Directory>
</Directory>

<Property Id="USERPROFILEFOLDER" />

任何想法,我缺少/做错了什么?

wix windows-installer
2个回答
2
投票

这是应用常规可执行文件?或某种Web的应用程序或插件?换句话说:它有自己的启动顺序?

我听起来像一个破纪录,这个建议,但是:文件夹和文件在用户配置文件夹(HKCU设置)是在应用程序启动创建更好比安装过程中。

刚刚离开这个建构在设置中排除,使您的应用程序更智能,能够为每个用户创建在启动该文件夹中 - 并能够对任何数据文件从他们的模板位置在主只读%ProgramFiles%安装文件夹复制到文件夹。

我以前写过一个整体咆哮关于用户特定的文件和设置部署的问题:Create folder and file on Current user profile, from Admin Profile。我描述的选项,如微星的自我修复和智能安装程序 - 并列出他们为什么是不可靠的一些细节(并提出了一些潜在的更好的方法)。

我会说:杀了复杂性和误差来源,并留在自己熟悉的领域时,你可以。避免高级设置功能,因为它们难以调试的性质和不寻常的和不熟悉的复杂性。什么是相关的提问:避免每用户部署通过安装程序来完成。


以上基本上是所有有说,但充实它在这里是使用你的应用程序的启动顺序,而不是你的设置每用户的东西的主要原因:

  1. 可预测性和可靠性: - 不依赖于Windows安装程序把每个用户的文件和文件夹代替这种方法可靠地谁启动您的应用程序的任何用户创建的文件夹。 Windows安装程序的自我修复可以通过在特定机器上的策略(如终端服务器)上运行的预防和您的文件夹,然后将永远不能被创造在所有的谁没有运行原始安装的用户。 如果你还需要安装用户特定的文件(不只是一个文件夹),然后用户指定的文件和设置的MSI部署是不可靠的,充其量,且易发生意外的文件和设置覆盖(REINSTALLMODE = amus - 力覆盖)和用户设置和从设置意外卸载数据丢失文件的意图是永久的,但不是这样(意外)标记。很多问题都可以导致此。 非常技术性的,但微星的组件GUID概念排序减免用于引用可能多次安装计数文件下来概念的时候。
  2. 实施和调试:应用程序启动顺序是“只是普通的代码”,而Windows Installer和部署可能是许多开发者不熟悉的领域。因此,你避免从the complexity of deployment(一上部署Blurb的复杂性写的WiX的历史背景下)产生的意想不到的问题。 如果你进入他们的复杂的排序,模拟和调理方面配备非常“conspiratory复杂性”的自定义操作时尤其如此(的问题,是不是很明显,但这样做表面上时最不方便)。 你的应用程序的启动序列具有可预测的用户上下文,完全访问用户的环境和交互可与无差错和警告消息。问题可以很容易地通过简单地重新启动应用程序,而不是编译和运行安装( - 远远超出你的问题的范围和安装调试中的自定义操作的情况下)进行调试。 你避免安装的“一点击”的性质和调试的难度,由于难以再现整体部署错误的性质(不进入系统的问题,一般缺少记录,清理之前错误的难度)。对于启动顺序,你只需要用户重新启动应用程序,并报告看到的错误 - 或者检查事件日志或任何其他记录可用。 根据我的经验QA人员通常会比部署功能的更多体验测试应用程序的启动序列。 我可能会使得应用程序调试声音“过于乐观”,因为这是在现实世界中是什么,但相信我,它确实比部署调试更容易。
  3. 设置管理:你的应用程序的启动顺序可以(更)可靠地进行任何形式的对您的数据和设置文件“维护”,即不可能从建立可靠地完成。 这些往往是“资源文件”,而不是数据文件 - 程序运行过程中使用,换句话说模板和设置 - 由用户创建(有时也需要“清理”不只是内容 - 但你可以做到这一点的文件打开,而不是应用发射)。 你要修复在复制给每个用户文件的东西 泄漏的元文件图片 数据文件中的错误和故障 刚刚通过的bug每个用户设置引起的真的... 实施新的强制性设置 将文件移动到新位置,或者对它们进行备份 删除不再有效(或错误地加密)的设置 删除HKCU,使您的应用程序崩溃二进制流 如何建立一个能“标志”系统激活应用程序的“启动程序维护功能”的描述:http://forum.installsite.net/index.php?showtopic=21552(2019年2月转换为Wayback机器链接)。

一个安装应主要做任何事情需要提升的权限,大多数其他的事情 - 做你的应用程序 - 以及某些升高事情实际上可以随着时间的推移做作为服务运行 - 其特点没有困扰部署测序,调理或假冒变量。


0
投票

要与维克斯做到这一点,你需要使用CreateFolder元素的父组件下。这就像这个同样的问题:

how to create folder in Wix?

正如在我看来是个好习惯,你应该使用标准的Windows安装程序文件夹属性的位置。完整名单是在这里:

https://msdn.microsoft.com/en-us/library/windows/desktop/aa370905(v=vs.85).aspx#system_folder_properties

例如ProgramFiles64Folder,AppDataFolder(这可能是您的目录的最佳位置),COMMONAPPDATAFOLDER等。

© www.soinside.com 2019 - 2024. All rights reserved.