无法使用自定义操作将MSI安装到用户名中包含非ascii字符的非管理员
这是我几天来一直在努力解决的一个问题,现在我的智慧结束了。我正在使用Wise Installation Studio创建一个MSI,但我敢打赌它可以用任何MSI创作程序重新编写。我已经为那些希望使用我发布的MSI,DLL或WSI文件重新编译的人创建了一个测试样本。
创建一个新的明智的解决方案,保存为'test.wsi'并创建'test.msi'
除了在“UI序列”中的MigrateFeaturesState操作之后添加两个自定义操作外,不对此文件执行任何操作
第一个自定义操作是“从安装调用DLL”,它不传递任何参数并忽略返回代码
第二个自定义操作是“从安装调用自定义DLL”,它不传递任何参数并忽略返回代码
这两个动作引用相同的DLL和相同的函数,helloworld.dll和HelloWorld()函数只显示一个'HelloWorld'消息框
预期结果:
两个hello world提示然后在常规UI屏幕上启动安装过程。
这是我目前的设置:
开发箱:
- Wise Installation Studio 7.4.0.214
- 关闭UAC运行Win7 x64,
测试盒:
- Windows XP SP3
- Windows Installer v4.5.6001.22159
- .Net Framework v4.0
这是我的测试用例:
使用ascii用户名的非管理员 - 结果与“ALLUSERS =”“和ALLUSERS =”1“的预期一样
管理员名称为“あくぇえ”的unicode字符 - 结果与“ALLUSERS =”“和ALLUSERS =”1“的预期相同
名为'发涩'的非管理员名称为unicode - 仅出现第一个提示,第二个提示错误如下:
“自定义操作出错。库C: Documents and Settings ?? [LongAlphaNumericString] .TMP WiseCustomCalla.dll无效或无法找到。”
“ALLUSERS =”“和ALLUSERS =”1“都会发生这种情况
使用其他管理员登录并将#3中的用户设置为admin,再次使用#3中的用户登录,我们会得到预期的结果。
我已经尝试过强制短路径并传递到用户数据文件夹的备用路径,但没有任何作用。任何人都知道为什么会这样,以及如何解决它?
我在这里包含了我用于此测试的所有文件,其中包括错误消息的屏幕截图,msi和msi.xml,wsi文件,helloworld.dll(使用rundll32 helloworld.dll测试,HellowWorld)和上面每个测试用例的日志。
http://dl.dropbox.com/u/1797288/error.zip
需要在MSI / WSI文件中进行哪些更改才能使#3正常运行“从安装调用自定义DLL”操作?
谢谢,
亚伦P.
没有找到相关结果
已邀请:
1 个回复
掸牛浓疗