美好的一天,大家。我分配的任务包括创建简单的installscript-only项目,该项目应该有2个窗口:首先将提示用户输入路径并在此指定位置创建文本文件,而第二个将提示文本输入并保存用户写入的任何内容进入这个文本文件。
有趣的一点是,我有小的installshield经验(完成的教程......好吧,是的,就是这样)并且在此之上的编程经验非常少。据我所知,我应该首先创建两个自定义对话框窗口(例如通过从标准窗口克隆它们),然后使用函数创建.rul文件,确定每个窗口的行为。之后,将它们包含在main setup.rul中,并在特定时间点调用函数。
问题是 - 什么确切的对话窗口/功能/时间点最适合这样的任务?作为参考我搜索到“序列号验证示例项目”,但老实说,它自定义默认窗口的方式让我更加困惑...所以,请,有人可以帮助吗?谢谢。
答案 0 :(得分:0)
供将来参考,这是工作解决方案。
在flexera论坛上问同样的问题,这就是我得到的:
离开我的头顶(没有InstallShield方便检查)1) 创建一个InstallScript项目,只需接受所有默认值 新项目向导,除非您要添加本地化或 一些东西。 2)您的描述暗示您不需要 维护(修复,修改,卸载)支持。如果正确的话去 Project \ Settings并在Maintenance选项卡上选择'no uninstall or 保养'。 3)您可以将代码放在最上面 OnFirstUIBefore函数然后调用Exit以便其余部分 默认代码永远不会执行,因为您没有安装任何东西。
作为InstallShield IDE的一部分,在“开始”菜单中(适用于IS2012 Spring)是一个演示所有内置对话框的工具。您 可以查看这些选项并选择最适合的对话框 你的情况。听起来你想:
调用AskPath或SdAskDestPath(还有其他几种可能性)
然后调用AskText并保存该字符串。
如果您需要对默认对话框进行布局或文本更改,请查看 在Dialogs视图中,选择上面选择的对话框 并编辑它。 (如果您决定使用皮肤,请确保选择皮肤 在进行任何对话框布局更改之前。)
然后执行与WriteLine的功能主体类似的操作 例如http://kb.flexerasoftware.com/doc/Helpnet/installshield14langref/LangrefWriteLine_Example.htm
实际的WriteLine示例函数原型用于MSI自定义 行动不是你想要的。忽略函数protoype和 只需使用项目中的代码即可在路径中创建文件 已收集并写下您收集的文本行。
然后拨打退出;
(非常感谢用户phill_mn的答案)
这是setup.rul的代码:
#include "ifx.h"
function OnFirstUIBefore()
number nvFileHandle;
string svResult;
string szTargetPath, szFeatures;
BOOL bLicenseAccepted;
begin
AskPath ("Please choose a path where text file will be saved","c:\\",szTargetPath);
MessageBox("File yourtext.txt wiil be created or overwritten at " +szTargetPath, INFORMATION);
AskText ("Please enter some text to save into that file", "Text goes here", svResult);
OpenFileMode (FILE_MODE_APPEND);
if (CreateFile (nvFileHandle, szTargetPath, "yourtext.txt") < 0) then
MessageBox ("Creating failed.", SEVERE);
abort;
else
if (WriteLine(nvFileHandle, svResult) < 0) then
MessageBox ("Writing failed.", SEVERE);
else
MessageBox ("Success.", INFORMATION);
endif;
endif;
CloseFile (nvFileHandle);
Do(EXIT);
return 0;
end;