3 回答
TA贡献1865条经验 获得超7个赞
相反的观点:
一般来说,这是一个坏主意。在大多数情况下,正确的答案是将应用程序代码安装到适当的 Program Files 文件夹(64 位或 x86)并将数据文件安装到数据位置等,用户应该别无选择。我不清楚当(例如)Windows 认证规则规定您的代码必须转到 Program Files 位置时,选择是否是一个好主意,因此请正确操作。用户只关心已安装的应用程序是否正常工作,如果安装到某些位置时失败,那么答案是 1) 修复应用程序以使其正常工作或 2) 使用程序文件并且让用户别无选择。
此外,如果您使用的是 Visual Studio 安装程序项目,则无法编写自定义操作来执行此操作,因为它们都运行得太晚而无法更改安装位置。你似乎已经发现了这一点。但是您可以隐藏浏览文件夹对话框并安装到默认的正确位置。
另一个问题是不清楚如何定义“允许”的位置。如果不是 C:\,那么它可以是 D:\SomeOtherLocation 吗?它可以是连接的USB驱动器吗?它可以是网络共享,例如 \\Servername\share 吗?映射到网络共享的驱动器?可能有许多选定的位置会在安装或应用程序运行时失败,我认为没有一个有用的允许列表。最重要的是,假设您有 32 位安装,并且用户在 64 位系统上选择本机 Program Files 文件夹,然后它甚至不会去那里 - 它会被重定向到 Program Files(x86)地点。最后,假设用户在命令行上指定了一个位置,你在静默安装模式下做了什么还不清楚,它没有通过你的测试,
换句话说,只需安装到 Program Files 并完成它。
TA贡献1785条经验 获得超4个赞
基于用户能够手动安装它(并因此使用 UI 序列),它可能更容易:
在 InstallUISequence 中,将 LaunchCondition 操作排序到 ExecuteAction 操作之前。
然后在 LaunchCondition 表中,添加如下条件:
条件: TARGETDIR~<<"C:\Program Files\"
描述: 您必须安装到 Program Files 文件夹
我们在条件中所说的是:
如果 TARGETDIR 以“C:\Program Files\”开头(因此用户可以在此文件夹下的任何位置安装),请继续安装。否则抛出错误。
而不是阻止某些位置,我可能只是强制执行 Program Files 文件夹作为最佳实践。
- 3 回答
- 0 关注
- 236 浏览
添加回答
举报