Я использую расширенный установщик 8.3 и пытаюсь внедрить пробное лицензирование для своего приложения, целевой ОС является Windows 7 x32 и x64.
Следующий код взят из примера, предоставленного расширенным установщиком.
[DllImport("Trial.dll", EntryPoint = "ReadSettingsStr", CharSet = CharSet.Auto)]
private static extern uint InitTrial(String aKeyCode, IntPtr aHWnd);
[DllImport("Trial.dll", EntryPoint = "ReadSettingsRetStr", CharSet = CharSet.Auto)]
private static extern uint InitTrialReturn(String aKeyCode, IntPtr aHWnd);
[DllImport("Trial.dll", EntryPoint = "DisplayRegistrationStr", CharSet = CharSet.Auto)]
private static extern uint DisplayRegistration(String aKeyCode);
[DllImport("Trial.dll", EntryPoint = "GetPropertyValue", CharSet = CharSet.Auto)]
private static extern uint GetPropertyValue(String aPropName, StringBuilder aResult, ref UInt32 aResultLen);
private void registerToolStripMenuItem_Click(object sender, EventArgs e)
{
try
{
Process process = Process.GetCurrentProcess();
DisplayRegistration(kLibraryKey, process.MainWindowHandle);
}
catch(Exception ex1)
{
MessageBox.Show(ex1.ToString());
}
}
Тип сигнатуры, установленный в расширенной программе установки, - 32-битный Unicode DEP Aware.
Проблема в том, что каждый раз, когда я выбираю регистр, я получаю нарушение прав доступа. Похоже, я не могу использовать переключатель в моем приложении, чтобы отключить DEP, как это требуется для моего приложения.
У кого-нибудь есть идеи, как обойти это, как я проверил на форуме продвинутых инсталляторов, и нет ничего, кроме похожих вопросов.
Большое спасибо
ОК, быстрое обновление.
Я перепробовал все комбинации типа sig, вот что я нашел.
Установка типа 32-битного Ansi (поддерживает Win9x или выше) и установите CharSet на Ansi / Unicode или Auto result = CRASH.
Установка типа 32-битного Unicode (DEP Aware) и установка CharSet на Unicode или Auto result = Access Violation.
Установка типа на 32-битный Unicode (DEP Aware) и установка CharSet на Ansi result = success.
Так что, хотя он работает, в Advanced Installer явно есть ошибка.